一SQL通用语法
1)SQL语句可以单行或多行书写,以分号结尾。
2)SQL语句可以使用空格/缩进来增强语句的可读性
3)MYSQL数据库的SQL不区分大小写,关键字建议使用大写
4)注释:
单行注释:–注释内容 或#注释内容(MYSQL特有)
多行注释:/*注释内容*/
二 SQL分类和使用
2.0 分类
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据库定义语句,用来定义数据库对象(数据库,表,字段,索引) |
DML | Data Manipulation Language | 数据操作语句,用来对数据库表的数据进行增修改 |
DQL | Data Query Language | 数据查询语句,用来查询数据库中表的记录 |
DCL | Data ContrloLanguage | 数据控制语句,用来创建数据库用户,控制数据库的访问权限 |
2.1 DDL
2.1.0 DDL----数据库操作
1]查询数据库
查询所有数据库:
SHOW DATABASES;
查询当前数据库:
SELECT DATABASE();
2]创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
3]删除数据库
DROP DATABASE[IF EXISTS] 数据库名;
4]使用数据库
USE 数据库名;
PS : 方括号中代表可选,实际如果要使用不加方括号
2.1.1 DDL-表操作-查询
1】查询当前数据库所有表
SHOW TABLES;
2】查询表结构
DESC 表名;
3]查询指定表的建表语句
SHOW CREATE TABLE 表名;
ENGINE=InnoDB DEFALUT CHARSET=utf8mb4 COLLATE=utf8mb_0900_ai_ci COMMENT=‘用户表’
存储引擎 默认的 字符集 排序规则 注释
2.1.2 DDL-表操作-创建
建表
CREATE TABLE 表名(
字段1 字段1的类型 COMMENT '注释',
字段2 字段2的类型 COMMENT '注释',
字段3 字段3的类型 COMMENT '注释'
)COMMENT ‘注释’;
2.1.3 DDL-数据类型
1)数值型数据
类型 | 大小 | 无符号前缀 | 描述 |
---|---|---|---|
TINTINT | 1字节 | UNSIGNED | 小整型 |
SMALLINT | 2字节 | UNSIGNED | 小整型 |
MEDIUMINT | 3字节 | UNSIGNED | 小整型 |
INT或INTEGER | 4字节 | UNSIGNED | 大整型 |
BIGINT | 8字节 | UNSIGNED | 极大整型值 |
FLOAT | 4字节 | UNSIGNED | 单精度浮点型 |
DOUBLE | 8字节 | UNSIGNED | 双精度浮点型 |
DECIMAL | 大小取决于M(精度)和标度D(标度) | UNSIGNED | 小数值(精度确定) |
1.56为例:精度为3代表整个数值的长度,标度为2代表小数的位数;
存储数据的时候我们尽考略实际意义和存储大小如年龄的范围一般用TINYINT即可;
age TINYINT UNSIGNED
如分数:socre double(4,1) 即可 具体情况具体分析
2)字符串型数据
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0~255字节 | 定长字符串 |
VARCHAR | 0~65535字节 | 变长字符串 |
TINYBLOB | 0~255字节 | 不超过255个字符的二进制数据 |
BLOB | 0~65535字节 | 二进制长文本数据 |
MEDIUMBLOB | 0~16 777 215字节 | 二进制形式中的中等长度文本数据 |
LONGBLOB | 0~4 294 967 295字节 | 二禁止形式的极大文本数据 |
TINYTEXT | 0~255字节 | 短文本字符串 |
TEXT | 0~65535字节 | 长文本数据 |
MEDIUTEXT | 0~ 16 777 125字节 | 中等长度文本数据 |
LONGTEXT | 0~4 294 967 295字节 | 极大文本数据 |
定长字符串:char(10)即使只存储1个字符也会占用10个字符的空间,其他空间空格补上
变长字符:varchar(10)如果只使用了1个字符就只占用一个字符的空间
char-----------------性能高,节省时间
varhar---------------性能没那么高,因为varchar会有一个运算计算实际的空间,节省空间
定长一般使用char,变长一般使用varchar
3)日期类型
类型 | 大小 | 格式 | 描述 |
---|---|---|---|
DATE | 3 | YYYY-MM-DD | 日期时间 |
TIME | 3 | HH:MM:SS | 时间值或实际时间值 |
YEAR | 1 | YYYY | 年份值 |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和时间日期 |
TIMESTAMP | 4 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
TIMESTAMP 最多描述到2038年
YYYY-----年
MM--------月
DD---------日
HD---------时
MM---------分
SS----------秒
2.1.4 DDL-表操作-修改
1)添加字段
ALTER TABLE 表名 ADD 字段名 字段类型(长度) [comment 注释] [约束];
2)修改字段
1】修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
2]修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [comment 注释] [约束]
3】删除字段
ALTER TABLE 表名 DROP 字段名;
4]修改表名
ALTER TABLE 表名 RENAME TO 新表名;
5]删除表
PS: 方括号中为可选选项
DROP TABLE [IF EXISTS] 表名;
两者的区别在于前者如果表名不存在不会报错,而后者会;
DROP TABLE 表名;
6]清空表的数据,只留下表的结构
TRUNCATE TABLE 表名;