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语句的更多相关文章

  1. Mysql 数据库操作之DDL、DML、DQL语句操作

    Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l  Show databases 查看数据库列表信息 l  查看数据库中的数据表信息 ,格式: use 数据库名: sh ...

  2. DML和DQL语句

    DML操作: a.插入单行数据:      INSERT INTO 表名(列名,列名,...) VALUE(列值,列值,...); 表的字段名是可选的,如果省略,则一次插入所有字段 多个列表和多个值之 ...

  3. 使用Statement执行DML和DQL语句

    import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.DriverManager; impor ...

  4. 6.2笔记-DQL语句查询数据库

    一.DQL语句 1.常量列 SELECT `StudentName` AS 姓名, `Address` AS 地址, '北京信息中心' AS 学校名称 FROM `student`; 2.常用函数 聚 ...

  5. MySQL的sql语言分类DML、DQL、DDL、DCL、

    MySQL的sql语言分类DML.DQL.DDL.DCL. SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(Data ...

  6. DML和DQL 总结

    一:MySql的存储引擎 问题的引入: 由于不同用户对数据的容量,访问速度,数据安全性有着不同的要求. 为了满足不同用户的需求,mysql数据库采用多种存储引擎来进行数据的存储! 1.1:查询mysq ...

  7. SQL--SQL详解(DDL,DML,DQL,DCL)

    SQL--SQL详解(DDL,DML,DQL,DCL) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 什么是SQL? Stru ...

  8. Statement执行DQL语句(查询操作)

    import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.T ...

  9. 数据库级别DML操作监控审计、表触发器/对象触发器

    使用触发器记录DML,使用触发器记录表的DML 数据库级别DML操作监控审计.表触发器/对象触发器 --创建记录表 CREATE TABLE T_SHALL_LOG ( ID , ) , EVTIME ...

  10. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

随机推荐

  1. Alibaba Sentinel SSRF漏洞分析(CVE-2021-44139)

    Alibaba Sentinel SSRF漏洞分析(CVE-2021-44139) 一.Alibaba Sentienl 简介 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel ...

  2. zstd压缩算法概述与基本使用

    本文仅关注zstd的使用,并不关心其算法的具体实现 并没有尝试使用zstd的所有功能模式,但是会简单介绍每种模式的应用场景,用到的时候去查api吧 step 0:why zstd? zstd是face ...

  3. ubuntu 22.04 deskop 无法打开terminal

    系统语言设置的问题,改为汉语即可

  4. go ERROR invalid character '<' looking for beginning of value

    报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...

  5. JOKER可视化开发工具迎来重大更新

    为紧跟行业前沿趋势,满足开发者日益增长的需求,我们于2025年3月13日对平台开展了全方位升级.此次更新聚焦前端交互的便捷性.服务端功能的强大性以及通用操作的流畅性,在多方面进行了深度优化.尤为值得一 ...

  6. unigui的demo-\Demos\Desktop\DBAppDemo\SimpleDemo.dproj【11】

    这个demo很简单. 一个客户表,还有一个票据主从表. 看程序界面: 包括数据提交,彻头彻尾的c/s程序.你完全按照传统的C/S程序模式做开发就可.好处是效率.效率.还是效率! 你还有什么不满意!如果 ...

  7. MYSQL数据库 MariaDB断电恢复总结

    背景:本次是机房异常断电,导致数据库文件损坏.在数据库自启动之后频繁宕机,在多次尝试以后,总结了一下几种方法,及供参考. 1.mariadb服务器断电重启之后Missing MLOG_CHECKPOI ...

  8. 使用SymPy求解矩阵微分方程

    引言 在数学.物理.工程等领域,微分方程常常被用来描述系统的变化和动态过程.对于多变量系统或者多方程系统,矩阵微分方程是非常常见的,它可以用来描述如电路.控制系统.振动系统等复杂的动态行为.今天,我们 ...

  9. C#之集合常用扩展方法与Linq

    一.集合的常用扩展方法(lambda的方式) 1.Where() 根据条件选择数据 2.Select() 根据数据条件转换成新的数据类型,类似于DTO转换类 3.Max() 根据条件选择最大值 4.M ...

  10. EFCore先DBFirst,再CodeFirst(针对老项目迁移)

    参照文章: CodeFirst命令介绍:Scaffold-DbContext 命令使用 - 跟着阿笨一起玩.NET - 博客园 (cnblogs.com) 整体流程介绍:NetCore 中 EFcor ...