数据库的DML与DQL语句
1: DML语句
insert into values
1 insert into 表 values(值1,值2,值n);
2 insert into 表(字段1,字段2,字段n) values(值1,值2,值n);
3
4 两种语法的区别:
5 基本语法1的插入语句,表中有多少个字段就必须要插入多少个值。一个不能多,一个也不能少。若有默认值,不想传,可以写上null。
6 基本语法2中,除非有必填字段必须要写入值外。如果有默认值的不想写可以忽略不写。mysql会自动补主默认值
delete from
1 delete from 表 [where 条件];
2
3 TRUNCATE TABLE 表名;
4 清空表的数据,并且让自增的id从1开始自增
5 -- 删除一条纪录
6 -- 一般情况下,我们是使用主键作为标识;
7 -- 根据where后面的条件,精准的删除我们数据库的某一条纪录;
8 -- 当我们的主键为自增的情况下,删掉的纪录,主键也默认为自增还是以前的数字;
9 DELETE FROM test WHERE id = 3;
10 DELETE FROM test WHERE NAME = 'rose';
11
12 -- 清空数据表 ; 主键自增也会回归1;
13 TRUNCATE TABLE test;
update 表名 set 字段名=更新值
1 update 表名 set 字段1=值1,字段2=值2,字段n=值n [where 条件];
2
3 -- 如何修改我们的数据表里面的纪录
4 -- 修改编号为2的人 将它的名字修改成 xxxx
5
6 UPDATE test SET NAME='xiaomei'; -- 修改所有的;将name字段,全部改成xiaomei
7
8 -- 如果你只想修改一条语句,一定要where要精准
9 -- 如果你想改多条,条件也一定要记得注意;
10 -- sql符合条件的都都会修改掉;
11 UPDATE test SET NAME='jack',age=22 WHERE id = 2;
12 UPDATE test SET NAME='rose',age=22 WHERE NAME = 'tony'; -- 所有的name为tony改掉
2: DQL语句(数据库查询语句)
关系型数据库
1 --表与表之间,可以建立关系;称之为主外键;
2
3 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性
4 1: int类型,自增
5 2: varchar类型 , UUID
6 3: 自定义(当前时间+时间戳+机器码+int自增序列) ; 适用于分布式系统
7
8 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表.
9
10 外键的使用需要满足下列的条件:
11
12 1. 两张表必须都是InnoDB表,并且它们没有临时表。
13
14 注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。
15
16 2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
17
18 3. 建立外键关系的对应列必须建立了索引。
19
20 4. 假如显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。假如没有显式的给出,InnoDB会自动的创建。
数据库三范式(设计表的原则) NF:normal form
1 第一范式(1NF)
2 1NF的定义为:符合1NF的关系中的每个属性都不可再分
3 1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQL Server,Oracle,MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。
4
5 学号 班级 姓名 系名 系主任 课程 语文 高数 英语
6
7 只满足1NF会有问题:数据冗余过大,插入异常,删除异常,修改异常;
8 冗余: 相同数据重复出现
9 插入问题: 3月份新开一个系,但是没有学生和班级; 如何插入数据?
10 删除问题: 某个班级不存在了,学生和系信息怎么办?
11 修改问题: 如果李四转到英语系,涉及到多条数据更改
12 ----------------------------------------------------------
13
14 第二范式(2NF)
15 2NF的定义为: 主键依赖,该表里面的其他字段,必须和主键相关;
16 即一张表格只描述一个对象(主键),其它列名(副键)与对象之间相互完全依赖。
17
18 生产一批香蕉,需要给香蕉进行记录,以便追踪去了哪里;首先给每把香蕉进行编号,然后描述他的颜色,成熟度,香味等;
19
20 第三范式(3NF)
21 3NF的定义为: 主键以外的字段,不能有相互依赖的关系;
22
23 比如,你想要对香蕉进行【编号】、【颜色】、【香味】、【香味得分】、【香味评级】这种列名,那么你要另开一张专门描述香味的表格。
24
25 比如,你想要做【学号】、【姓名】、【性别】、【班级】、【班主任】这种列名,由于【班主任】受【班级】影响,那么你要另开一张专门描述班级的表格。
案例:
1 SELECT * FROM userinfo;
2 #删除一行
3 DELETE FROM userinfo WHERE id=7;
4 #修改一行
5 UPDATE userinfo SET username="dabu" WHERE id=1;
6 UPDATE userinfo SET username="da", userhobby="打人" WHERE id=1;
7
8 USE nz201;
9 SELECT * FROM stu;
10 -- 普通的查询方式
11 -- select 字段 from 表名
12 SELECT * FROM stu; -- 查询所有 * : 通配符,统配表里面所有的字段
13 SELECT sid,sname FROM stu; -- 指定查询某些字段
14
15 -- 给字段取别名
16 -- 并不会改变影响原有的字段名,只对当前查询生效
17 SELECT sid AS '编号',sname AS '姓名',age AS '年龄' FROM stu;
18
19 SELECT sid '编号',sname '姓名' FROM stu;
20
21 SELECT DISTINCT gender FROM stu; -- 对结果去重
22
23 -- --------------------------------------------------------
24
25 -- 条件查询; 查询语句后面,加上 where 带上条件;
26 -- select 字段 from 表名 where 条件
27 -- 查询年龄为35岁的人的信息
28 SELECT sid,sname,age,gender FROM stu WHERE age = 35;
29
30 SELECT * FROM stu WHERE age = 35;
31
32 -- 查询年龄大于35岁的人的信息 大于 等于 小于 不等于 大于等于 小于等于
33 SELECT sid,sname,age,gender FROM stu WHERE age > 35;
34 SELECT sid,sname,age,gender FROM stu WHERE age < 35;
35 SELECT sid,sname,age,gender FROM stu WHERE age != 35; -- <>
36 SELECT sid,sname,age,gender FROM stu WHERE age >= 35;
37 SELECT sid,sname,age,gender FROM stu WHERE age <= 35;
38
39 -- between A and B;in(值1,值2,值3);
40 SELECT sid,sname,age,gender FROM stu WHERE age BETWEEN 20 AND 40;
41
42 -- 查询年龄在 in (集合里面) where age = 35 or age = 15 or age = 65 or age = 70;
43 SELECT sid,sname,age,gender FROM stu WHERE age IN (35,15,65,70);
44
45 -- and 两个条件都要满足; or 满足其中一个 not 非
46 SELECT sid,sname,age,gender FROM stu WHERE age >= 20 AND age <= 40;
47
48 SELECT sid,sname,age,gender FROM stu WHERE age = 35 OR age = 15 OR age = 65 OR age = 70;
49
50 -- 查询年龄段 性别过滤
51 SELECT sid,sname,age,gender FROM stu WHERE age BETWEEN 20 AND 40 AND gender='male';
52
53 -- 查询空的值 查询年龄是null
54 SELECT sid,sname,age,gender FROM stu WHERE age IS NULL;
55
56 -- 不为空的值; 建议大家不要用字符串去 判断大小之类的
57 SELECT sid,sname,age,gender FROM stu WHERE age IS NOT NULL AND sid > 's_1004';
58
59 -- 找一个年龄大于35, 可以允许他先加5
60 SELECT sid,sname,age,gender FROM stu WHERE (age+5) > 40;
61 SELECT sid,sname,age,gender FROM stu WHERE (age-5) > 40;
62
63 -- 如果这个字段值,是null; 就给一个默认值
64 SELECT sid,sname,IFNULL(age,88),gender FROM stu
65
66 -- --------------------------------------------------------
67 -- 模糊查询; 查询一些不能确定的结果
68
69 -- 查询名字带 'l' 的学生;
70 -- % 代表任意字符(0-n个)
71 SELECT * FROM stu WHERE sname LIKE '%l%';
72
73 -- 查询第二个字母是i的学生;
74 -- _ 代表一个字符
75 SELECT * FROM stu WHERE sname LIKE '_i%';
76
77 -- 查询第三个字母是u的学生;
78 SELECT * FROM stu WHERE sname LIKE '__u%';
79
80 -- 查询以xx字符开头
81 SELECT * FROM stu WHERE sname LIKE 'x%';
82
83 -- 查5个字母的学生
84 SELECT * FROM stu WHERE sname LIKE '_____';
85
86 -- --------------------------------------------------------
87 -- 排序 order by 和 where 可以组合使用 ;只对查询结果进行排序展示
88
89 SELECT * FROM stu;
90
91 -- 根据年龄来升序展示结果; 根据年龄来降序 展示结果
92 SELECT * FROM stu ORDER BY age ASC; -- 升序
93 SELECT * FROM stu ORDER BY age DESC; -- 降序
94
95 SELECT * FROM stu ORDER BY sid ASC;
96 SELECT * FROM stu ORDER BY sid DESC;
97
98 -- --------------------------------------------------------
99 -- 聚合函数
100 -- count() 总数 ; 如果是统计一个字段,这个字段为null的将不会统计
101 -- max 最大值 min 最小值 sum 总和 avg 平均值
102
103 -- 查询我们这个表总共有多少条件纪录
104
105 SELECT COUNT(*) FROM stu; -- 不建议大家使用
106 SELECT COUNT(age) FROM stu; -- 10; 为null的不会统计
107
108 SELECT MAX(age) FROM stu; -- 找到年龄最大的纪录
109 SELECT MIN(age) FROM stu; -- 最小
110 SELECT AVG(age) FROM stu; -- 平均
111 SELECT SUM(age) FROM stu; -- 和
112 -- --------------------------------------------------------
113
114 -- 分组查询; 能对字段进行分组查询 ; group by
115
116 -- 查询每个部门 , 工资之和;
117 SELECT * FROM emp;
118 SELECT deptno FROM emp GROUP BY deptno; -- 根据部门来分组
119
120 SELECT SUM(sal) FROM emp; -- 整个公司的工资之和;
121
122 SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;
123
124 -- 查询学生表; 查询每个班级有多少个学生;
125 -- 查询每个班级(学生表里面的班级id做分组)的数学平均成绩
126 -- --------------------------------------------------------
127
128 -- 分页查询
129
130 SELECT * FROM stu;
131
132 -- 只想查看前三条;
133
134 SELECT * FROM stu LIMIT 0,3; -- limit 纪录起始位置 , 查询几条纪录
135
136 SELECT * FROM stu LIMIT 5; -- 默认从0 开始 查询 x条纪录
137
138 SELECT * FROM stu WHERE age > 30 LIMIT 2;
数据库的DML与DQL语句的更多相关文章
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- DML和DQL语句
DML操作: a.插入单行数据: INSERT INTO 表名(列名,列名,...) VALUE(列值,列值,...); 表的字段名是可选的,如果省略,则一次插入所有字段 多个列表和多个值之 ...
- 使用Statement执行DML和DQL语句
import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.DriverManager; impor ...
- 6.2笔记-DQL语句查询数据库
一.DQL语句 1.常量列 SELECT `StudentName` AS 姓名, `Address` AS 地址, '北京信息中心' AS 学校名称 FROM `student`; 2.常用函数 聚 ...
- MySQL的sql语言分类DML、DQL、DDL、DCL、
MySQL的sql语言分类DML.DQL.DDL.DCL. SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(Data ...
- DML和DQL 总结
一:MySql的存储引擎 问题的引入: 由于不同用户对数据的容量,访问速度,数据安全性有着不同的要求. 为了满足不同用户的需求,mysql数据库采用多种存储引擎来进行数据的存储! 1.1:查询mysq ...
- SQL--SQL详解(DDL,DML,DQL,DCL)
SQL--SQL详解(DDL,DML,DQL,DCL) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 什么是SQL? Stru ...
- Statement执行DQL语句(查询操作)
import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.T ...
- 数据库级别DML操作监控审计、表触发器/对象触发器
使用触发器记录DML,使用触发器记录表的DML 数据库级别DML操作监控审计.表触发器/对象触发器 --创建记录表 CREATE TABLE T_SHALL_LOG ( ID , ) , EVTIME ...
- 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍
第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...
随机推荐
- 朱朝兵《Web前端开发之HTML5+CSS3快速入门》课程资料在线学习
<Web前端开发之HTML5+CSS3快速入门> [课程简介]本课程由一直专注前端技术与Discuz模板设计与制作!DZ起点网创始人朱朝兵出品,通过本课程学习,即可掌握html5的基本结构 ...
- PHP配置并使用mosquitto
要在PHP中配置和使用Mosquitto,你需要进行以下步骤: 安装Mosquitto PHP扩展: sudo apt-get install php-mosquitto 在PHP配置文件中启用Mos ...
- Linux Nginx tomcat集群--打程序补丁步骤
Linux Nginx Tomcat集群--打程序补丁步骤 一.若不知道服务器中nginx所在目录(知道目录位置,从第3条开始看) 1.查找nginx进程(默认80端口) netstat -lntup ...
- 康谋分享 | aiSim5 物理相机传感器模型验证方法(一)
摘要: aiSim5可以实时模拟复杂的传感器配置,在多GPU分布式渲支持的支持下,aiSim可以渲染20多个摄像头.10多个雷达和10多个激光雷达在同一环境下运行.aiSim5独有的实时渲染引擎能够满 ...
- symfony学习笔记3.4(bundle、service、doctrine的使用…)
yii.laravel框架都是基于symfony组件衍生,symfony的强大不用多说.文档里有的,很好找的就不写了 附: symfony官网 https://symfony.com/doc/3.4 ...
- 【踩坑系列】使用Comparator.comparing对中文字符串排序结果不对
1. 踩坑经历 假设有这样一个业务场景,需要对各个城市的订单量排序,排序规则为: 先根据订单量倒序排列,再根据城市名称正序排列. 示例代码: import lombok.Getter; import ...
- MySQL 高可用集群搭建部署
MySQL 高可用集群搭建(GTID 模式 + 自动故障转移) 一.环境规划 角色 IP 地址 说明 主库 (Master) 192.168.1.100 运行 MySQL + Keepalived/M ...
- nndeploy开源推理框架教程来袭,模型推理全流程,轻松上手,一键精通!
大家好,我们是 nndeploy 开源团队.我们专注于打造一款端到端的模型推理和部署框架 -- nndeploy,旨在为用户提供高效.便捷.灵活且兼容主流框架的模型推理和部署体验. 此次,我们开发了 ...
- SQL Server 2025 中的改进
SQL Server 2025 中的改进 当我们接近 SQL Server 2025 的首次公开版本时,开始深入探究 Azure SQL DB 如今(已公布和未公布)但在 SQL Server 盒装产 ...
- DeepSeek又在节前放大招!
写在前面 事情是这样的,就在五一假期开始前夕,DeepSeek放出了模型DeepSeek-Prover-V2-671B: 这是延续了节假日狂飙的传统? 言归正传,我们看看这次放出了哪些核心技术. ...