SQL语句的分类
DDL: 对数据库、数据表进行操作
DML:对数据表中的数据,进行增、删、改操作
DQL:对数据表中的数据,进行查询操作
DCL:对数据库、数据表进行权限管理、用户管理等操作
DDL操作
1. 对数据库进行操作
-
创建数据库
create database 数据库名称;
create database if not exists 数据库名称; -
使用数据库
-
选择数据库
use 数据库名称; -
查看当前使用数据库
select 数据库名称(); -
查询数据库
show databases; -
删除数据库
drop database 数据库名称; -
如果存在才删除
drop database if exists 数据库名称;
2. 数据表进行操作
-
创建表
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
… – 最后一个字段不加逗号
); -
修改表名称
alter table 表名 rename to 新表名; -
修改表结构
1.修改表字段的数据类型
alter table 表名 modify 字段名 新的数据类型;2.修改表字段的名称和数据类型
alter table 表名 change 旧字段名 新字段名 新的数据类型;3.添加表字段
alter table 表名 add 字段名 数据类型;4.删除表字段
alter table 表名 drop 字段名;
DML操作
-
添加数据
给指定的字段字段数据
insert into 表名(字段名1,字段名2…) values(值1,值2…);给所有字段添加数据
insert into 表名 values(值1,值2…);批量添加(一次添加多条数据)
给指定列一次添加多条数据
insert into 表名(字段名1,字段名2…) values(值1,值2…),(值1,值2…);给所有列一次添加多条数据
insert into 表名 values(值1,值2…),(值1,值2…),(值1,值2…); -
修改数据
update 表名 set 字段名1=值1, 字段名2=值2 [where 条件] -
删除数据
delete from 表名 [where 条件]
DQL操作
-
基础查询
– 查询表中所有字段的数据
select * from 表名;– 查询表中指定字段的数据
select 字段名1, 字段名2 from 表名; -
条件查询
– 查询表中所有字段的数据
select * from 表名;– 查询表中指定字段的数据
select 字段名1, 字段名2 from 表名 where 条件
– where语句后跟的条件运算符
=
<
<=
=
!= 或者 <>
|| 或者 or
in(值1, 值2, 值3)
&& 或者 and
between ... and ...
is null
is not null
not或者!
-
模糊查询
"_“一个字符,”%"多个字符
select 字段列表 from 表名 where 字段名 like “马__”
select 字段列表 from 表名 where 字段名 like “%德%” -
分组查询
– 分组查询必须和聚合函数一起使用
select 分组字段, 聚合函数 from 表名 group by 分组字段;– 分组查询必须和聚合函数一起使用
select 分组字段, 聚合函数 from 表名 [where条件] group by 分组字段 [having条件];–注意:[where条件] 分组之前的条件
–注意: [having条件] 分组之后的条件 -
排序查询
select 字段列表 from 表名 order by 排序字段 [ASC]; – 升序
select 字段列表 from 表名 order by 排序字段 desc; – 降序– 如果字段1相同,按照字段2降序排列
select 字段列表 from 表名 order by 字段1 asc, 字段2 desc; -
分页查询
– 起始索引从0开始
– 起始索引 = (当前页-1)*每页条数
select 字段列表 from 表名 limit 起始索引, 每页条数; -
多表查询
–内连接
–隐式内连接
SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 … ;–显式内连接
SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 … ;表的别名
tablea as 别名1 , tableb as 别名2 ;
tablea 别名1 , tableb 别名2 ; -
外连接
–左外连接
SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 … ;
–右外连接
SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 … ; -
自连接(也称为内连接外连接)
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 … ; -
联合查询
SELECT 字段列表 FROM 表A …;
UNION [ ALL ]
SELECT 字段列表 FROM 表B …;
注意:union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重
视图
-
创建
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [CASCADED | LOCAL ] CHECK OPTION ]; -
查询
查看创建视图语句:SHOW CREATE VIEW 视图名称;
查看视图数据:SELECT * FROM 视图名称 … ; -
修改
方式一:
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH[ CASCADED | LOCAL ] CHECK OPTION ];
方式二:
ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]; -
删除
DROP VIEW [IF EXISTS] 视图名称 [,视图名称] … ;
存储过程
1.基础语法
-
创建
create procedure <proc_name>([IN/OUT args])
begin
– SQL
end; -
调用
call 名称 ([ 参数 ]); -
查看
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = ‘xxx’; – 查询指
定数据库的存储过程及状态信息SHOW CREATE PROCEDURE 存储过程名称 ; – 查询某个存储过程的定义
-
删除
DROP PROCEDURE [ IF EXISTS ] 存储过程名称 ;
2.变量
- 系统变量
- 查看系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES ; – 查看所有系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES LIKE ‘…’; – 可以通过LIKE模糊匹配方
式查找变量
SELECT @@[SESSION | GLOBAL] 系统变量名; – 查看指定变量的值 - 设置系统变量
SET [ SESSION | GLOBAL ] 系统变量名 = 值 ;
SET @@[SESSION | GLOBAL]系统变量名 = 值 ;
- 查看系统变量
- 用户定义变量
-
赋值
方法一
SET @var_name = expr [, @var_name = expr] … ;
SET @var_name := expr [, @var_name := expr] … ;方法二
SELECT @var_name := expr [, @var_name := expr] … ;
SELECT 字段名 INTO @var_name FROM 表名; -
使用
SELECT @var_name ;
-
- 局部变量
-
声明
DECLARE 变量名 变量类型 [DEFAULT … ] ; -
赋值
SET 变量名 = 值 ;
SET 变量名 := 值 ;
SELECT 字段名 INTO 变量名 FROM 表名 … ;
-
触发器
- 创建
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW – 行级触发器
BEGIN
trigger_stmt ;
END; - 查看
SHOW TRIGGERS ; - 删除
DROP TRIGGER [schema_name.]trigger_name ; – 如果没有指定 schema_name,默认为当前数
据库 。