三分钟让你学会数据库的DML和DQL #数据查询语言

🐎本期分享SQL语言的DML和DQL,数据增删改查

上一期我们已经了解了DDL(数据定义语言),本期让我们继续深入,看看怎么对数据库的数据进行操作的吧。


目录

  • 🐎本期分享SQL语言的DML和DQL,数据增删改查
  • 一、DML(数据的增加删除和修改)
    • 1、插入数据
    • 2.修改数据
    • 3、删除数据
    • 4、清空数据
  • 二、DQL(数据查询)
    • 1、select基本语句查询
    • 2、运算符
    • 3、where条件查询
    • 4、模糊查询
    • 5、in关键字查询
    • 6、between关键字查询
    • 7、distinct关键字查询(去重)
    • 8、order by关键字查询
    • 9、limit关键字查询
    • 10、内连接查询
    • 11、隐式内连接查询
    • 12、左(右)外连接查询
    • 13、聚合函数
    • 14、嵌套查询
    • 15、any/some嵌套
    • 16、all子查询
    • 17、exist子查询
    • 18、not exist子查询
      • 🐂未完待续


一、DML(数据的增加删除和修改)

1、插入数据

INSERT [INTO]
表名 [字段名]
VALUES (值列表);

首先我们可以先创建一个表

create table students(
    id int auto_increment primary key,
    name varchar(20),
    age int,
    height float,
    gender char(10),
    cls_id int,
    is_delete int
);

create table teachers(
    id int primary key,
    name varchar(20)
);

create table classes(
    id int primary key,
    teacher_id int,
    cls_content varchar(100),
    cls_date datetime,
    name varchar(50)
);

然后又两种方式进行数据的插入(代码举例):

方法一:insert into students (id,name,age,height,gender,cls_id,is_delete)

方法二:insert into students values (0,'小明',18,180.00,2,1,0)

第一种方法提供了数据插入的字段名,第二种方法隐藏了字段名,方法一还可以指定插入某些字段的数据,而方法二必须一一对应否则:
在这里插入图片描述
正确效果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来查看表中数据
在这里插入图片描述
可以发现,用指定字段的方法可以使age字段的值为空

2.修改数据

UPDATE 表名 SET 字段1=值1,
字段2=值2,…,字段n=值n
[WHERE 条件];

在这里插入图片描述
可以添加where来指定更新的字段,这里修改了全部的age值

3、删除数据

DELETE FROM 表名
[WHERE条件];

这里要与删除数据库、删除数据表、删除字段进行区分
删除库 drop database db;
删除表 drop table students;
删除字段 alter table students drop id;
删除数据 delete from table students where id;
在这里插入图片描述

4、清空数据

TRUNCATE TABLE 表名;

此处的清空数据效果同delete * from table 清空了表的数据,表依然存在,但是此方法不能加条件where

二、DQL(数据查询)

DQL是Data Qurey Language英文缩写,数据查询语言
常用语句:
基本查询语句、条件查询、多条件查询、模糊查询、分组查询、连接查询、子查询
关键字:
AS、运算符、IN、BETWEEN AND、DISTINCT、ORDER BY、LIMIT

1、select基本语句查询

select 列名 from 表名

这里我先将数据通过Nivacat快速导入进原先创建好的三个数据表,如下图
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
🐎而后我们在命令行使用SQL语句进行查找验证(可以添加约束条件)
在这里插入图片描述
然后查找所有同学的身高与姓名
在这里插入图片描述
最后查找身高为180的同学
在这里插入图片描述

2、运算符

算术运算符 + - * / %
关系运算符 > < = <> >= <= !=
赋值运算符 =
逻辑运算符 and or not && || !

查找id为1或3的同学
在这里插入图片描述
或者用 or
在这里插入图片描述

3、where条件查询

SELECT 列名
FROM 表名
WHERE 条件 运算符 条件

添加as的查询
在这里插入图片描述

4、模糊查询

SELECT 列名
FROM 表名
WHERE 字段
LIKE ‘值’

在这里插入图片描述
在这里插入图片描述

5、in关键字查询

SELECT 列名
FROM 表名
WHERE 字段
IN (值1,值2,…);
在这里插入图片描述
还可以添加not在这里插入图片描述

6、between关键字查询

SELECT 列名
FROM 表名
WHERE 字段
BETWEEN 值1 and 值2;

在这里插入图片描述

7、distinct关键字查询(去重)

SELECT DISTINCT
字段名1,字段名2…
FROM 表名;

示例:查询性别有几种分类
select distinct gender from students;
示例:查询有几个班级
select distinct cls_id from students;

在这里插入图片描述

8、order by关键字查询

SELECT <字段名列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序的列名>
[ASC 或 DESC]];

在这里插入图片描述
逆序排

在这里插入图片描述

9、limit关键字查询

SELECT <字段名列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序的列名> [ASC 或 DESC]]
[LIMIT <行数>];

select * fron students limit 2;
显示前两行数据

在这里插入图片描述

select * from students limit 0,6 (从第0+1个开始此页面显示6个数据)
分页显示

在这里插入图片描述

10、内连接查询

SELECT 字段 FROM 表1
INNER JOIN 表2
ON 连接条件
[WHERE 条件]

查看学生所在班级
select s.name,s.name from students s inner join classes s on s.cls_id=c.id;

在这里插入图片描述

11、隐式内连接查询

SELECT 字段
FROM 表1,表2
WHERE 表1.条件=表2.条件

在这里插入图片描述

12、左(右)外连接查询

SELECT 字段 FROM 表1
RIGHT(LEFT) [outer] JOIN 表2
ON 连接条件
WHERE 条件

讲白了就是以哪一方为主体来连接
在这里插入图片描述

13、聚合函数

1.count()-计数 2.sum()-求和 3.max()-最大值 4.min()-最小值 5.avg()-平均值

SELECT 聚合函数<字段>
FROM 表名
[WHERE 条件]
[GROUP BY 聚合函数]

在这里插入图片描述

14、嵌套查询

例:select * from students where cls_id = (select cls_id from students where name = ‘刘德华’);

和刘德华同班的同学
在这里插入图片描述

15、any/some嵌套

查看赵老师所带的学生信息
在这里插入图片描述
使用ANY关键字允许cls_id与子查询返回的任何一个值匹配,这意味着如果一个学生属于由“赵老师”教授的任何一个班级,他/她的记录就会被选中。此外,这条语句假设了每个表(teachers、classes、students)中相应的列(id、name、teacher_id、cls_id)都存在且数据类型匹配

16、all子查询

>all:赵老师不带的班级的学生

select * from students where cls_id >= all(select id from classes where teacher_id = (select id from teachers where name='赵老师'));

在这里插入图片描述

17、exist子查询

DROP TABLE IF EXISTS temp;
例: 查看王老师存在的班级表

在这里插入图片描述
exist接收的返回值为1即可

18、not exist子查询

示例:创建教师表
create table IF NOT EXISTS teachers(
id int primary key,
name varchar(20)
);

作用:避免重复创建

🐂未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值