SQL
注释
- 单行注释:
--注释或#注释(MySql特有) - 多行注释:
/*注释*/
DDL(定义数据库、表、字段)
数据库
SHOW DATABASES;SELECT DATABASE();:查看当前数据库名称CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集][COLLATE 排序规则];DROP DATABASE [IF EXISTS] 数据库名称;USE 数据库名称:使用某个数据库
表
查询
SHOW TABLES;DESC 表名;:查询表结构SHOW CREATE TABLE 表名;:查询创建表的语句
创建
CREATE TABLE 表名(
字段1 字段1的类型[COMMENT 字段1的注释],
字段n 字段n的类型[COMMENT 字段n的注释]
)[COMMENT 表注释];
修改
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];:添加字段ALTER TABLE 表名 MODIFY:可以修改数据类型,或者字段名和字段类型一起修改ALTER TABLE 表名 DROP 字段;ALTER TABLE 表名 RENAME TO 新表名;
删除
DROP TABLE [IF EXISTS] 表名;TRUNCATE TABLE 表名;:删除表后重新创建相同的表,相当于清除所有数据
DML(增删改)
增
INSERT INTO 表名() VALUES();:添加的数据填写指定字段INSERT INTO 表名 VALUES();:添加的数据填写全部字段
以上两种方法的VALUES后都可以跟不止一个括号,表示批量添加数据,用逗号隔开每条数据
删
DELETE FROM 表名 [WHERE 条件];:删除的是整行数据;如果只删除某个字段,要使用UPDATE将某个字段设为null
如果没有WHERE条件判断,则默认删除所有数据
改
UPDATE 表名 SET 字段1=值1, 字段2=值2, ... [WHERE 条件];
如果没有WHERE条件判断,则默认更改所有数据的指定字段
DQL(查)
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
基础查询
SELECT 字段1,字段2,... FROM 表名;SELECT * FROM 表名;SELECT 字段1 [AS 别名1],字段2 [AS 别名2],... FROM 表名;:取别名,AS可以不写,只写字段+别名SELECT DISTINCT 字段列表 FROM 表名;:去重
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;:条件列表可以是比较运算符或逻辑运算符
聚合函数
聚合函数都是将列作为一个整体,进行纵向计算
countmaxminavgsum
分组查询
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
WHERE和HAVING的区别
- where在分组之前,having在分组之后
- where不能用聚合函数,having可以用
注意事项
- 执行顺序:where>聚合函数>having
- 分组之后,查询的字段一般为聚合函数和分组字段,其余字段无意义
排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
排序方式
ASC:升序(默认值)DESC:降序
注意事项
先根据第一个字段排序,相同时才会根据第二个字段排序
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意事项
- 起始索引=(查询页码-1)*每页显示记录数
- 分页查询是数据库方言,MySQL中的关键字是LIMIT
- 如果查询的是第一页数据,起始索引可以省略
DQL执行顺序
- FROM
- WHERE
- GROUP BY, HAVING
- SELECT
- ORDER BY
- LIMIT