Msql基本语法
1. schemata表
schema_name -- 用来存储数据库名
2. tables 表
table_schema -- 用来存储数据库名
table_name -- 用来存表名
3. columns 表
table_schema -- 数据库名
table_name -- 表名
column_name -- 字段名 (列名)
(二)数据库管理
1. 创建数据库
create database [数据库名];
2. 删除数据库
drop database [数据库名];
3. 查看数据库
show databases
4. 进入数据库
use [数据库名];
5. 查看数据表
show tables;
(三)数据表管理
1. 创建数据表
create table [表名] (
[列名] [类型] not null, -- 不允许为空
[列名] [类型] null, -- 允许为空
[列名] [类型] default [值] -- 如果插入数据为空时 默认的值
)default charset=utf8; -- 设置编码为utf8
2. 删除表
drop table [表名];
3. 清空表
delete from [表名];
truncate table [表名]; -- 速度快 但是无法撤销操作
(四)修改表
1. 查看列
desc [表名];
2. 添加列
alter table [表名] add [列名] [类型] default [默认值];
3. 删除列
alter table [表名] drop column [列名];
4. 修改列类型
alter table [表名] modify column [列名] [类型];
5. 修改列 类型+名称
alter table [表名] change [原列名] [新列名] [新类型]
6. 添加主键
alter table [表名] alter [列名] set default [值];
(五)常见的列类型
1. 整数类型
int -- 有符号整数,取值范围 -2147483648 ~ 2147483648
int unsigned -- 无符号整数,取值范围 0 ~ 4294967295
int(5)zerofill -- 用于显示 当不足5位时自动在前面补0
tinyint -- 有符号整数 -128 ~ 127
tinyint unsigned -- 无符号整数 0 ~ 255
bigint -- 有符号整数
bigint unsigned -- 无符号整数
2. 小数类型
decimal ([小数整体长度] , [保留多少位小数])
float ([小数整体长度] , [保留多少位小数]) -- 单浮点数,非精确小数值
double ([小数整体长度] , [保留多少位小数]) -- 双浮点数
3. 字符串类型
char ([长度]) -- 固定长字符串 最多支持 255 个字符
varchar ([长度]) -- 变长字符串 最多可容纳 65535 个字节
text -- 常用于保存边长大字符串 可以保存 65535 (2**16 -1) 个字符
4. 时间类型
datetime --YYYY-MM-DD HH:MM:SS (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)
timestamp --YYYY-MM-DD HH:MM:SS (1970-01-01 00:00:00 ~ 2037-12-31 23:59:59)
date --YYYY-MM-DD (1000-01-01 ~ 9999-12-31)
time --HH:MM:SS (-838:59:59 ~ 838:59:59)
(六)数据表的增删改查
1. 新增数据
insert into [表名] ([列名],[列名],[列名]) values([对应列值],[对应列值],[对应列值])
2. 删除数据
delete from [表名] where [条件];
3. 修改数据
update [表名] set [列名]=[值] where [条件]
update [表名] set [列名]=concat([列名]+[值]) -- 字符串拼接
4. 查询数据
select [列名] from [表名] where [条件]
select * from [表名] where [条件] --查询某表下面的所有列
(七)条件语句 + 其他
and --前后两个条件必须成立
/*
2-1=1 or 2+1=3 返回真
2-1=1 or 2+1=2 返回假
2-1=0 or 2+1=2 返回假
*/
or --前后两个条件只需要满足一个即可
/*
2-1=1 or 2+1=2 返回真
2-1=0 or 2+1=2 返回假
*/
like [%数据%] --模糊匹配
# %在mysql中是 通配符
between --介于什么之间
# between 1 and 4 介于2和4之间
(八)数据表排序
order by [列] asc; -- 正序
order by [列] desc; -- 倒序
# 多列排序
order by [列] asc,[列] desc;
# 例
select * from test order by name desc -- 查询 test表 按name列 进行倒序排序
(九)取部分数据
limit [第几列],[取出多少行数据]
-- 例
select * from test limit 0,1 -- 查询 test表 从第0个位置取1条数据
select * from test limit 1 -- 查询 test表 取第一条数据
offset -- 起始位置
-- 例
select * from test limit 1 offset 0 -- 查询 test表 从第0个位置取1条数据
(十)联合查询
union -- 列数需要相同
# 例
select * from test union select * from test1 -- 自动去重
select * from test union all select * from test1 -- 不去重 保留所有
(十一)注释
/*
一、 注释符:
1. #
2. --
3. /**/ 支持行注释
二、 内联注释
1. /*! SQL语句 */ 只有Mysql可以识别 常用于绕过 WAF
*/