SQL
1、SQL通用语法
- SQL语法可以单行或多行书写,以分号 (;)结尾
- SQL语句可以使用空格 / 缩进来增加语句的可读性
- MySQL数据库的SQL语句是不区分大小写,关键字建议使用大写
- 注释:
- 单行注释:
--
注释内容或用#
注释内容(MySQL特有) - 多行注释:/注释内容*/
- 单行注释:
2、SQL分类
分类 | 说明 |
---|---|
DDL | 数据定义语言,用来定义 数据库对象(数据库,表,字段 ) |
DML | 数据操作语言,用来对数据库表中的数据进行增、删、改 |
DQL | 数据查询语言,用来查询数据库中表的记录 |
DCL | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
Day02 DDL
DDL - 数据库操作
01 查询
a.查询所有的数据库
SHOW DATABASES
b. 查询当前数据库
SELECT DATABASE()
02 创建
CREATE DATABASE 数据库名;
CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHAESET 字符集][COLLATE 排序规则];
03 删除
DROF DATABASE [IF EXISTS]数据库名;
04 使用
切换到具体的数据库
USE 数据库名;
DDL - 表操作
01 DDL - 表操作 - 查询
- 查询当前数据库所有表
SHOW TABLE;
- 查询表的结构
DESC 表名;
- 查询指定表的建表语句
show CREATE TABLE 表名;
02 DDL - 表操作 - 创建
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
...
字段n 字段类型[COMMENT 字段n注释] #最后一个字段后面是不添加逗号的
)[COMMENT 表注释];
例如:
create table user(
user_id int comment '用户id',
age int comment "年龄",
name varchar(50) comment "姓名",
gender varchar(2) comment "性别"
)comment "用户信息表";
02 DDL - 表操作 - 数据类型
在MySQL中,数据类型用于定义表中的列,每个列都有一个特定的数据类型,用于存储特定类型的数据。MySQL的数据类型,包括数值型、日期型、字符串型、二进制型和其他类型。
一、数值型
MySQL支持多种数值型数据类型,包括整数型、小数型和布尔型。
整数型
MySQL支持多种整数型数据类型,包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
TINYINT:1字节,取值范围为-128到127或0到255。
使用方法:例如:age TINYINT UNSIGNED 表示无符号的数据类型取值范围为0~255
SMALLINT:2字节,取值范围为-32768到32767或0到65535。
MEDIUMINT:3字节,取值范围为-8388608到8388607或0到16777215。
INT:4字节,取值范围为-2147483648到2147483647或0到4294967295。
BIGINT:8字节,取值范围为-9223372036854775808到9223372036854775807或0到18446744073709551615。
小数型
MySQL支持多种小数型数据类型,包括FLOAT、DOUBLE和DECIMAL。
FLOAT:4字节,单精度浮点数,精度为7位。
DOUBLE:8字节,双精度浮点数,精度为15位。
使用double需要指定两个参数(第一个参数代表double这个数据类型的整个长度,第二个参数代表允许出现几位小数)例如:score double(4,1) 总长度为4,小数位为1
DECIMAL:可变长度,用于存储精确的小数,精度和数据长度可以自定义。
依赖于M(精度) 和D(标度)的值。例如:123.45 精度(整个数值的长度)为:5 ,标度(小数位的长度)为:2
布尔型
MySQL支持布尔型数据类型,即BOOLEAN或BOOL。它只占用1位,取值为TRUE或FALSE。
二、日期型
MySQL支持多种日期型数据类型,包括DATE、TIME、DATETIME、TIMESTAMP和YEAR。
DATE:用于存储日期,格式为YYYY-MM-DD。
TIME:用于存储时间,格式为HH:MM:SS。
YEAR:用于存储年份,格式为YYYY。
DATETIME:用于存储日期时间,格式为YYYY-MM-DD HH:MM:SS。
TIMESTAMP:用于存储时间戳,格式为YYYY-MM-DD HH:MM:SS。
(1970-01-01 00:00:01 至 2038 - 01-19 03:14:07)
三、字符串型
MySQL支持多种字符串型数据类型,包括CHAR、VARCHAR、TEXT、BLOB和ENUM。
CHAR和VARCHAR
CHAR和VARCHAR都用于存储字符串,但它们的存储方式不同。CHAR是一种固定长度的字符串类型,VARCHAR是一种可变长度的字符串类型。
CHAR:用于存储固定长度的字符串,长度为0到255个字符。 性能高
VARCHAR:用于存储可变长度的字符串,长度为0到65535个字符。 性能较差
TEXT和BLOB
TEXT和BLOB用于存储大量的文本或二进制数据。
TEXT:用于存储大量的文本数据,最大长度为65535个字符。
BLOB:用于存储大量的二进制数据,最大长度为65535个字节。
ENUM
ENUM用于存储枚举类型的数据,如性别、状态等。
四、二进制型
MySQL支持多种二进制型数据类型,包括BIT、BINARY和VARBINARY。
BIT:用于存储比特位,长度为1到64个比特位。
BINARY:用于存储固定长度的二进制数据,长度为0到255个字节。
VARBINARY:用于存储可变长度的二进制数据,长度为0到65535个字节。
五、其他类型
MySQL还支持多种其他类型的数据,包括SET、JSON和Geometry。
SET:用于存储一组可选值,最多可以有64个选项。
JSON:用于存储JSON格式的数据。
Geometry:用于存储几何类型的数据,如点、线、面等。
03 DDL - 表操作 - 修改
01 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) COMMENT ;
02 修改字段
ALTER TABLE 表名 旧的字段名 新的字段名 类型(长度) COMMENT ;
03 删除字段
ALTER TABLE 表名 DROP 字段名;
04 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
04 DDL - 表操作 - 删除
01 删除表
DROP TABLE IF EXISTS 表名
02 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
02 修改字段
ALTER TABLE 表名 旧的字段名 新的字段名 类型(长度) COMMENT ;
03 删除字段
ALTER TABLE 表名 DROP 字段名;
04 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
04 DDL - 表操作 - 删除
01 删除表
DROP TABLE IF EXISTS 表名
02 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;