当前位置:网站首页>MySql的DDL和DML和DQL的基本语法
MySql的DDL和DML和DQL的基本语法
2022-07-26 13:48:00 【你不懂我的风花雪月】
在Mysql的学习过程中,比较常用就是:DML,DDL和DQL,下面就对这几个常用语句进行详细的介绍,三种语言常用的命令如下图所示:

一、DDL(数据自定义语句)
1.creat:通常用这个命令来创建一个数据库或者创建一个数据表,语法如下:
①create database 数据库名; --创建一个数据库
②create table 表名(
字段名 数据类型 属性 约束条件,
字段名 数据类型 属性 约束条件,
.....
字段名 数据类型 属性
);
我们在建立数据表的时候,语句里面有几个需要注意的地方:
a.属性和约束条件不是必须的,可以省略
b.最后一个字段后面是没有 , 的
c.同一张表中,字段名是不能相同的
这两个语句的用法如下图所示(关于语句中的属性和约束,后面我会发文章详细描述:

2.drop:通常会用这个命令来删除数据表,也会和其他命令一起使用来删除表中的字段,常用命令如下:
①drop table 表名 -- 删除数据表
3.alter:通常用这个命令来修改表的结构
①alter table 旧表名 rename as 新表名; --修改表名
②alter table 表名 modify 字段名 列类型【属性】; --修改字段属性
③alter table 表名 change 旧字段名 新字段名 列类型 【属性】 --修改字段名和属性
需要注意的是上面modify和change两个语句都可以修改字段的属性,不同的是change同时可以修改字段的名称,但是modify不行
④alter table 表名 drop 字段名; --删除字段
⑤alter table 表名 add 字段名 类型 属性; -- 添加字段
以上几条语句的简单用法如下图所示:

二、DML(数据操作语句)
1.insert:通常用这条语句来新增数据,下面就来给学生表中新增一些数据
①insert into 表名(字段1,字段2.....)values (字段1对应类型的值,字段2对应类型的值.....);
-- 新增数据(这里需要注意的一点是我们在新增日期类型数据时要用字符串表示)

2.update:修改数据
①update 表名 set 字段名=值(注意是修改后的值) where 条件; -- 修改数据

3.detele:删除数据
① delete from 表名 where 条件;
②truncate 【table】 表名;-- 这个语句很简单就是清空一张表的数据,其中table可以省略
三、DQL(数据查询语句) 这个语句在数据库中是比较重要的,具体语句如下:
单表查询:
1.简单查询语法
①select 字段/* from 表名; --从一张表里查询相应的数据(*表示全部数据)
②select 字段 新字段名 from 表名: --在查询字段数据时可以给字段起别名
③select distinct 字段名 from 表名; --可以对查询出来的数据做去重处理

2.DQL条件查询语法(关于条件查询有几个关键字,下面这些例子就是这些关键字的简单用法)
①where关键字(条件查询)
select 字段名 from 表名 where 条件;
② like关键字(模糊查询):经常会和%(表示若干个字符)_(表示一个字符)一起使用
select 字段名 from 表名 where 字段 like 条件;
③in关键字(范围查询)
select 字段名 from 表名 where 字段 in (值1,值2....);

③null值查询:这里需要注意的是,对null值查询的关键字要用is

④group by分组查询和having(分组查询):经常会和聚合函数一起使用
select 字段 from 表名 group by 字段名 having 条件;
常用的聚合函数: avg(字段名)——求平均值,sum(字段名)——求和 ,max(字段名)——求最大值, min(字段名)——求最小值, count(字段名)——求总和,这五个聚合函数的是用的比较频繁的,用法也不是很复杂,下面就举一个和分组查询相结合的例子:

⑤order by(排序):这里需要主要的是在排序时要搭配两个关键字 asc(升序排序,可以省略)和desc(降序排序,不可省略,如果省略系统会默认为升序)
select 字段 from 表名 order by 字段名 desc/asc;

⑥limit(限制查询关键字):通常用来限制查询页数
select 字段 from 表名 limit n,m;--通俗的讲就是查询从第n(不包含n)条数据开始,长度为m的几条数据,经常会用这个关键字来实现数据的分页查询,此时n和m的值就可以用公式来表示
n=(页码-1)*每页显示的数据数量,m=每页显示的数据数量

3.DQL高级查询语句
①多表联查
非等值查询:select * from 表1,表2;--需要注意的是这种不加判断的查询方法,查询出来的数据会有重复,可能得不到想要的数据,所以大多数情况下我们会采用等值联查的方式查询数据。
等值查询:
a.内联查询:
写法一:SELECT 字段名 FROM 表名... where 条件判断 AND 条件判断

写法二:select * from 表名 inner join 表名 on 等值条件判断 where 条件;

以上两种写法都可以达到同样的查询效果,我们可以根据自己的需要来选择使用哪种查询方式
b. 外联查询:
select * from 表名 left join 表名 on 等值判断条件 where 判断条件;--左联查
select * from 表名 right join 表名 on 等值判断条件 where 判断条件;--右联查

外联查询和内联查询,虽然都可以拿到我们想要查询的数据,他俩还是有一些区别:

如上图所示:
a.内联查询:select * from 表A inner join 表B on 等值判断条件;
这条内联查询语句其实就是查询 表A 和 表B 共有的数据 集C
b.左外查询:select * from 表A left jion 表B on 等值判断条件;
这条左联查询语句其实就是将 jion 左边的表A作为主表,先拿出表A所有的数据,然后 再根据等值判断条件,查询出表A和表B共有的数据集 C,所以查询的结果就是图中:表A数据集+C数据集
c.右联查询:select * from 表A right join 表B on 等值判断条件;
这条右连结查询语句的原理和左连接差不多,只是把join右边的表B作为主表,先查询出表B中所有的数据,然后在根据判断条件查询出表B和表A共有的数据集C,所以得到的结果就是图中: 表B数据集+C数据集
再强调一点,左联和右联的判断依据是jion关键字的左边和右边作为主表。
②子查询
a.where子查询(把查询出来的数据集作为where后面的条件判断)
如下图所示,将学号最大的学生查询出来作为where判断的条件,where子查询的写法

b.from子查询(把内层的查询结果当成一个临时表,供外层的查询来用,临时表在使用时最好要起个别名)

c. exist子查询(exists后面跟上内层查询,如果这个内层查询成立,外层查询才会生效,最终查出的结果是外层查询的数据)

d.any/some(这两种子查询必须和条件判断符一起使用)
select * from 表名 where a>any(2,3,4); 这条语句相当于下面这条
select * from 表名 where a>2 or a>3 or a>4;

some和any的用法是一模一样的,只是名字不同
e.all子查询(这种子查询和any类似,只是后面的需要满足全部的条件判断)
select * from 表名 where a>all(2,3,4); 这条语句相当于下面这条
select * from 表名 where a>2 and a>3 and a>4; 
边栏推荐
- The last time I heard about eBay, or the last time
- .NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI
- Pytorch学习笔记(一)安装与常用函数的使用
- Official announcement! Edweisen group and Baidu xirang reached a deep co creation cooperation
- Codeforces Round #810 (Div. 2)【比赛记录】
- 【黑马早报】字节旗下多款APP下架;三只松鼠脱氧剂泄露致孕妇误食;CBA公司向B站索赔4.06亿;马斯克否认与谷歌创始人妻子有婚外情...
- SuperMap iclient for leaflet loads Gauss Kruger projection three-dimensional zonation CGCS2000 geodetic coordinate system WMTs service
- Multi objective optimization series 1 --- explanation of non dominated sorting function of NSGA2
- B+ tree (4) joint index -- MySQL from entry to proficiency (16)
- Comparison between SIGMOD function and softmax function
猜你喜欢

白帽子揭秘:互联网千亿黑产吓退马斯克

LCL三相pwm整流器(逆变器)

Pytoch learning notes (I) installation and use of common functions
![[dark horse morning post] many apps under bytek have been taken off the shelves; The leakage of deoxidizer in three squirrels caused pregnant women to eat by mistake; CBA claimed 406million yuan from](/img/f6/03e39799db36c33a58127359aa2794.png)
[dark horse morning post] many apps under bytek have been taken off the shelves; The leakage of deoxidizer in three squirrels caused pregnant women to eat by mistake; CBA claimed 406million yuan from

《Kotlin系列》之MVVM架构封装(kotlin+mvvm)

万字长文,浅谈企业数字化建模蓝图

Concept and handling of exceptions

Win11+VS2019配置YOLOX

Tdsql-c serverless: help start-ups achieve cost reduction and efficiency increase

The last time I heard about eBay, or the last time
随机推荐
POM文件详解
B+ tree index use (9) grouping, back to table, overlay index (21)
Mobile dual finger scaling event (native), e.originalevent.touches
从标注好的xml文件中截取坐标点(人脸框四个点坐标)人脸图像并保存在指定文件夹
Canvas upload image Base64 with cropping function jcrop.js
2022年,我们只用一个月就“送走”了这么多互联网产品
php使用sqlserver
Thoughts on the compilation of Dr. Shuo's opening report
Familiarize you with the "phone book" of cloud network: DNS
2022-07-26日报:Alphafold DB数据库建立一周年,官推盘点亮点研究
Ros2 learning (1) introduction to ros2
消息的订阅和发布
[beauty of open source] nanomsg (2): req/rep mode
估值15亿美元的独角兽被爆裁员,又一赛道遇冷?
历时15年、拥有5亿用户的飞信,彻底死了
Multithreaded completable future usage
Docker container MySQL enables binlog and scheduled backup
华为机考 ~ 偏移量实现字符串加密
Videojs to canvas pause, play, switch video
The picture moves horizontally with the phone - gyroscope. 360 degree setting conditions