创建数据库
CREATE {DATABASE|SCHEMA} db_name;
检测数据库名称是否存在,不存在则创建
CREATE DATABASE [IF NOT EXISTS] db_name;
在创建数据库的同时指定编码方式
CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset;
注意
数据库名称最好有意义
名称不要包含特殊字符或者是MySQL关键字
查看当前服务器下全部数据库
SHOW DATABASES|SCHEMAS;
查看指定数据库的详细信息
SHOW CREATE DATABASE db_name;
修改指定数据库的编码方式
ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;
打开指定数据库
USE db_name;
得到当前打开的数据库
SELECT DATABASE()|SCHEMA();
删除指定的数据库
DROP DATABASE db_name;
如果数据库存在则删除
DROP DATABASE [IF EXISTS] db_name;
ORDER BY 排序
ORDER BY 字段名称 ASC|DESC
LIMIT 限制结果集显示条数
LIMIT 值
显示结果集的前几条记录
LIMIT offset,row_count
从offset开始,显示几条记录,offset从0开始
多表查询
笛卡尔积的形式
内连接的形式
查询两个表中符合连接条件的记录
SELECT 字段名称,... FROM tbl_name1
INNER JOIN tbl_name2
ON 连接条件
外连接的形式
左外连接
SELECT 字段名称,... FROM tbl_name1
LEFT [OUTER] JOIN tbl_name2
ON 条件;
先显示左表中的全部记录,再去右表中查询复合条件的记录,不符合的以NULL代替
右外连接
SELECT 字段名称,... FROM tbl_name1
RIGHT [OUTER] JOIN tbl_name2
ON 条件;
先显示右表中的全部记录,再去左表中查询复合条件的记录,不符合的以NULL代替
外键约束的参照操作
CASCADE
从附表删除或更新,子表也跟着删除或者更新,级联的操作
SET NULL
从附表删除或者更新记录,并设置子表的外键列为NULL。
NO ACTION | RESTRICT
拒绝对父表做更新或者删除操作
动态添加外键
动态添加外键
ALTER TABLE tbl_name
[CONSTRAINT 外键名称] ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);
动态添加外键之前表中的记录一定合法的记录,没有脏值,否则外键添加不成功
动态删除外键
ALTER TABLE tbl_name
DROP FOREIGN KEY fk_name;
特殊形式的查询 子查询
SELECT 字段名称 FROM tbl_name WHERE col_name=(SELECT col_name FROM tbl_name)
内层语句查询的结果可以做为外层语句查询的条件
由IN引发的子查询
由比较运算符引出子查询
由EXISTS引发的子查询
ANY SOME ALL
联合查询
UNION
SELECT 字段名称,... FROM tbl_name1
UNION
SELECT 字段名称... FROM tbl_name2;
UNION ALL
SELECT 字段名称,... FROM tbl_name1
UNION ALL
SELECT 字段名称... FROM tbl_name2;
UNION ALL 是简单的合并,UNION会去掉表中重复记录