一.数据库相关概念
数据库(DB):按照一定的数据结构来组织、存储和管理数据的仓库
数据库管理系统(DBMS):一种操纵和管理数据库的大型软件,用于创建、使用和维护数据库
关系型数据库(RDBMS):由多张相互连接的二维表组成的数据库
非关系型数据库:泛指非关系型数据库,是对关系型数据库的补充
结构化查询语言(SQL):一种操作关系型数据库的编程语言,定义了一套操作关系型数据库统一SQL标准
二、SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾
- SQL语句可以使用空格/缩进来增强语句的可读性
- 不区分大小写,关键字建议使用大写
- 注释
4.1. 单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
4.2. 多行注释: /* 注释内容 */
三、SQL分类
- DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)
- DML:数据操作语言,用来对数据库表中的数据进行增删改
- DQL:数据查询语言,用来查询数据库中表的记录
- DCL:数据控制语言,用来创建数据库用户、控制数据库的访问权限
四、数据定义语言DDL
1.DDL-数据库操作
1.1 查询所有数据库 SHOW DATABASES;
1.2 查询当前数据库 SELECT DATABASE();
1.3 创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
(默认的字符集和排序规则分别是utf8mb4字符集和utf8mb4_unicode_ci排序规则,也是推荐使用的字符集和排序规则)
1.4 删除数据库 DROP DATABASE [IF EXISTS] 数据库名;
1.5 使用数据库 USE 数据库名;
- DDL-表操作-查询
2.1 查询当前数据库所有表 SHOW TABLES;
2.2 查询表结构 DESC 表名;
2.3 查询指定表的建表语句 SHOW CREATE TABLE 表名;
3.DDL-表操作-创建
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
...
字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释];
- DDL-表操作-数据类型
4.1 整数类型
TINYINT:1字节,小整数,范围:-128 ~ 127(有符号)或 0 ~ 255(无符号)
SMALLINT:2字节,大整数,范围:-32,768 ~ 32,767(有符号)或 0 ~ 65,535(无符号)
MEDIUMINT:3字节,大整数,范围:-8,388,608 ~ 8,388,607(有符号)或 0 ~ 16,777,215(无符号)
INT或INTEGER:4字节,大整数,范围:-2,147,483,648 ~ 2,147,483,647(有符号)或 0 ~ 4,294,967,295(无符号)
BIGINT:8字节,极大整数,范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807(有符号)或 0 ~ 18,446,744,073,709,551,615(无符号)
4.2 浮点数类型:
FLOAT:4字节,单精度浮点数,范围:-3.402823466 E+38 ~ 3.402823466351 E+38(有符号)或 0 和 1.175494351 E-38 ~ 3.402823466 E+38,近似值
DOUBLE:8字节,双精度浮点数,范围:-1.7976931348623157 E+308 ~ 1.7976931348623157 E+308 或 0 和 2.2250738585072014 E-308 ~ 1.7976931348623157E+308,近似值
DECIMAL(M, D):精确值,M 是总位数,D 是小数位数。例如,DECIMAL(5, 2)可以存储 123.45
4.3 字符串类型
CHAR(N):固定长度字符串,最多 255 个字符
VARCHAR(N):可变长度字符串,最多 65,535 个字符
TINYBLOB:不超过 255 个字符的二进制数据
TINYTEXT:短文本字符串,最多 255 个字符
BLOB:二进制形式的长文本数据,最多 65,535 个字符
TEXT:长文本数据,最多65,535个字符
MEDIUMBLOB:二进制形式的中等长度文本数据,最多 16,777,215 个字符
MEDIUMTEXT:中等长度文本数据,最多 16,777,215 个字符
LONGBLOB:二进制形式的极大文本数据,最多 4,294,967,295 个字符
LONGTEXT:极大文本数据,最多 4,294,967,295 个字符
4.4 日期时间类型
DATE:日期值,3字节,格式为YYYY-MM-DD,范围是1000-01-01 至 9999-12-31
TIME:时间值或持续时间,3字节,格式为HH:MM:SS,范围是-838:59:59 至 838:59:59
YEAR:年份值,1字节,格式为YYYY,范围是1901 至 2155
DATETIME:混合日期和时间值,8字节,格式为YYYY-MM-DD HH:MM:SS,范围是1000-01-01 00:00:00 至 9999-12-31 23:59:59
TIMESTAMP:混合日期和时间值,时间戳,4字节,格式为YYYY-MM-DD HH:MM:SS,范围是1970-01-01 00:00:01 至 2038-01-19 03:14:07
4.5 布尔类型
BOOLEAN或BOOL:底层会自动转换成TINYINT(1),赋值时可以用FALSE和TRUE,也可以使用0和1
4.6 枚举类型
ENUM:示例ENUM('value1', 'value2', ..., 'valueN')
只能存字符串,列的值只能是预定义列表中的一个
如果没有指定默认值,那么可以取空值NULL,指定默认值后会默认取默认值,如果未指定默认值且不能为空,会默认取第一个值
索引会按照列表顺序从1开始,空字符串 '' 的索引为 0(如果允许空值)
5.DDL-表操作-修改
添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
修改数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
删除字段 ALTER TABLE 表名 DROP 字段名;
修改表名 ALTER TABLE 表名 RENAME TO 新表名;
6 DDL-表操作-删除
删除表 DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表 TRUNCATE TABLE 表名;
五.数据操作语言DML
- DML-添加数据
1.1给指定字段添加数据 INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...);
1.2给全部字段添加数据 INSERT INTO 表名 VALUES (值1,值2,...);
1.3 批量添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),...,(值1,值2,...);
INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),...,(值1,值2,...);
注:插入数据时,指定的字段顺序需要与值的顺序是一一对应的
字符串和日期型数据应该包含在单引号中
插入的数据大小,应该在字段的规定范围内
2 DML-修改数据
UPDATE 表名 SET 字段1=值1,字段2=值2,...[WHERE 条件];
注:如果没有条件,会修改整张表的所有数据
3 DML-删除数据
DELETE FROM 表名 [WHERE 条件];
注: DELETE如果没有指定条件,会删除整张表的所有数据
DELETE不能删除某一个字段的值(可以使用UPDATE)
DELETE仅仅删除表中的数据,DROP会把整张表和数据一起删除
