MySql
启动
安装后,mysql会默认注册为mysql80服务,且开机自启。因此不用手动开启。如需要,分别使用以下两行代码开或关:
1 2
| net start mysql80 net stop mysql80
|
启动客户端
其中,username 默认root。输入完成会让你输入密码,之后客户端就启动成功了。
SQL语句基本语法
- 不区分大小写,但最好大写
- 句末分号结尾
- 注释
- 单行:
-- 注释语句或# 注释语句
- 多行:
/* 注释语句 */
MYSQL数据类型
数值类型
| 标识符 |
大小 |
描述 |
TINYINT |
1字节 |
|
SMALLINT |
2字节 |
|
MEDIUMINT |
3字节 |
|
INT(或INTEGER) |
4字节 |
|
BIGINT |
8字节 |
|
FLOAT |
4字节 |
单精度浮点 |
DOUBLE |
8字节 |
双精度浮点 |
DECIMAL |
|
依赖于M(精度)和D(标度)的值 |
- 定义一个年龄字段:
age TINYINT UNSIGNED。无符号数值在标识符后面加UNSIGNED即可。
- 定义一个分数字段(0~100,最多有1位小数):
score DOUBLE(4, 1)。DOULBE(整个数值的有效数字位数, 允许有几位小数)
字符串类型
| 标识符 |
大小 |
描述 |
CHAR |
0~255字节 |
定长字符串 |
VARCHAR |
0~65535字节 |
变长字符串 |
| TODO: 补全剩下的 |
|
|
CHAR和VARCHAR的区别:
- 大小范围的区别。
CHAR是固定的,CHAR(10)即使你只存储了1个字符,也会占用10个字节,用空格补全;VARCHAR则根据实际存储的字符动态地计算空间。
日期时间类型
| 标识符 |
大小 |
范围 |
格式 |
描述 |
DATE |
3 |
1000-01-01 ~ 9999-12-31 |
YYYY-MM-DD |
|
DATETIME |
8 |
1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999 |
YYYY-MM-DD hh:mm:ss[.fraction] |
|
TIMESTAMP |
4 |
1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.499999 |
YYYY-MM-DD hh:mm:ss[.fraction] |
|
TIME |
3 |
-838:59:59.000000 ~ 838:59:59.000000 |
hh:mm:ss[.fraction] |
|
YEAR |
1 |
1901 ~ 2155 或 0000 |
YYYY |
|
DDL语句
Data Definition Language,用于数据的定义和创建
定义数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 查询所有数据库 SHOW DATABASES;
# 创建一个数据库 CREATE DATABASE [IF NOT EXISTS] <数据库名> [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
# 删除 DROP DATABASE [IF EXISTS] <数据库名>;
# 使用(选中某个数据库) USE <数据库名>;
# 查询选中的数据库 SELECT DATABASE();
|
定义表和字段
在某一个数据库下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 创建一个表 CREATE TABLE <表名>( <字段1> <字段1类型> [COMMENT 字段1注释], <字段2> <字段2类型> [COMMENT 字段2注释], ... <字段n> <字段n类型> [COMMENT 字段n注释] #最后一个字段后面没有逗号 ) [COMMENT 表注释];
# 查询所有表 SHOW TABLES;
# 查询某个表的结构 DESC <表名>;
# 查询某个表的建表语句 SHOW CREATE TABLE <表名>;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # 添加字段 ALTER TABLE <表名> ADD <字段名> <字段类型> [COMMENT 注释] [约束];
# 修改字段的数据类型(MODIFY) ALTER TABLE <表名> MODIFY <字段名> <新的字段类型>;
# 修改整个字段(CHANGE) ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <字段类型> [COMMENT 注释] [约束];
# 删除字段 ALTER TABLE <表名> DROP <字段名>;
# 修改表名 ALTER TABLE <表名> RENAME TO <新表名>;
# 删除表 DROP TABLE [IF EXISTS] <表名>;
# 删除表中数据,仅保留空表 TRUNCATE TABLE <表名>;
|
DML语句
Data Manipulation Language 数据操作语言
增
1 2 3 4 5 6 7 8 9 10 11
| # 给指定字段添加(若干)数据 INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
# 给所有字段添加(若干)数据 INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
|
改
1
| UPDATE 表名 SET 字段名=值1, 字段名=值2, ... [WHERE 条件];
|
例如,以下语句将id为1的数据 的name字段修改为cxk:
1
| UPDATE 表名 SET name='cxk' where id=1;
|
如果不指定 WHERE 条件 表示辐射所有数据。
删
1
| DELETE FROM 表名 [WHERE 条件];
|
DQL语句
Data Query Language 数据查询语言
基本查询
1 2 3 4 5 6 7
| # 查询指定字段 # DISTINCT: 是否去除重复数据 # [AS 别名]: 跟在字段名后面,表示为这个字段的别名。别名将显示在输出结果中,提高可读性。别名需要有引号;AS可以省略。 SELECT [DISTINCT] 字段1 [AS 别名1], 字段2 [AS 别名2], ... FROM 表名;
# 查询所有字段(通配符*) SELECT * FROM 表名;
|
条件查询
1
| SELECT 字段列表 FROM 表名 WHERE 条件列表;
|