数据库操作
查询
SHOW DATABASES ;
SELECT DATABASE ( ) ;
SHOW CREATE DATABASE 数据库名;
创建
CREATE DATABASE 数据库名;
CREATE DATABASE IF NOT EXISTS 数据库名;
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
修改
ALTER DATABASE 数据库名 CHARACTER SET 字符集;
删除
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名;
数据表操作
USE 数据库名;
查询
SHOW TABLES ;
DESC 表名;
SHOW TABLE STATUS FROM 库名 LIKE 表名;
创建
CREATE TABLE 表名(
列名1 数据类型1 COMMENT '字段注释1'
, 列名2 数据类型2 COMMENT '字段注释2'
, . . .
, 列名n 数据类型n
) COMMENT '表注释' ;
常用数据类型 说明 INT 整数类型 DOUBIE 小数类型 DATE 日期:只包含年月日(yyyy-MM-dd) DATETIME 日期:包含年月日时分秒(yyyy-MM-dd HH:mm:ss) VARCHAR 字符串
约束
CREATE TABLE 表名(
列名 数据类型 UNIQUE
, 列名 数据类型 NOT NULL
, 列名 数据类型 PRIMARY KEY
, 列名 数据类型 PRIMARY KEY AUTO_INCREMENT
, . . .
) ;
修改
ALTER TABLE 表名 RENAME TO 新的表名;
ALTER TABLE 表名 CHARACTER SET 字符集名称;
ALTER TABLE 表名 ADD 列名 数据类型;
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除
DROP TABLE 表名;
DROP TABLE IF EXISTS 表名;
ALTER TABLE 表名 DROP 列名;
数据操作
查询
SELECT
列名1
, 列名2
, . . .
FROM
表名1
, 表名2
, . . .
WHERE
条件1
AND 条件2
AND . . .
GROUP BY
分组字段
HAVING
分组之后的条件
ORDER BY
排序字段 DESC
LIMIT
从哪条开始查, 查几条
SELECT * FROM 表名;
SELECT * FROM 表名 WHERE id = 1 ;
SELECT id, name FROM 表名;
SELECT DISTINCT name FROM 表名;
创建
INSERT INTO 表名 VALUES ( 值1 , 值2 , . . . ) ;
INSERT INTO 表名( 列名1 , 列名2 , . . . ) VALUES ( 值1 , 值2 , . . . ) ;
修改
UPDATE 表名 SET 列名1 = 值1 , 列名2 = 值2 , . . . WHERE 条件;
删除
DELETE FROM 表名 WHERE 条件;
进阶
聚合函数
聚合函数 说明 count(列名) 统计数量(默认选用不为null的列) MAX(列名) 最大值 MIN(列名) 最小值 SUM(列名) 求和 AVG(列名) 平均值 UCASE(列名) 把小写字母转换为大写字母 LCASE(列名) 把大写字母转换为小写字母 MID(列名, int1, int2) 提取该列值第 int1 到第 int2 个字符 LEN(列名) 获取该列值的长度 EXISTS(查询语句) 查询是否存在 NOW() 获取当前时间 FORMAT(列名, 格式) 将时间字段转换为指定格式(‘%Y-%m-%d’ -> ‘yyyy-MM-dd’)
多表查询
内连接
SELECT *
FROM 表名1 as a
, 表名2 as b
WHERE a. name = b. name
AND a. id = 1 ;
左连接
SELECT *
FROM 表名1 as a
LEFT JOIN 表名2 as b
ON a. name = b. name
WHERE a. id = 1 ;
子查询
SELECT *
FROM 表名1
WHERE name in (
SELECT name
FROM 表名2
WHERE id = 1
) ;
自关联查询
SELECT
a. id
, a. name
, a. mgr
, b. name
FROM
employee a
LEFT JOIN
employee b
ON
a. mgr = b. id;
索引
查看索引
SHOW INDEX FROM 表名;
添加索引
ALTER TABLE 表名 ADD INDEX 索引名( 列名) ;
ALTER TABLE 表名 ADD INDEX 索引名( 列名1 , 列名2 , . . . ) ;
ALTER TABLE 表名 ADD PRIMARY KEY ( 列名) ;
ALTER TABLE 表名 ADD UNIQUE 索引名( 列名) ;
ALTER TABLE 表名 ADD CONSTRAINT 索引名 FOREIGN KEY ( 本表列名) REFERENCES 主表名( 主表列名) ;
ALTER TABLE 表名 ADD FULLTEXT 索引名( 列名) ;
删除索引
DROP INDEX 索引名 ON 表名;
自定义排序
SELECT *
FROM 表名
ORDER BY
CASE user_name
WHEN 'A' THEN 4
WHEN 'B' THEN 5
WHEN 'C' THEN 2
WHEN 'D' THEN 3
ELSE 1
END DESC
SELECT *
FROM 表名
ORDER BY
CASE
WHEN user_name = 'admin'
THEN create_time
ELSE update_time
END
视图
查询视图
SHOW FULL TABLES IN 数据库名 WHERE Table_type = 'VIEW' ;
SHOW CREATE VIEW 视图名称;
创建视图
CREATE VIEW 视图名称 AS 查询语句;
CREATE VIEW 视图名称 ( 列名1 , 列名2 , . . . ) AS 查询语句;
修改视图
ALTER VIEW 视图名称 AS 查询语句;
删除视图
DROP VIEW 视图名称;
DROP VIEW IF EXISTS 视图名称;
存储过程
查看存储过程
SELECT *
FROM mysql. proc
WHERE db= '数据库名称' ;
创建存储过程
DELIMITER $
CREATE PROCEDURE 存储过程名称( 参数. . . )
BEGIN
sql 语句;
END $
DELIMITER ;
调用存储过程
CALL 存储过程名称( 参数) ;
删除存储过程
DROP PROCEDURE 存储过程名称;
DROP PROCEDURE IF EXISTS 存储过程名称;
触发器
事务
//TODO 未完成