Mysql

    2017年11月07日 字数:2503

MySQL

  • SQL 是语言吗?
    • SQL 是一种综合性语言(交互式查询语言),不是一种真正的计算机语言, 用于控制并与数据库管理系统进行交互作用。
    • SQL 是一种交互式查询语言
    • SQL 是一种数据库编程语言
    • SQL 是一种数据库管理语言
    • SQL 是一种客户/服务器语言
    • SQL 是一种 Internet 数据访问语言
    • SQL 是一种分布式数据库语言
    • SQL 是一种数据库网关语言
  • Java 集成(JDBC)
  • SQL 不区分大小写
  • SQL 撇号有特殊意义

一条查询语句是如何执行的

MySQL 可以分为 Server 层(连接器,查询缓存,分析器,优化器,执行器)和存储引擎层, 涵盖 MySQL 大部分核心服务功能,包括内置函数,所有跨存储引擎的功能都在这一层实现, 存储过程、触发器、视图。 存储引擎层负责数据的存储和提取,架构模式是插件式的,支持 InnoDB, MyISAM,Memory 等多个存储引擎。 InnoDB 从 MySQL 5.5.5 成为默认存储引擎。 不同的存储引擎对应一个 Server 层。 查看连接列表

show processlist;

DDL(data definition language): 数据定义语言主要用来定义数据库中的各类对象,包括用户,库,表,视图,索引,触发器, 事件,存储过程和函数.

create user
create view
create index
create database
create table
create event
create procedure
create function
create trigger
eg: 
CREATE USER 'ESTUSERONE'@'192.168.0.10';
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4;
CREATE VIEW view_name as SELECT user_name,userPassword FROM t_test WHERE id  =3;
CREATE UNIQUE INDEX index_name on t_test(name,password) USING BTREE;
SHOW KEYS FROM t_test;SHOW INDEX FROM t_test;SHOW INDEXES FROM t_test;
给 t_test 表中的 name 字段的前 5 个字符创建一般索引,使用 BTREE 作为索引算法:
CREATE INDEX index_name_5 on t_test(name(5));
CREATE TRIGGER trigger_name trigger_time trigger_event FOR EACH ROW 
BEGIN
    trigger_statements
END;

DCL(data control language)用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果:

privilege
英 [ˈprɪvəlɪdʒ]  美 [ˈprɪvəlɪdʒ]
n. 特权;优待
vt. 给与…特权;特免
grant privilege_type on <object_type> to <with {grant option | resource_option}...>;
revoke privilege_type on <object_type> from 'username'@'ip_address';

eg:
GRANT INSERT,SELECT,UPDATE,DELETE ON test_db.* TO 'jerry'@'192.168.0.10' IDENTIFIED BY 'password' WITH GRANT OPTION;
CREATE USER 'jerry'@'192.168.0.10' IDENTIFIED BY 'password';
GRANT INSERT,SELECT,UPDATE,DELETE ON test_db.* TO 'jerry'@'192.168.0.10';
REVOKE DELETE ON test_db.* FROM 'jerry'@'192.168.0.10';
拓展:
SHOW GRANTS FOR username;
SHOW GRANTS FRO 'jerry'@'192.168.0.10'
首先将某个库(如:test_db)的所有权限授予给用户'jerry'@'localhost'
GRANT ALL ON test_db.* TO 'jerry'@'localhost' IDENTIFIED BY 'jerry';
收回某个权限,如:查询权限
REVOKE SELECT ON test_db.* FROM 'jerry'@'localhost';

DML(data manipulation language) 数据操纵语言,主要包括的操作有 INSERT,UPDATE,DELETE:

insert into
update table_name set field(字段) = value,field1 = value1 where ...;
delete from table_name where

DQL(data query language):

select field1,field2 from table_name where ...;

Tips

  1. 盲区
  2. 优化
    • 不要在主库上数据库备份,大型活动前取消这样的计划.

      Questions

  3. 如何看待和了解大型项目? 不要陷入细节,要鸟瞰全局,把握整体.
  4. MySQL 的基本框架? /home/lotsd/Pictures/blog/lotsdoin.github.io/MySQL架构图.png
  5. 连接器的默认连接数? 连接时间管理?(即如何管理连接),如何权限验证?
  6. 缓存的管理?
  7. 词法分析? 语法分析?
  8. 优化器的作用? 生成执行计划,索引选择
  9. 执行器? 操作引擎,返回结果
  10. 存储引擎? 存储数据,提供读写接口
  11. Server 层和存储引擎层的关系?
  12. solve “### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 110; 对实体 “characterEncoding” 的引用必须以 ‘;’ 分隔符结尾。 在 xml 配置文件中 ; 需用 &amp; 代替. ```xml
11. solve "Mon Jun 24 11:49:20 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification."
在 jdbc 链接后添加 `useSSL=false` 即可.

```

请我喝杯咖啡

取消

感谢您的支持,我会继续写出更优秀的文章!

扫码支持
扫码支持
请我喝杯咖啡

打开微信扫一扫,即可进行扫码打赏哦

comments powered by Disqus