MySQL——语法

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

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

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


一、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;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,271评论 6 524
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,533评论 3 405
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,580评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,203评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,204评论 6 401
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,664评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,014评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,991评论 0 280
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,536评论 1 326
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,558评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,678评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,267评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,997评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,429评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,580评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,259评论 3 382
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,744评论 2 366

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,821评论 5 116
  • title: MySQL学习笔记一之MySQL语法tags: MySQL 数据库categories: MySQL...
    codingXiaxw阅读 673评论 0 9
  • 1 : 基础语法--------- 对实体集 的操作 ------------select 查询create ...
    记住你姓李阅读 449评论 0 3
  • 最有价值的知识是关于方法的知识。 ———达尔文【英】 路漫漫其修远兮,吾将上...
    珂珂0718阅读 138评论 0 0
  • 我眼睁睁看着时间走过;眼睁睁的看着离开是如何写在今天的;眼睁睁的却舍不得眨眼;时间留不住,人也留不住,到点就必须...
    李沧海的裙摆阅读 325评论 0 1