DDL(Data Definition Language)

表查询

  • 查询当前所有表
1
SHOW TABLES;
  • 查询表结构
1
DESC TABLE_NAME;
  • 查询指定表建表语句
1
SHOW CREATE TABLE TABLE_NAME;

表创建

1
2
3
4
CREATE TABLE TABLE_NAME (
COLUMN_NAME TYPE [COMMENT] [CONDITION],
...
);

数据类型

  • 数值类型
    • TINYINT 1byte
    • SMALLINT 2bytes
    • MEDIUMINT 3bytes
    • INT / INTEGER 4bytes
    • SIGINT 8bytes
    • FLOAT 4bytes float(m, d) 类似decimal
    • DOUBLE 8bytes double(m,d) 类似decimal
    • DECIMAL decimal(a,b) a表示小数点左边能存储的十进制数字最大数,b表示小数点右边…

对于数值类型,可以在字段约束条件中使用unsigned来声明无符号类型。

  • 字符串类型
    • CHAR CHAR(N) 定长为n的字符串
    • VARCHAR VARCHAR(N) 最长为n的字符串
    • TINYTEXT, BLOB, TEXT, … 等长文本或二进制数据
  • 日期类型
    • DATE
    • TIME
    • YEAR
    • DATETIME 日期+时间
    • TIMESTAMP 时间戳

表修改

修改表名

1
2
3
4
-- 方法一
ALTER TABLE TABLE_NAME RENAME AS NEW_TABLE_NAME;
-- 方法二
RENAME TABLE OLD_TABLE_NAME TO NEW_TABLE_NAME

添加字段

1
ALTER TABLE TABLE_NAME ADD COLUMN TYPE [COMMENT] [CONDITION];

修改字段类型

1
ALTER TABLE TABLE_NAME MODIFY COLUMN NEWTYPE;

修改字段名

1
ALTER TABLE TABLE_NAME RENAME OLD_COLUMN TO NEW_COLUMN;

修改字段名和类型

1
ALTER TABLE TABLE_NAME CHANGE OLD_COLUMN NEW_COLUMN NEWTYPE [COMMENT] [CONDITION];

删除字段

1
ALTER TABLE TABLE_NAME DROP COLUMN;

删除表

1
DROP TABLE [IF EXISTS] TABLE_NAME;

删除并重新创建表

1
TRUNCATE TABLE TABLE_NAME;

DML (Data Manipulation Language)

添加数据

1
INSERT INTO TABLE_NAME [(COLUMN1, COLUMN2, ...)] VALUES (VALUE1, VALUE2,...), (VALUE1, VALUE2,...), ...;

添加数据时忽略未给出字段,则表明给全部字段添加数据

修改数据

1
2
UPDATE TABLE_NAME SET COLUMN1=VALUE1, COLUMN2=VALUE2,...
[WHERE CONDITION];

删除数据

1
DELETE FROM TABLE [WHERE CONDITION];

DQL(Data Query Language)

关键知识点:

  • 选择查询
  • 别名
  • where条件
  • order by排序
  • group by分组
  • limit 截断和偏移
  • case when then … end条件分支
  • having条件(针对group by 分组)
  • 内连接、外连接
  • 聚合函数
  • 开窗函数
  • 子查询, exist, in
  • with as语句

DCL(Data Control Language)

查询用户

1
2
USE mysql;
SELECT * FROM user;

创建用户

1
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

可以使用通配符%来表示任意主机。

修改用户密码

1
ALTER USER 'username'@'hostname' IDENTIFIED BY 'newpassword';

删除用户

1
DROP USER 'username'@'hostname';

查询权限

1
SHOW GRANTS FOR 'username'@'hostname';

赋予权限

1
GRANT ALL|OTHER PRIVILEGE ON DATABASE.TABLE TO 'username'@'hostname';

撤销权限

1
REVOKE ALL|OTHER PRIVILEGE ON DATABASE.TABLE FROM 'username'@'hostname';