DDL:
1、直接创建数据库 CREATE DATABASE 数据库名;
2、删除数据库 DROP DATABASE 数据库名;
3、使用/切换数据库 USE 数据库名;
4、创建表
CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2…);
5、查看创建表的SQL语句 SHOW CREATE TABLE 表名;
6、快速创建一个表结构相同的表
CREATE TABLE 新表名 LIKE 旧表名;
7、判断表是否存在并删除表(了解) DROP TABLE (IF EXISTS) 表名;
DML:
1、插入全部字段
所有的字段名都写出来
INSERT INTO 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3);
不写字段名
INSERT INTO 表名 VALUES (值1, 值2, 值3…);
2、复制表 INSERT INTO 表名1 SELECT * FROM 表名2;
作用:将 表名2 中的数据复制到 表名1 中
3、更新表记录
不带条件修改数据
UPDATE 表名 SET 字段名=值;
带条件修改数据
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
4、删除表记录
不带条件删除数据 DELETE FROM 表名;
带条件删除数据 DELETE FROM 表名 WHERE 字段名=值;
truncate删除表记录 TRUNCATE TABLE 表名;
DQL:
1、查询表所有数据
使用*表示所有列 SELECT * FROM 表名;
2、查询指定列 SELECT 字段名1, 字段名2... FROM 表名;
3、查询指定列并且结果不出现重复数据 SELECT DISTINCT 字段名 FROM 表名;
4、条件查询 SELECT 字段名 FROM 表名 WHERE 条件;
5、模糊查询 SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; MySQL通配符有两个: % : 表示0个或多个字符(任意个字 符) _ : 表示一个字符
6、排序 SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC]; ASC: 升序, 默认是升序 DESC: 降序
7、分组 相同数据作为一组
SELECT 字段1,字段2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
8、分页
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];
多表查询:
1、 内连接
隐式内连接:看不到 JOIN 关键字,条件使用 WHERE 指定
SELECT 字段名 FROM 左表, 右表 WHERE 条件;
显示内连接:使用 INNER JOIN ... ON 语句, 可以省略 INNER
SELECT 字段名 FROM 左表 INNER JOIN 右表 ON 条 件;
2、 外连接
左外连接:使用 LEFT OUTER JOIN ... ON , OUTER 可以省略
SELECT 字段名 FROM 左表 LEFT OUTER JOIN 右表 ON 条件;
用左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示NULL 可以理解为:在内连接的 基础上保证左表的数据全部显示
右外连接:使用 RIGHT OUTER JOIN ... ON , OUTER 可以省略
SELECT 字段名 FROM 左表 RIGHT OUTER JOIN 右表 ON 条件;
用右边表的记录去匹配左边表的记录,如果符合条件的则显示;否则,显示NULL 可以理解为:在内连接的基础上保证右表的数据全部显示