MySQL(二) DDL、DML、DQL、DTL概述

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

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学习的思维导图,详细内容会在今后分享中说明.
在这里插入图片描述

发布了20 篇原创文章 · 获赞 3 · 访问量 1193

猜你喜欢

转载自blog.csdn.net/shine4869/article/details/103985430