学习MySQL时所记录的一些知识点,希望能对大家有所帮助。
DDL语句
创建数据库
CREATE DATABASE 数据库名;
选择数据库
USE 数据库名;
查看所有数据表
SHOW TABLES;
删除数据库
DROP DATABASE 数据库名
创建数据表
CREAT TABLE 表名(
字段1名称 类型 列的约束条件,
字段2名称 类型 列的约束条件,
......
)
查看表的定义
DESC 表名;
查看创建表的SQL语句
SHOW CREATE TABLE 表名 G
// G后面不用加;
删除表
DROP TABLE 表名;
修改表
修改表的字段类型
ALTER TABLE 表名 MODIFY [COLUMN] 字段定义 [FIRST|AFTER 字段名];
// []的内容可加可不加
增加表字段
ALTER TABLE 表名 ADD [COLUMN] 字段定义 [FIRST|AFTER 字段名];
删除表字段
ALTER TABLE 表名 DROP 字段名;
更改字段名
ALTER TABLE 表名 CHANGE [COLUMN] 旧名 新名 字段定义 [FIRST|AFTER 字段名];
修改字段排列排序
上述命令中,都有一个可选字段[FIRST|AFTER 字段名]
可以用来更改字段排列排序。请继续关注飞鱼ACG,后续我们将更新更多实用教程。
更改表名
ALTER TABLE 表名 RENAME [TO] 新的表名;
DML语句
插入记录
插入单条记录
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...);
// 也可以不写字段,但是VALUES值要和表里的字段顺序一一对应
插入多条记录
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...),(值1,值2,...),...;
更新记录
更新单表中的记录
UPDATE 表名 SET 字段1=值1,字段2=值2,... [where 条件];
更新多表中的记录
UPDATE 表1,表2... SET 表1.字段1=表达式1,...,表n字段n=表达式n [where 条件];
// 多表更新多用于根据一个表的字段来动态的更新另一个表的字段
删除记录
删除单表中的记录
DELETE FROM 表名 [WHERE 条件];
删除多表中的记录
DELETE 表1,表2,... FROM 表1,表2,... [WHERE 条件];
查询记录
SELECT 字段名 FROM 表名;
// 字段名用*表示所有字段
查询不重复的记录
SELECT DISTINCT 字段1,字段2 FROM 表名;
// 一般只用于筛选一个字段
条件查询
SELECT 字段名 FROM 表名 WHERE 条件;
使用<,=,>,>=,<=,!=等比较运算符,多条件之间用OR,AND等逻辑运算符连接。
排序与限制
SELECT * FROM 表名 ORDER BY 字段1 ASC|DESC,字段2 ASC|DESC,...;
// ASC:从低到高排序,默认值
// DESC:从高到低排序
SELECT * FROM 表名 ORDER BY 字段1 ASC|DESC,字段2 ASC|DESC,... LIMIT 值1,值2;
// LIMIT 值1,值2 值1表示从第*条开始(从零开始计数),值2表示取*条
聚合
SELECT 函数名(字段名) 字段名 FROM 表名;
/*
FUM_NAME:聚合函数
SUM:求和
COUNT:记录总数
MAX:最大值
MIN:最小值
*/
SELECT 函数名(字段名) 字段名 FROM 表名 GROUP BY 字段名 [WITH ROLLUP];
/*
GROUP BY 字段名:分类聚合
WITH ROLLUP:对分类聚合后的结果汇总
*/
SELECT 函数名(字段名) 字段名 FROM 表名 GROUP BY 字段名 HAVING SUM(字段名)>500;
// HAVING:对分类聚合后的结果进行条件过滤
// WHERE:对聚合前的结果过滤,不能用在聚合后
表连接
需求:显示多个表中的字段的时候使用
内连接:选取多个表中相互匹配的记录
SELECT 表1.字段,表2.字段,... FROM 表1名,表2名 ,... WHERE [表1.字段=表2.字段];
SELECT 表1.字段 别名,表2.字段 别名,... FROM 表1名,表2名 ,... WHERE [表1.字段=表2.字段];
//SELECT 语句可以给字段起别名!直接写在字段的后面
SELECT 表1.字段,表2.字段,... FROM 表1名 别名1,表2名 别名2,... WHERE [别名1.字段=别名2.字段];
//SELECT 语句可以给表起别名!直接写在表名的后面
外连接:不仅选出多个表中相互匹配的记录,还会选出其他不匹配的记录
SELECT * FROM 表1名 LEFT JOIN 表2名 ON WHERE [表1.字段=表2.字段];
// 左连接,以左表为基准
SELECT * FROM 表1名 LEFT JOIN 表2名 ON WHERE [表1.字段=表2.字段];
// 右连接,以右表为基准
子查询
未完待续……
支持一下
这个ACG站做的不错