当前位置: 首页 > news >正文

数据库操作语言(DML)

数据库操作语言(DML)

一、四种操作

  1. 数据查询 (Data Querying): 从数据库中检索数据。最常用的查询语言是SQL (Structured Query Language) 中的 SELECT 语句。
  2. 数据插入 (Data Insertion): 将新数据添加到数据库中,常用的SQL语句是 INSERT INTO
  3. 数据更新 (Data Updating): 修改数据库中的现有数据,常用的SQL语句是 UPDATE
  4. 数据删除 (Data Deletion): 从数据库中删除数据,常用的SQL语句是 DELETE FROM

二、数据的插入(增)

1、语法格式。

前提:创建验证学生表

CREATE TABLE student(
id INT(3) PRIMARY KEY auto_increment,
name VARCHAR(32),
sex VARCHAR(32),
age INT(3),
salary FLOAT(8,2),
course VARCHAR(32)
)

注意:每张表必须有且只有一个主键

理解:主键上的数据不能重复且不能为空,主键就是该数据行的唯一表示

​ PRIMARY KEY – 主键

​ auto_increment – 自动增长

​ 1.1 方式一:

INSERT INTO student VALUE(1,'小雷','women','23','99999','java');

​ 1.2 方式二:

INSERT INTO student VALUES(1,'小雷','women','23','99999','java'),(2,'小杨','men','22','99999','java');

​ 1.3 方式三:

INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小杨','men','22','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小刘','women','21','8000','Python');
INSERT INTO student(name,sex,age,salary,course) VALUE('小李','men','24','9999','HTML');
INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','HTML');

效果截图:

在这里插入图片描述

三、数据的删除(删)

1、清空表数据

方式一:

TRUNCATE student;

注意:清空表数据后,再添加数据,主键会从1开始递增

方式二:

DELETE FROM student;

经验:1、考虑到删除的数据有可能恢复,使用方式二删除数据,再恢复备份,主键不会冲突

​ 2、项目中的数据大概率不会删除,如果要做删除功能,可以在表上加一个字段来去表述该数据行是否可用(ps:0表示删除,1表示未删除)

2、单条件删除数据

DELETE FROM student WHERE id=5;

3、多条件删除数据

​ OR – 或

DELETE FROM student WHERE course='Python' OR course='HTML';

​ 效果截图:

在这里插入图片描述

​ AND – 与(并且)

DELETE FROM student WHERE course='html' and sex='women';

​ 效果截图:

在这里插入图片描述

​ IN(值1,值2,值3,…) – 删除字段上包含的数据

DELETE FROM student WHERE age IN(22,23);

​ 效果截图:
在这里插入图片描述

四、数据的修改(改)

1、修改所有数据

UPDATE student SET salary=10000;

2、单条件修改数据

UPDATE student SET salary=25000 WHERE id=1;

3、多条件修改数据

​ OR – 或

UPDATE student SET salary=30000 WHERE course='python' OR course='html';

​ 效果截图:

在这里插入图片描述

​ AND – 与(并且)

UPDATE student SET salary=40000 WHERE course='java' AND sex='women';

​ IN(值1,值2,值3,…) – 删除字段上包含的数据

UPDATE student SET salary=50000 WHERE age IN(22,23,24);

4、修改多个数据

UPDATE student SET age=20,salary=60000 WHERE id=2;

五、数据的查询(查)-- DQL

1、查询所有字段

SELECT * FROM student;

2、查询指定字段

SELECT  NAME,sex,age FROM student;

3、 查询指定字段 + 别名

SELECT name AS '姓名', sex AS '性别', age AS '年龄' FROM student;

效果截图:

在这里插入图片描述

4、单条件查询

SELECT * FROM student WHERE id=1;

5、多条件查询

OR:

SELECT * FROM student WHERE course='java' OR course='html';

AND:

SELECT * FROM student WHERE course='java' AND sex='women';

效果截图:

在这里插入图片描述

IN():

SELECT * FROM student WHERE age IN(21,22,23);

6、去重查询

需求:查询出学科

SELECT DISTINCT course FROM student;

效果截图:

在这里插入图片描述

7、模糊查询:

需求:查询出名字中带’雷’的学生信息

注意: % 表示没有或多个任意字符,_ 表示一个任意字符

SELECT * FROM student WHERE `name` LIKE '%雷%';

效果截图:

在这里插入图片描述

需求:查询出2个字的名字中最后一个字带’杨’的学生信息

SELECT * FROM student WHERE `name` LIKE '_杨';

效果截图:

在这里插入图片描述

8、单字段排序

需求:按照年龄排升序

注意:ORDER BY 排序,ASC 表示升序,DESC 表示降序

SELECT *FROM student ORDER BY age ASC;

效果截图:

在这里插入图片描述

需求:按照工资排降序

SELECT * FROM student ORDER BY salary DESC;

9、 多字段排序

需求:按照年龄排升序,年龄一致按照工资排降序

SELECT * FROM student ORDER BY age ASC,salary DESC;

效果截图:
在这里插入图片描述

10、限制查询

需求:查询出工资前三位的学生信息

SELECT * FROM student ORDER BY salary DESC LIMIT 3;

效果截图:
在这里插入图片描述

11、分页查询

分页的公式:*SELECT * FROM 表名 LIMIT (页数-1)页面条数,页面条数;

SELECT * FROM student LIMIT 0,5;
SELECT * FROM student LIMIT 5,5;
SELECT * FROM student LIMIT 10,5;

12、统计类函数查询/聚合查询

函数的理解:特定功能的代码块

需求:统计最高工资

SELECT MAX(salary) FROM student;

需求:统计最低工资

SELECT MIN(salary) FROM student;

需求:统计平均工资(保留2位小数)

SELECT ROUND(AVG(salary),2) FROM student;

需求:统计工资总和

SELECT SUM(salary) FROM student;

需求:统计学生个数

SELECT COUNT(id) FROM student;

注意:count()函数不统计字段数据为null的个数

经验:统计数据条数,count()函数中的字段使用主键(因为主键不允许重复且不能为null)

13、子查询

需求:查询最高工资的学生

SELECT * FROM student WHERE salary=(SELECT MAX(salary) FROM student);

经验:实际工作中极少使用子查询,因为效率太低

14、分组过滤查询

需求:查询出各个学科的平均工资

SELECT course ,AVG(salary) FROM student GROUP BY course;

15、分组过滤查询 + 条件

需求:查询出平均工资大于1万的学科信息

SELECT course,AVG(salary)FROM student GROUP BY course HAVING AVG(salary)>10000;

效果截图:

在这里插入图片描述

多表查询接下一章

相关文章:

  • jQuery 实例:掌握 JavaScript 库的奥秘
  • 番外篇 | YOLOv8改进之即插即用全维度动态卷积ODConv + 更换Neck网络为GFPN
  • Android adb logcat日志过滤输出
  • 【Windows】Bootstrap Studio(网页设计)软件介绍及安装步骤
  • MySQL之主从同步、分库分表
  • 0704模拟记录
  • 销毁终结者:IT 采购必知:高效数据销毁服务 文件销毁 硬盘销毁 数据销毁 销毁
  • [ruby on rails]rails6.0升级6.1
  • Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好
  • 一文解开关于UWB定位技术的认识误区
  • vue模板语法v-html
  • 搜狗输入法产品使用说明
  • 免杀笔记 ---> PE
  • 私域和社群的差别是什么?
  • FFT 简单基础(matlab
  • Fundebug计费标准解释:事件数是如何定义的?
  • JavaScript HTML DOM
  • Java的Interrupt与线程中断
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python实现BT种子转化为磁力链接【实战】
  • SQL 难点解决:记录的引用
  • vagrant 添加本地 box 安装 laravel homestead
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 初识 webpack
  • 动态魔术使用DBMS_SQL
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 如何设计一个比特币钱包服务
  • 为视图添加丝滑的水波纹
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 2017年360最后一道编程题
  • #stm32驱动外设模块总结w5500模块
  • (二)JAVA使用POI操作excel
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (转)memcache、redis缓存
  • (转载)从 Java 代码到 Java 堆
  • ***通过什么方式***网吧
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net web项目 调用webService
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 中创建支持集合初始化器的类型
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .Net7 环境安装配置
  • .net的socket示例
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /dev下添加设备节点的方法步骤(通过device_create)
  • /etc/shadow字段详解
  • [AI StoryDiffusion] 创造神奇故事,AI漫画大乱斗!
  • [BJDCTF2020]The mystery of ip
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [COI2007] Sabor
  • [gdc19]《战神4》中的全局光照技术