数据库的重中之重就是操作数据,操作数据使用的就是SQL语句,也就是操作所有关系型数据库的编程语言,也是大数据工程师每天都需要重复书写的代码,所以这个部分非常重要。笔者为JAVA后端工程师,也需要获取数据、处理数据、渲染数据给前端工程师进行展示。
目录
- 前言
- 1.通用SQL语法
- 2.SQL的分类
- 3.DDL
- a>数据库的操作
- b>表的操作
- 4.DML
- a>增
- b>删
- c>改
- 5.DQL
- a>基本查询
- b>条件查询
- c>聚合函数(结合分组使用)
- d>分组查询
- e>排序查询
- f>分页查询
- g>书写顺序
- h>执行顺序
- 6.DCL
- a>用户管理
- b>权限控制
前言
1.通用SQL语法
• 一条SQL语句可以是单行也可以是多行,以分号结尾
• SQL语句可以使用空格/缩进来增强语句的可读性
• MySQL的SQL语句不区分大小写,关键字建议使用大写
• 注释
• 单行注释:-- 或 #
• 多行注释:/* … */
2.SQL的分类
• DDL(数据定义语言):用来定义数据库对象(数据库、表、字段)
• DML(数据操作语言):对表中的数据进行增删改
• DQL(数据查询语言):对表中的数据进行查询
• DCL(数据控制语言):创建数据库用户、控制访问权限
3.DDL
a>数据库的操作
1. 增
创建数据库)
create database [if not exists] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];2. 删
删除数据库)
drop database [if exists] 数据库名;3. 改
使用指定数据库
use 数据库名;4. 查
查询当前数据库管理系统所有数据库
show databases;
查询当前使用的数据库
select database();
b>表的操作
1. 增
创建表
CREATE TABLE 表名(
字段名 数据类型[comment 注释],
。。。
字段名 数据类型
);
[]是可选的,最后一个字段的数据类型后面不要逗号2. 删
• 删除表
drop table[if exists] 表名;• 删除表,并创建(重置表)
TRUNCATE TABLE 表名;• 删除字段
ALTER TABLE 表名 DROP 字段名;3. 改
• 添加字段
ALTER TABLE 表名 ADD 新字段名 类型 [comment 注释][约束];• 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型;• 修改字段名和数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 [comment 注释][约束];• 修改表名:
ALTER TABLE 表名 RENAME TO 新表名4. 查
• 查询当前数据库中的所有表
show tables;• 查询表结构
desc 表名;• 查询建表语句
show create table 表名;
4.DML
a>增
1. 给指定字段添加数据
NSERT INTO 表名(字段列表)VALUES(值1,值2,…);2. 给所有字段添加数据
• 可以省略字段列表
INSERT INTO 表名 VALUES(值1,值2,…);
1. 批量添加数据
b>删
DELETE FROM 表名[where 条件];
delete语句不能删除某个字段的值
c>改
UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,…[where 条件];
5.DQL
a>基本查询
• SELECT 字段列表 from 表名
b>条件查询
• SELECT 字段列表 from 表名 where 条件列表
• 条件列表可以使用比较运算符和逻辑运算符
c>聚合函数(结合分组使用)
统计:count
求最小值:min
求最大值:max
求平均值:avg
求和:sum
语法:
select 聚合函数(字段列表)FROM 表名;
d>分组查询
• 语法
• WHERE 和 HAVING区别
1. 执行时机不同
where在分组前执行,having在分组后执行2. 判断条件不同
where不能对聚合函数进行判断,而having可以• 注意
分组之后,查询的字段一般为分组字段和聚合函数,查询其他字段没有意义。
e>排序查询
• 语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;• 排序方式
ASC:升序,默认
DESC:降序• 注意:
如果多字段排序,当第一种字段值相同时,才会按第二种字段排序
f>分页查询
g>书写顺序
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后字段列表
ORDER BY 排序字段列表
LIMIT 分页参数
h>执行顺序
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
SELECT 字段列表
ORDER BY 排序字段列表
LIMIT 分页参数
6.DCL
• 主机名可以使用%通配
• 该类语言一般是数据库管理员使用
a>用户管理
1. 增(创建用户)
CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;2. 删(删除用户)
DROP USER ‘用户名’@‘主机名’;3. 改(修改用户信息)
ALTER USER ‘用户名’@‘主机名’ IDENTIFED WITH mysql_native_password BY’新密码’;4. 查(查询用户信息)
用户信息在user表中
use mysql;
SELECT * FROM USER;
b>权限控制
• 常用权限
1. ALL / ALL PRIVILEGES:所有权限
2. SELECT:查询权限
3. INSERT:添加权限
4. DELETE:删除权限
5. UPDATE:修改数据权限
6. ALTER:修改表权限
7. DROP:删除表/数据库权限
8. CREATE:创建表/数据库权限
• 语法:
9. 授予权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;10. 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@‘主机名’;11. 查询权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;• 注意:
多个权限之间使用逗号隔开。
授予权限时,数据库名和表名可以使用*进行通配,表示所 有。