MySQL——语法

数据库排名:
Oracle(关系型)
MySQL(关系型)
SQLServer(关系型)
PostgreSQL(关系型)
MongoDB(非关系数据库)
DB2(关系型)
Redis(非关系数据库)
ElasticSearch(非关系数据库)

SQL语句(结构化查询语言)

DDL(数据定义语言):create / drop / alter
DML(数据操作语言):insert / delete / update / select
DCL(数据控制语言):grant / revoke
前言:SQL中大小写不敏感(大写和小写是一样的); 每条SQL语句必须以分号结束


一、DDL(数据定义语言)

主要提供数据库和表的创建、删除和修改

1. 创建数据库
语法 功能
create database 数据库名; 直接创建指定数据库
create database if not exists 数据库; 当指定数据库不存在的时候才创建数据库
create database if not exists 数据库 default charset utf8; 创建数据库时设置字符集编码方式为utf8,让数据库支持中文数据存储
2.删除数据库
语法 功能
drop database 数据库; 直接删除指定数据库
drop database if exists 数据库; 如果指定的数据库存在就删除数据库
3. 使用/切换数据库
语法 功能
use 数据库; 使用/切换指定数据库
4. 新建表
语法 功能
create table if not exists 表(字段1 类型1, 字段2 类型2,...); 新建表,表名一般加前缀't'或'tb',字段名不能是关键字
create table if not exists 表(字段1 类型1 约束1, 字段2 类型2 约束2,...); 新建表并且添加约束
5. 删除表
语法 功能
drop table if exists 表; 删除指定表
truncate table 表; 清空指定表
6. 修改表
语法 功能
alter table 表 add column 字段 类型 约束; 添加列
alter table 表 drop column 字段; 删除列

二、DML(数据操作语言)

主要针对数据库中数据的增、删、改、查

1. 增
语法 功能
insert into 表 values(值1, 值2, 值3,...); 插入数据,依次给指定表中的字段赋值
insert into 表(字段1, 字段2,...) values(值1, 值2,...); 插入数据,以指定顺序给指定字段赋值,可一次插入多条数据,用逗号分开

(注)时间函数:now() - 当前时间;date(now()) - 当前日期;year(now()) - 当前年;month(now()) - 当前月

2. 删
语法 功能
delete from 表; 删除指定表中所有记录
delete from 表 where 条件语句; 删除满足条件的记录
3. 改
语法 功能
update 表 set 字段1=新值1, 字段2=新值2,...; 将指定表中所有行的指定列/字段的值赋值为新值
update 表 set 字段1=新值1, 字段2=新值2,... where 条件语句; 将表中满足条件的行中指定列/字段的值赋值为新值
4. 查
语法 功能
select * from 表; 获取指定表中所有行和所有的列(所有数据)
select 字段1,字段2,... from 表; 获取指定表中所有行指定的列
select * from 表 where 条件; 获取指定表中所有满足条件的行所有列的数据
select 字段1 as 新字段1, 字段2 as 新字段2,... from 表; 列重命名(as可以省略)
select if(字段,值1,值2) from 表; (MySQL写法)查询指定字段,字段真则结果为值1,假则结果为值2
select case 字段 when 值 then 新值1 else 新值2 end; (通用写法)查询指定字段并将结果重新赋值
select concat(字段1,字段2,...) from 表; 对列进行合并,数字和字符串数据可合并,bit类型数据不可合并
排序:(先按之前的任何语法进行查询再排序)
select * from 表 order by 字段; 对查询结果按照指定字段的值进行升序排序
select * from 表 order by 字段 asc; 对查询结果按照指定字段的值进行升序排序
select * from 表 order by 字段 desc; 对查询结果按照指定字段的值进行降序排序
注:多个字段排序,写在前面的优先级高
限制:
select * from 表 limit N; 获取查询结果的前N条记录
select * from 表 limit M offset N; 对查询结果跳过前N条数据,取M条数据出来
去重:
select distinct 字段 from 表; 查询结果去重
5. 条件语句

在SQL中可以通过 where 条件语句,来对操作对象进行筛选

条件语句:

语法 功能
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
is/is not 判断是否等于null空时使用
and 逻辑与运算
or 逻辑或运算
not 逻辑非
in 集合中是否包含
like 模糊查询
% 表示0个或多个的任意字符
_ 表示一个任意字符
between 值1 and 值2 筛选指定字段的值在值1和值2之间
6. 数据类型
名称 功能
int/tinyint(-128~127) 整数
float(size,d)/double(size,d) 浮点数,这儿的size和d的值都有约束效果
char(size) 定长字符
varchar(size) 不定长字符串,size决定的是最大长度
text 不限长度(最大是255个字符)
bit 布尔,只有0和1两个值
date/datetime/time 值可以是时间函数的结果,也可以是时间字符串;计算或者是比较的时候内部是按时间处理的
7. 约束

创建表的时候可以添加约束

约束索引:

语法 功能
alter table 表 add constraint 索引 约束(字段); 添加约束,索引(自己命名),约束(支持唯一约束、主键约束和外键约束)
alter table 表 drop index 约束索引; 删除约束

常见约束:

语法 功能
not null 不为空
default 值 设置默认值
unique 值唯一
primary key(字段) 主键约束(唯一记录)
auto_increment 主键自动增长
8. 外键

添加外键:

语法 功能
alter table 表1 add constraint 索引 foreign key (字段1) references 表2 (字段2); 将表1中字段1设为外键,让其参照表2中字段2

删除外键:

语法 功能
alter table 表 drop foreign key 外键索引; 先,删除外键约束
alter table 表 drop index 外键索引; 后,删除约束的索引
9. 聚合

max() min() sum() avg() count()

语法 功能
select 聚合函数(字段) from 表 [where 条件]; [按条件]查询后将结果做相应的聚合运算
10. 分组
语法
select 字段操作 from 表 [where 条件] group by(字段); 先筛选在分组
select 字段操作 from 表 group by(字段) [having 条件]; 先分组在筛选

where和having可同时使用
功能:将表中[满足条件]的记录按照字段分组, 再将每个分组作为整体做聚合操作,字段操作的位置除了分组字段不用聚合,其他字段都必须聚合

11. 子查询

将一个查询操作的结果作为另外一个查询的数据源

12. 连接查询
语法 功能
select * from 表1,表2,...where 表1表2连接条件...; 普通连接
select * from 表1 inner join 表2 on 表1表2连接条件 inner join 表3 on 表1表3连接条件...; 内连接
select * from 表1 left join 表2 on 表1表2连接条件...[where 条件]; 左外连接,右表值不存在则为null
select * from 表1 right join 表2 on 表1表2连接条件...[where 条件]; 右外连接,左表值不存在则为null
13. 字段索引

字段索引相当于目录,作用为快速对此字段进行查找
只针对某个查询很频繁的字段,建议添加对应索引

语法 功能
create index 索引 on 表 (字段); 添加索引
alter table 表 drop index 索引; 删除索引

三、DCL(数据控制语言)

1. 创建用户

create user '用户名'@'登录地址' identified by '密码';

登录地址 作用
localhost 数据库本机
ip地址 指定地址
% 任何位置

2. 删除用户

drop user 用户名;

3. 授权

语法 功能
grant 权限类型 on 数据库.对象 to '用户'; 为指定用户添加指定数据库指定对象的指定权限
grant 权限类型 on 数据库.对象 to '用户' with grant option; 添加权限,并且可以将自己的权限再授权给别人
revoke 权限类型 on 数据库.对象 from 用户名; 撤销/召回权限
权限类型 功能
select 查看
insert 添加
delete 删除
update 更新
create 创建
drop 删除
alter 更改
all privileges 所有权限

4. 事务

语法 功能
begin; 开启事务环境
commit; 事务提交
rollback; 事务回滚

只有begin;commit;之间的所有的sql都执行成功,才会执行commit;否则执行rollback;

你可能感兴趣的:(MySQL——语法)