一、简介
理论基础:关系代数(关系运算、集合论、一阶谓词逻辑),具体表象:用二维表组织数据。
1 2 3 4 5 6 7
| 编程语言:SQL ---->Structured Query Language ----> 结构化查询语言 主键(primary key) 外键(foreign key) 数据定义语言:create / drop / alter 数据操作语言:insert / delete / update 数据查询语言:select 数据控制语言:grant / revoke
|
二、基本语法
1、DDL操作
创建表
1
| create table xxx engine=innodb default charset utf8mb4;
|
删除表
修改表
1
| ALTER TABLE xxx Add COLUMN xx
|
修改字符集
1
| ALTER TABLE XX CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
2、DQL操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| 语法: select ... as ..., ... as ..., ... as ..., ... ---> 窗口函数 over (partition by ... order by ...) ---> 排名 / TopN ---> row_number / rank / dense_rank / lead / first_value / cume_dist from t1, t2, ... [from t1 ... join t2 on ...] where ... and ... or ... ---> like / regexp group by ..., ... ---> 聚合函数(max / min / avg / sum / count / stddev_pop / var_pop) having ... and ... or ... order by ... desc, ... asc limit ... offset ... ---> MySQL方言 表达式: + - * / % case ... when ... then ... when ... then ... else ... end 函数: 数值函数 --> abs / ceil / floor / round / exp / log / log2 / log10 / rand / sqrt / power 流程控制 --> if / ifnull 其他 ---> md5 / sha1 / aes_encrypt / aes_decrypt / compress / uncompress / uuid 谓词: = / <> / > / < / >= / <= / between ... and ... like / regexp ---> % _ in / not in exists / not exists is null / is not null 数据筛选 where ---> 分组之前的数据筛选 having ---> 分组以后的数据筛选(这里可以使用分组聚合的结果) 数据透视: 分组聚合(先将数据分成若干组,在组内使用聚合函数) 数据按某个维度拆解 ---> 定位数据异常到底是什么引起的 根据 A 统计 B ---> 根据性别统计男女学生人数 / 根据学号统计每个学生的平均成绩 嵌套查询: 把一个查询的结果作为另外一个查询的一部分来使用 派生表:把查询的结果当做表来使用 连接查询: 如果要查询的字段来自于多张表 如果没有连接数据的条件 ---> 笛卡尔积 内连接 自然连接 ---> 外键 / 同名列 ---> 笛卡尔积 外连接(左外连接 / 右外连接)
|
三、用户管理
1、创建用户
用户名、密码根据自己定。
1
| create user '用户名'@'%' identified by '密码';
|
2、授予权限
授予用户名,数据库为XX的查询权限。(XX是数据库名称,可指定,需要授权所有数据库使用通配符*即可,%是在同一个网所有的地址都能访问),同时也可以给其它权限。
1
| grant select on xx.* to '用户名'@'%';
|
3、刷新权限