Mysql SQL 语法
1. 数据库操作
- 创建数据库
CREATE DATABASE [DATABASE_NAME]
DEFAULT CHARACTER set [CHARACTER_TYPE]
COLLATE [CHARACTER_COLLATE_TYPE];
CREATE DATABASE [DATABASE_NAME]
DEFAULT CHARACTER set [CHARACTER_TYPE]
COLLATE [CHARACTER_COLLATE_TYPE];
解释
DATABASE_NAME: 数据库名称
CHARACTER_TYPE: 数据库中表的默认编码规则(可以省略 DEFAULT CHARACTER set [CHARACTER_TYPE]
部分)
CHARACTER_COLLATE_TYPE: 数据库中表的默认排序规则(可以省略 COLLATE [CHARACTER_COLLATE_TYPE]
部分)
示例:
CREATE DATABASE `daydayup`;
CREATE DATABASE `daydayup` default character set utf8mb4 collate utf8mb4_general_ci;
CREATE DATABASE `daydayup`;
CREATE DATABASE `daydayup` default character set utf8mb4 collate utf8mb4_general_ci;
- 查看数据库列表
SHOW DATABASES;
SHOW DATABASES;
- 使用数据库
USE [DATABASE_NAME];
USE [DATABASE_NAME];
- 查看当前使用的数据库
SELECT DATABASE();
SELECT DATABASE();
- 删除数据库
DROP DATABASE [DATABASE_NAME];
DROP DATABASE [DATABASE_NAME];
2. 表操作
2.1 创建和查看表
- 查看表列表
SHOW TABLES;
SHOW TABLES;
- 创建数据表
CREATE TABLE [TABLE_NAME] ([COLUMN_NAME] [DATA_TYPE] [LIMITERS]...);
CREATE TABLE [TABLE_NAME] ([COLUMN_NAME] [DATA_TYPE] [LIMITERS]...);
解释
TABLE_NAME: 表名称
COLUMN_NAME: 字段名称
DATA_TYPE: 字段数据类型
LIMITERS: 其他限定条件,比如非空、默认值等等
- 查看表结构
DESCRIBE [TABLE_NAME]
DESCRIBE [TABLE_NAME]
2.2 修改表结构
- 添加列
ALTER TABLE [TABLE_NAME] ADD [COLUMN_NAME] [DATA_TYPE] [LIMITERS];
ALTER TABLE [TABLE_NAME] ADD [COLUMN_NAME] [DATA_TYPE] [LIMITERS];
- 修改列和属性
ALTER TABLE [TABLE_NAME] CHANGE [OLD_COLUMN_NAME] [NEW_COLUMN_NAME] [DATA_TYPE] [LIMITERS];
ALTER TABLE [TABLE_NAME] CHANGE [OLD_COLUMN_NAME] [NEW_COLUMN_NAME] [DATA_TYPE] [LIMITERS];
- 删除列
ALTER TABLE [TABLE_NAME] DROP COLUMN [COLUMN_NAME];
ALTER TABLE [TABLE_NAME] DROP COLUMN [COLUMN_NAME];
2.3 删除表
DROP TABLE [TABLE_NAME];
DROP TABLE [TABLE_NAME];
3. 数据操作
3.1 插入数据
- 普通插入
INSERT INTO [TABLE_NAME]([COLUMN_NAME1], [COLUMN_NAME2]...) VALUES([VALUE1], [VALUE2]...);
INSERT INTO [TABLE_NAME]([COLUMN_NAME1], [COLUMN_NAME2]...) VALUES([VALUE1], [VALUE2]...);
- 插入查询出来的数据
INSERT INTO [TABLE_NAME]([COLUMN_NAME1], [COLUMN_NAME2]...)
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [OTHER_TABLE_NAME];
INSERT INTO [TABLE_NAME]([COLUMN_NAME1], [COLUMN_NAME2]...)
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [OTHER_TABLE_NAME];
- 复制一个表的数据到一个新表
CREATE TABLE [NEW_TABLE_NAME] AS
SELECT * FROM [TABLE_NAME];
CREATE TABLE [NEW_TABLE_NAME] AS
SELECT * FROM [TABLE_NAME];
3.2 更新数据
- 条件更新
UPDATE [TABLE_NAME]
SET [COLUMN_NAME] = [VALUE]
WHERE [COLUMN_NAME] = [VALUE];
UPDATE [TABLE_NAME]
SET [COLUMN_NAME] = [VALUE]
WHERE [COLUMN_NAME] = [VALUE];
3.3 删除数据
- 条件删除
DELETE FROM [TABLE_NAME]
WHERE [COLUMN_NAME] = [VALUE];
DELETE FROM [TABLE_NAME]
WHERE [COLUMN_NAME] = [VALUE];
- 清空表
TRUNCATE TABLE [TABLE_NAME];
TRUNCATE TABLE [TABLE_NAME];
注意事项
使用更新和删除操作时一定要用 WHERE
子句,不然会把整张表的数据都破坏!!!
可以先用 SELECT
语句进行测试,防止错误删除。
3.4 查询数据
- 普通查询
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME];
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME];
- DISTINCT
使用 DISTINCT
可以去除结果的重复项,相同的结果只出现一次;它作用于所有列,也就是说所有列的值都相同才算相同。
SELECT DISTINCT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME];
SELECT DISTINCT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME];
- LIMIT
限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME] LIMIT 0,1;
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME] LIMIT 0,1;
3.5 排序
- ASC : 升序 (默认)
- DESC : 降序
可以按多个列进行排序,并且为每个列指定不同的排序方式:
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME] ORDER BY [COLUMN_NAME1] DESC;
SELECT [COLUMN_NAME1], [COLUMN_NAME2]...
FROM [TABLE_NAME] ORDER BY [COLUMN_NAME1] DESC;
3.6 条件过滤
使用 WHERE
关键字可以过滤掉不符合指定条件的数据行,可用的操作符列表如下:
操作符 | 说明 |
---|---|
= | 等于 |
< | 小于 |
> | 大于 |
<> 或者 != | 不等于 |
<= 或者 !> | 小于等于 |
>= 或者 !< | 大于等于 |
BETWEEN | 在两个值之间 |
IS NULL | 为 NULL 值 |
AND 和 OR 用于连接多个过滤条件。优先处理 AND,当一个过滤表达式涉及到多个 AND 和 OR 时,可以使用 () 来决定优先级,使得优先级关系更清晰。
IN 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。
NOT 操作符用于否定一个条件。
3.7 通配符
通配符也是用在过滤语句中,但它只能用于文本字段。
- % 匹配 >=0 个任意字符;
- _ 匹配 ==1 个任意字符;
- [ ] 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。
使用 Like 来进行通配符匹配。
3.8 别名和拼接
计算字段通常需要使用 AS 来取别名,否则输出的时候字段名为计算表达式。
SELECT col1 * col2 AS alias
FROM mytable;
SELECT col1 * col2 AS alias
FROM mytable;
CONCAT() 用于连接两个字段。许多数据库会使用空格把一个值填充为列宽,因此连接的结果会出现一些不必要的空格,使用 TRIM() 可以去除首尾空格。
SELECT CONCAT(TRIM(col1), '(', TRIM(col2), ')') AS concat_col
FROM mytable;
SELECT CONCAT(TRIM(col1), '(', TRIM(col2), ')') AS concat_col
FROM mytable;