SQL
一、概念
- SQL:Structured Query Language,结构化查询语言
- 用于操作关系型数据库(例如MySQL和Oracle)的语言,每种数据库会有自己独有的“方言”。
二、分类
1. DDL
- Data Definition Language:数据定义语言,用于操作数据库、表、字段(列名称)
- 关键字:
- CREATE(创建)
- DROP(删除)
- ALTER(修改)
2. DML
- Data Manipulation Language:数据操作语言,用于操作(增删改)表中数据
- 关键字:
- INSERT (插入)
- DELETE(删除)
- UPDATE(更新、修改)
3. DQL
- Data Query Language:数据查询语言,用于查询表中数据
- 关键字:SELECT(选择)
4. DCL
- Data Control Language:数据控制语言,用于定义数据库的访问权限和安全级别,以及创建用户
- 关键字:
- GRANT(授权)
- REVOKE(撤销)
三、DDL常用语句
1. 创建(create)
数据库
create database 数据库名 -- 创建数据库
create database if not exists 数据库名 -- 判断数据库不存在后再创建
create database 数据库名 character set 字符集名 -- 创建指定字符集的数据库
数据表
create table 表名(字段列表) -- 创建表
create table if not exists 表名 (字段列表) -- 判断表不存在后再创建
create table 表名 like 基表名 -- 创建同结构的表
2. 查询(show)
数据库
show databases -- 查询所有数据库名称
show create database 数据库名 -- 查询数据库的创建语句,常用于查看该库的字符集
数据表
show tables -- 查询所有表名称
desc 表名 -- 查询表结构
3. 修改(alter)
数据库
alter database 数据库名 set character 字符集名 -- 修改数据库所使用的字符集
数据表
alter table 表名 rename to 新表名 -- 修改表名
alter table 表名 set character 字符集名 -- 修改表所使用的字符集
alter table 表名 add 字段名 数据类型 -- 添加字段
alter table 表名 change 旧字段名 新字段名 数据类型 -- 修改字段名和数据类型
alter table 表名 modify 字段名 新数据类型 -- 修改字段的数据类型
alter table 表名 drop 字段名 -- 删除字段
4. 删除(drop)
数据库
drop database 数据库名 -- 删除数据库
drop database if exists 数据库名 -- 先判断数据库存在再删除
数据表
drop table 表名 -- 删除表
drop table if exists 表名 -- 先判断表存在再删除
5. 使用数据库
select database() -- 查询当前正在使用的数据库
use 数据库名 -- 使用或切换数据库
四、DML常用语句
1. 增加数据(insert)
insert into 表名(字段列表) values (值列表) -- 给指定字段添加指定值
insert into 表名 values(所有字段值列表) -- 添加所有字段的值
2. 删除数据(delete)
delete from 表名 where 条件 -- 删除指定条件对应的记录
delete from 表名 -- 逐条删除表中所有记录
truncate table 表名 -- 删除整张表后再创建同结构的表
3. 修改数据(update)
update 表名 set 字段名 = 字段值 where 条件 -- 修改对应记录指定字段的值
五、DQL常用语句
1. 基础查询(select)
select 字段列表 from 表名 -- 查询指定表的指定字段
select * from 表名 -- 查询指定表的所有字段
select distinct 字段列表 from 表名 -- 查询指定表的指定字段并去重
select 字段的运算 from 表名 -- 查询指定表的指定字段的计算结果
select 字段 as 字段别名 from 表名 -- 查询并给指定字段取别名,as可以省略
补充
ifnull(字段名,值) -- 如果该字段对应的值为NULL,则当作指定值处理
2. 条件查询
select 字段列表 from 表名 where 条件 -- 查询满足条件的字段值
关系运算符:
> < <= >= = <>(不等于) !=(MySQL方言不等于)
其它关键字:
betten 起始值 and 终止值
in(集合) -- 该集合可以是一张一维表
is null -- SQL里不允许 = null
3. 排序查询
order by 初级排序字段名 排序方式,次级排序字段名 排序方式...
排序方式
升序:默认不写或ASC
降序:DESC
聚合函数:将一列作为一个整体的纵向计算
count(字段名) -- 统计该字段下共有多少非空数据
max(字段名) -- 返回该字段下的最大值
min(字段名) -- 返回该字段下的最小值
sum(字段名) -- 计算该字段下所有值的和
avg(字段名) -- 计算该字段下所有值的平均值
4. 分组查询
group by 分组字段 -- 分组查询
group by 分组字段 having 条件 -- 查询满足条件的组
5. 分页查询
limit 当前页起始记录下标,每页条数 -- 起始下标从0开始,limit子句是MySQL的方言
六、DCL常用语句
1. 管理用户
(1)查询用户(不属于DCL)
use MySQL; -- 切换使用MySQL数据库
select * from user; -- 查询user表
(2)创建用户
create user '用户名'@'主机名' identified by '密码';
(3)修改用户
-- 1. 通过修改user表完成密码修改
update user set password = password('新密码') where user = '用户名';
-- 2. DCL语句修改密码(MySQL 5)
set password for '用户名'@'主机名' = password('新密码');
-- 3. DCL语句修改密码(MySQL 8)
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
(4)删除用户
drop user '用户名'@'主机名';
2. 权限管理
-- 1. 查询权限
show grants for '用户名'@'主机名';
-- 2. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-- 3. 收回权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
更多推荐
SQL常用语句汇总
发布评论