200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > MySQL(二) DDL DML DQL DTL概述

MySQL(二) DDL DML DQL DTL概述

时间:2021-01-29 19:42:45

相关推荐

MySQL(二)   DDL DML DQL DTL概述

在SQL语言中,常用四种类型语言:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DTL(数据事务语言).以下,将对其各部分进行一一概述.

目录

1.DDL(Data Definition Language)2.DML(Data Manipulation Language)3.DQL(Data Query Language)4.DCL(Data Transaction Language)

1.DDL(Data Definition Language)

主要内容:对数据库/表创建、修改、删除操作

数据库创建:create database 数据库名;

数据表创建:create table 数据表名(字段1 字段类型,字段2 字段类型,...)

数据库删除:drop databases 数据库名;

数据表删除:drop tables 数据表名;

数据库修改:不提倡该操作,已被Mysql禁用

数据表修改:alter table 数据表名 add|drop|change|modify| column ....

其次,在创建表的时候,通常会对表内的字段(列)进行一定的约束,共分为以下六种:

主键约束(primary key)、自增约束(auto_increment)、唯一约束(unique)、非空约束(not null)、默认约束(default)、外键约束(foreign key)

当然,以上六种约束也可以在创建表之后添加、修改、删除

2.DML(Data Manipulation Language)

主要内容:对数据表中的值进行插入、修改、删除操作

数据插入:insert into 数据表名(字段1,字段2,...) values(值1,值2)

数据修改:update 数据表名 set 字段=值 where..

数据删除:delete from 数据表名/truncate 数据表名(仅删除表中的值,仍保留表的结构)

**(两者的区别:1.truncate效率高,但后面不能加where语句;相反,delete…from…可加where语句

2.对于具有自增约束的字段,delete from 删除后,新增字段是从断点处开始;而truncate删除后,是从1开始

3.在事务中,truncate不能回滚,delete from 可以回滚)

3.DQL(Data Query Language)

主要内容:通过查询语句实现对特定数据的筛选

基础查询

1.查询表中所有数据:select * from 数据表名

2.查询表中多个字段数据:select 字段1,字段2,... from 数据表名

3.查询表中不重复数据记录:select distinct 字段 from 数据表名

4.查询表中某个字段在区间a~b之间的数据:select * from 数据表名 where 字段 between a and b

select * from 数据表名 where 字段>a and 字段<b

5.或者关系查询:select * from 数据表名 where 字段 in (a,b,c,..)(将字段为a,b,c,. 的数据都筛选出来)

6.不同关系的或者(并)关系查询:select * where 字段1=xxx or(and) 字段2=xxx from 数据表名

7.按照某个分类字段查询:select * from 数据表名 group by 字段

8.查询某个字段(如成绩)并按照降(升)序排列:select * from 数据表名 order by grade desc(asc)

9.统计某个字段的个数:select count(*) from 数据表名 where 字段=xxx

10.查询某个字段的个数大于某个数num:select * from 数据表名 having count(字段)>num

高级查询

1.函数筛选(最大、最小、平均、求和):select max/min/avg/sum(字段) from 数据表名

2.子查询(如从成绩表中筛选出最高分的学生姓名与年龄):select name,age from score where grade=(select max(grade) from score)

3.多表查询:select 字段1,字段2 from 表1,表2 where 表1.字段13=表2.字段23

select * from 表1 inner/left/right/full join 表2 on 表1.字段1=表2.字段2

4.复杂查询的一般结构:select...from 数据表名 where...group by..having ... order by ...limit

5.正则查询:select * from 数据表名 where 字段 regexp 正则表达式

select * from 数据表名 where 字段1 like '%a'(查询字段1以a开头的数据)

select * from 数据表名 where 字段2 like 'a%'(查询字段2以a结尾的数据)

select * from 数据表名 where 字段3 like ''%a%(查询字段3包含a的数据)

4.DCL(Data Transaction Language)

主要内容:处理操作量大,复杂程度高的数据

事务定义:最小的不可分隔的单元。一般是由多条sql语句构成一个事务,然后共同完成一个业务(如转账)

事务特性:原子性、一致性、隔离性、持久性

事务控制语句:开启:begin/start transaction

回滚:rollback

提交:commit

事务隔离性:

1、read uncommitted ; 读未提交 -------事务a对数据进行操作过程中,事务没有被提交,但是b可以看到a操作的结果(一个rollback,另一个可以看到撤回的结果)

2、read committed ;读已提交

3、repeatable read ;可以重复读

4、serializable; 串行化 —事务a和事务b同时操作一张表,如果有一方想要插入数据,要等到事务b commit 后才能进行(会有等待超时)

查看隔离库级别:select @@global.transaction_isolation

修改隔离级别:set global transaction isolation level read uncommitted

脏读:事务a读到了事务b没有提交的数据 (uncommitted 情况下)

幻读:事务a和事务b同时操作一张表,事务a提交的数据,不能被事务读到(repeatable read情况下)

最后,我绘制了关于Mysql学习的思维导图,详细内容会在今后分享中说明.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。