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:数据控制语言,用于定义数据库的访问权限和安全级别,以及创建用户
- 关键字:
三、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 表名
补充
ifnull(字段名,值)
2. 条件查询
select 字段列表 from 表名 where 条件
关系运算符:
> < <= >= = <>(不等于) !=(MySQL方言不等于)
其它关键字:
betten 起始值 and 终止值
in(集合)
is null
3. 排序查询
order by 初级排序字段名 排序方式,次级排序字段名 排序方式...
排序方式
升序:默认不写或ASC
降序:DESC
聚合函数:将一列作为一个整体的纵向计算
count(字段名)
max(字段名)
min(字段名)
sum(字段名)
avg(字段名)
4. 分组查询
group by 分组字段
group by 分组字段 having 条件
5. 分页查询
limit 当前页起始记录下标,每页条数
六、DCL常用语句
1. 管理用户
(1)查询用户(不属于DCL)
use MySQL;
select * from user;
(2)创建用户
create user '用户名'@'主机名' identified by '密码';
(3)修改用户
update user set password = password('新密码') where user = '用户名';
set password for '用户名'@'主机名' = password('新密码');
-- 3. DCL语句修改密码(MySQL 8)
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
(4)删除用户
drop user '用户名'@'主机名';
2. 权限管理
show grants for '用户名'@'主机名';
-- 2. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-- 3. 收回权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';