1、sql 通用语法
(1)sql 语句 可以单行或者多行书写 ,以 分号结尾
(2)sql 语句 可以使用空格、缩进 增强语句的可读性
(3)mysql 数据库的 sql 语句不区分大小写,关键字 建议使用 大写
(4)注释:单行 -- 或 # , 多行 / * * /
2、sql 分类
(1)DDL 数据库定义语言 , 新增 数据库、表、字段
(2)DML 数据库操作语言 , 增删改表中数据
(3)DQL 数据库查询语言 , 查询表中记录
(4)DCL 数据库控制语言 , 创建数据库用户、控制数据库访问权限
3、DDL ==> 数据库定义语言
(1)数据库 DDL
# 数据库 DDL 操作
# show / create(if not exists / drop (if exists) / use / select
# 1、查询数据库 -- 查询所有数据库 ;
show databases ;
\c
# 2、修改数据库 -- 创建数据库 ;
create database my_db_0 ;
\c
# 3、修改数据库 -- 创建数据库,已存在则取消命令 ;
create database if not exists my_db_0 ;
\c
# 4、修改数据库 -- 创建数据库,设置字符编码类型 UTF - 8 ;
create database my_db_1 default charset utf8mb4 ;
\c
# 5、修改数据库 -- 删除数据库 ;
drop database my_db_0 ;
\c
# 6、修改数据库 -- 删除数据库,不存在则取消命令 ;
drop database if exists my_db_0 ;
\c
# 7、修改数据库 -- 使用数据库 ;
use my_db_0 ;
\c
# 8、查询数据库 -- 查询当前使用的数据库 ;
select database();
\c
(2)表 DDL
# 表 DDL 操作
# show / create / drop / truncate / desc
# 表中字段 DDL 操作
# alter ...... add / change / modify / rename / drop
# 1、查询表 -- 查询所有表 ;
show tables ;
\c
# 2、查询表 -- 查询表结构 ;
desc table user ;
\c
# 3、查询表 -- 查询指定表的建表语句 ;
show create table user ;
\c
# 4、创建表 -- 字段设置 ;
create table my_table(
id int default null comment '编号' ,
name varchar(50) default null comment '姓名' ,
age int default null comment '年龄' ,
gender varchar(1) default null comment '性别'
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci
comment = '用户表' ;
\c
# 5、修改表 -- 增加字段 ;
alter table my_table add test_column varchar(10) comment '测试字段';
\c
# 6、修改表 -- 修改字段名称和类型 ;
alter table excel change test_column test_change_column varchar(100);
\c
# 7、修改表 -- 修改字段类型 ;
alter table excel modify test_change_column int(100);
\c
# 8、修改表 -- 修改表名称 ;
alter table excel rename to my_alter_test;
\c
# 9、修改表 -- 删除表字段 ;
alter table excel drop my_column;
\c
# 10、删除表
drop table if exists my_table;
\c
# 11、重做表 -- 先删除,再重建表结构
truncate table my_table;
\c
4、Mysql 数据类型
(0)长度标识
类型 | 大小 ( bytes ) | 备注 |
tiny | 2 ^ 8 - 1 | 255 |
small | 2 ^ 16 - 1 | 65535 |
medium | 2 ^ 24 - 1 | 16777215 |
long | 2 ^ 32 - 1 | 4294967295 |
big | 2 ^ 64 - 1 | 1.8446744073709552E19 |
(1)数值类型
类型 | 大小 ( bytes ) | 有符号范围 ( singed) | 无符号范围 ( unsinged) | 备注 |
TINYINT | 1 | - 2 ^ 7 ~ 2 ^ 7 - 1 | 0 ~ 2 ^ 8 - 1 | 极小整数 |
SMALLINT | 2 | - 2 ^ 15 ~ 2 ^ 15 - 1 | 0~ 2 ^ 16 - 1 | 小型整数 |
MEDIUMINT | 3 | - 2 ^ 23 ~ 2 ^ 23 - 1 | 0~ 2 ^ 24 -1 | 中等整数 |
INT | 4 | - 2 ^ 31 ~ 2 ^ 31- 1 | 0~ 2 ^ 32 - 1 | 普通整数 |
BIGINT | 8 | - 2 ^ 63 ~ 2 ^ 63 - 1 | 0~ 2 ^ 64 - 1 | 大型整w数 |
FLOAT | 4 | - 3.40E + 38 ~ 3.40E + 38 | 单精度浮点值 | |
DOUBLE | 8 | - 1.79E + 308 ~ - 1.79E + 308 | 双精度浮点值 | |
DECIMAL | 精确型小数值 |
(2)字符串类型
类型 | 大小 ( bytes ) | 备注 |
CHAR | 0 ~ 2 ^ 8 - 1 | 定长字符串,长度为默认长度,用空间换时间,如性别 |
VARCHAR | 0 ~ 2 ^ 16 - 1 | 变长字符串,计算长度设置长度,用时间换空间,如姓名 |
TINYBLOB | 0 ~ 2 ^ 8 - 1 | 极小型二进制数据 |
TINYTEXT | 0 ~ 2 ^ 8 - 1 | 极小型短文本字符串 |
BLOB | 0 ~ 2 ^ 16 - 1 | 二进制形式长文本数据 |
TEXT | 0 ~ 2 ^ 16 - 1 | 长文本数据 |
MEDIUMBLOB | 0 ~ 2 ^ 24 - 1 | 二进制形式中等长度文本数据 |
MEDIUMTEXT | 0 ~ 2 ^ 24 - 1 | 中等长度文本数据 |
LONGBLOB | 0 ~ 2 ^ 32 - 1 | 二进制形式极大长度文本数据 |
LONGTEXT | 0 ~ 2 ^ 32 - 1 | 极大长度文本数据 |
(3)日期时间类型
类型 | 大小 ( bytes ) | 备注 |
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 |