当前位置:网站首页>MySQL数据库(二)DML数据操作语句和基本的DQL语句
MySQL数据库(二)DML数据操作语句和基本的DQL语句
2022-07-06 09:25:00 【手可摘鑫晨】
1,DML 语句
(1)数据增加:INSERT,主要功能是给数据库表增加记录。
(2)数据删除:DELETE,主要功能是删除数据库表中已有的记录。可以依照条件去做修改。
(3)数据修改:UPDATE,主要功能是修改数据库表中已有的记录。可以根据条件去做修改。
2,数据添加:INSERT
语法:INSERT INTO 表名 [(字段1,字段2,字段3...字段n)] VALUE/VALUES (值1,值2,值3...值n)[(值1,值2,值3...值n)];
# DML
-- INSERT INTO 表名 (字段名,字段名,字段名)values (值,值,值)
-- 添加一个学生
-- 日期要用字符串来表示
INSERT INTO student(sid,sname,birthday,ssex,classid) VALUE(9,'张三','1988-1-1','男',2);
-- 选择字段进行插入(有默认值的不可以进行插入数据)
INSERT INTO student(sname) VALUE('李四');
-- 全字段插入可以不在表名后面写字段名
INSERT INTO student VALUE(11,'王五','1999-1-1','女',1);
-- DEFAULT,NULL 给主键进行自增的默认值
-- NULL 只能给主键
INSERT INTO student(sid) VALUES(NULL);
3,数据添加:INSERT INTO SELECT
语法:INSERT INTO table2(字段1,字段2...) SELECT 字段1,字段2... FEOM table1;
-- 一次性插入多条数据
-- 方式一:
-- VALUES 插入多条 VALUE 插入一条
INSERT INTO student(sname) VALUES('李云'),('周梅'),('吴兰'),('郑竹'),('王菊');
INSERT INTO student VALUES(NULL,'李云','1990-08-06','男',2),(NULL,'周梅','1991-12-01','女',1),(NULL,'吴兰','1992-03-01','女',2),(NULL,'郑竹','1989-07-01','女',1),(NULL,'王菊','1990-01-20','女',2);
-- 方式二:
-- INSERT INTO SELECT
-- 表都有存在
CREATE TABLE newstu(
xingming VARCHAR(10),
xingbie VARCHAR(10)
);
INSERT INTO newstu(xingming,xingbie) SELECT sname,ssex FROM student;
-- 方式三:
-- CREATE TABLE 新表 SELECT;
CREATE TABLE stu SELECT sid,sname,birthday FROM student;
SHOW CREATE TABLE stu;
4,数据修改:UPDATE
语法:UPDATE 表名 SET 字段1 = 值1 [SET 字段2 = 值...] [WHERE 条件]
# 修改
-- WHERE 必须要写
-- UPDATE 表名 SET 字段名=值,字段名=值...字段名=值 [WHERE 子句]
UPDATE newstu SET xingbie='男' WHERE xingming='钱电';
UPDATE stu SET birthday='2022-06-07' WHERE sid <> 3;
UPDATE stu SET birthday='2000-01-01' WHERE sid >= 4 AND sid <=8;
UPDATE stu SET birthday='1888-01-01' WHERE sid BETWEEN 4 AND 8;
5,WHERE子句
运算符 | 含义 | 举例 | 结果 |
---|---|---|---|
= | 等于 | 5 = 6 | false |
< > 或 ! = | 不等于 | 5 != 6 | true |
> | 大于 | 5 > 6 | false |
< | 小于 | 5 < 6 | true |
>= | 大于等于 | 5 >= 6 | false |
<= | 小于等于 | 5 <= 6 | true |
BETWEEN | 在某个范围之间 | BETWEEN 5 AND 10 | - |
AND | 并且 | 5 > 1 AND 1 > 2 | false |
OR | 或 | 5 > 1 OR 1 > 2 | true |
NOT | 非 |
=:set后面表示赋值,where表示判断
6,数据删除:DELETE
语法:DELETE FROM 表名 [WHERE 条件];
# 删除
-- DELETE FROM 表名 [WHERE 子句]
-- 表中的所有数据都删掉
DELETE FROM newstu;
DELETE FROM stu WHERE sname='赵雷';
DELETE FROM stu WHERE sid >=2 AND sid <= 6;
-- BETWEEN 后面跟小数据 AND 后面跟大数据
DELETE FROM stu WHERE sid BETWEEN 7 AND 10;
7,数据清空:TRUNCATE
TRUNCATE [TABLE] 表名;
-- 清空表
-- TRUNCATE 表名
TRUNCATE stu;
DELETE FROM student;
TRUNCATE student;
-- DELETE TRUNCATE 区别
-- DELETE 不删除索引值
8,MySQL数据库恢复方法
控制台恢复:mmysql –h localhost -P 3306 –u root –p day001 < /path/db_name.sql;
day001 :要恢复的数据库的名字。
/path/db_name.sql :要恢复数据库的绝对路径。
控制台备份:mysqldump -h localhost –P 3306 –u root –p day001 > /path/db_name.sql;
day001 :要备份的数据库的名字。
/path/db_name.sql :要备份数据库的绝对路径。
9,数据库备份和恢复的作用与价值
高可用性:使数据库的失效次数减到最少,从而使数据库保持最大的可用性。
安全性:计算机病毒型、特洛伊木马型、“黑客”入侵型、逻辑炸弹型等会造成信息丢失,丢失的数据需要及时恢复。
完整性:当数据库失效后,确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的完整性。
10,单表查询
select [distinct]
{ * 或 表1.* 或 [表1.字段1 [ as 字段别名1] [, 表1.字段2 [as 字段别名2]] [......] ] }
from 表1 [as 表别名]
[left 或 rigth 或 inner join 表2 on 表之间的关系 ]
[where]
[group by]
[limit {[位置偏移量,] 行数}];
关键字 | 作用 |
---|---|
distinct | 去除表中重复记录 |
as | 给字段名或者表名起别名 |
group by | 按组分类显示查询出的数据 |
having | 在分组后起条件限制作用 |
order by | 将查询的数据进行排序 |
limit | 限制显示结果的条数 |
# 查询
-- 最简单的查询
SELECT 'abc';
-- 从数据表中查询
-- 全字段查询
-- SELECT 字段名...,字段名 FROM 表名;
-- 推荐
SELECT sid,sname,birthday,ssex,classid FROM student;
-- 不推荐,不符合sql优化原则
SELECT * FROM student;
-- 部分字段查询
SELECT sname,ssex,'猿究院' FROM student;
-- 给字段起别名
SELECT sname AS '姓名',ssex '性别','猿究院' 学校 FROM student;
11,去除重复数据:distinct
语法:select distinct 字段名1,字段名2... from 表名
作用:去掉select查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。
-- DISTINCT 去除重复(查询所有字段一样,重复的去掉)
SELECT DISTINCT sname,birthday FROM student;
12,where
语法:select * from 表名 [where 条件];
-- 带条件查询
SELECT * FROM student WHERE ssex = '男';
SELECT * FROM student WHERE ssex = '男' AND classid = 2;
SELECT * FROM student WHERE ssex = '女' AND classid != 2;
-- sid(4-7)
SELECT * FROM student WHERE sid BETWEEN 4 AND 7;
SELECT * FROM student WHERE sid >= 4 AND Sid <= 7;
-- sid !(4-7)
SELECT * FROM student WHERE sid <= 4 OR sid >= 7;
-- 找到生日大于1990的学生(日期的)
SELECT * FROM student WHERE birthday < '1990-1-1';
INSERT INTO student (sname) VALUES ('王老师'),('隔壁王老师'),('帅气的王老师'),('老王'),('王岩仪');
13,like 模糊查询
语法:select * from 表名 where 字段 like 条件;
-- LIKE 模糊查询
-- 模糊符号
-- % 任意多的任意字符
-- _ 一个任意字符
SELECT * FROM student WHERE Sname LIKE '王%';
SELECT * FROM student WHERE Sname LIKE '%王%';
SELECT * FROM student WHERE sname LIKE '王_';
14,in 范围查询
语法:select * from 表名 where 字段 in (值1,值2,值3...);
-- IN 在这个范围内的
-- 2,4,5,7,9,200
SELECT * FROM student WHERE Sid IN (2,4,5,7,9,200);
15,null
语法:select * from 表名 where 字段 is null 或 is not null;
-- 对null的条件
SELECT * FROM student WHERE birthday is NULL;
SELECT * FROM student WHERE birthday is NOT NULL;
16,聚合函数
函数名 | 返回值 |
---|---|
avg(col) | 返回指定列的平均值 |
count(col) | 返回指定列中非null值的个数 |
min(col) | 返回指定列的最小值 |
max(col) | 返回指定列的最大值 |
sum(col) | 返回指定列的所有之和 |
-- 聚合函数
-- COUNT(字段名) 统计个数
-- COUNT 不统计null
-- 推荐使用主键来进行个数的统计
-- * 推荐
-- 常量 推荐
-- 统计出学生表中一共有多少个男同学
SELECT COUNT(Ssex) FROM student WHERE Ssex= '男';
-- 都是统计数值的
-- AVG(字段名) 求平均值
SELECT AVG(score) FROM sc;
-- MAX(字段名) 最大值
SELECT MAX(score) FROM sc;
-- MIN(字段名) 最小值
SELECT MIN(score) FROM sc;
-- SUM(字段名) 总和
SELECT SUM(score) FROM sc;
-- 统计出成绩表中一共出现的考试次数,最高分,最低分,平均分,总分
SELECT COUNT(*) 次数,MAX(score) 最高分,MIN(score) 最低分,AVG(score) 平均分,SUM(score) 总分 FROM sc;
17,group by 和 having 分组
group by:
1、对所有的数据进行分组统计。
2、分组的依据字段可以有多个,并依次分组。
having:
与group by 结合使用,进行分组后的数据筛选
-- 分组 GROUP BY
-- 统计学生表中不同性别的个数
SELECT ssex,COUNT(1) FROM student GROUP BY Ssex;
-- 统计学生表中不同班级的人数
SELECT classid 班级, COUNT(*) FROM student GROUP BY classid;
-- 成绩表中每个学生的平均成绩
SELECT sid,AVG(score) FROM sc GROUP BY Sid;
-- 统计成绩 每个学生大于60分的总分数
SELECT sid,SUM(score) FROM sc WHERE score >=60 GROUP BY Sid;
-- 分组后筛选 HAVING
-- 总分数大于200分
-- WHERE 后面不能有聚合的数据
-- HAVING 后面的条件是聚合之后的筛选
-- 不能单独出现,必须和 GROUP BY 一起出现
-- WHERE 和 HAVING的区别
SELECT sid,SUM(score) FROM sc WHERE score >= 60 GROUP BY Sid HAVING SUM(score) > 200;
-- 找到每门课程的平均分,显示出平均分大于85分的课程和平均分
SELECT cid,AVG(score) FROM sc GROUP BY cid HAVING AVG(score) >85;
18,order by 排序
语法:select * from 表名 order by 字段名 [desc 或 asc];
-- 排序
-- DESC 降序
-- ASC 升序
-- 规则 :先写先排,后写后排
SELECT * FROM student ORDER BY Sid;
SELECT * FROM sc ORDER BY score DESC,Cid DESC;
19,limit 分页
语法:selsct * from 表名 limit [n,m];
-- LIMIT 分页
-- LIMIT num 前几条
-- LIMIT num(位置),num(步长)
SELECT * FROM student LIMIT 0,3;
-- 公式 :(页码-1)*步长
-- 错误写法
SELECT * FROM student LIMIT (1-1)*3,3;
-- 查询出成绩表中考试平均分是第二名的学生
SELECT sid,AVG(score) FROM sc GROUP BY sid ORDER BY AVG(score) DESC LIMIT 1,1;
边栏推荐
- Function: find the maximum common divisor and the minimum common multiple of two positive numbers
- Express
- Sleep quality today 81 points
- 几款开源自动化测试框架优缺点对比你知道吗?
- Fundamentals of digital circuits (II) logic algebra
- The minimum number of operations to convert strings in leetcode simple problem
- China's county life record: go upstairs to the Internet, go downstairs' code the Great Wall '
- Using flask_ Whooshalchemyplus Jieba realizes global search of flask
- Keil5-MDK的格式化代码工具及添加快捷方式
- “Hello IC World”
猜你喜欢
软件测试行业的未来趋势及规划
Sleep quality today 81 points
The number of reversing twice in leetcode simple question
[200 opencv routines] 98 Statistical sorting filter
Express
UCORE lab1 system software startup process experimental report
软件测试需求分析之什么是“试纸测试”
Description of Vos storage space, bandwidth occupation and PPS requirements
[Ogg III] daily operation and maintenance: clean up archive logs, register Ogg process services, and regularly back up databases
软件测试面试回答技巧
随机推荐
自动化测试你必须要弄懂的问题,精品总结
Common Oracle commands
[oiclass] maximum formula
In Oracle, start with connect by prior recursive query is used to query multi-level subordinate employees.
软件测试方法有哪些?带你看点不一样的东西
Global and Chinese market of maleic acid modified rosin esters 2022-2028: Research Report on technology, participants, trends, market size and share
Software testing interview summary - common interview questions
[pointer] counts the number of times one string appears in another string
后台登录系统,JDBC连接数据库,做小案例练习
自动化测试中敏捷测试怎么做?
Vysor uses WiFi wireless connection for screen projection_ Operate the mobile phone on the computer_ Wireless debugging -- uniapp native development 008
The minimum number of operations to convert strings in leetcode simple problem
Global and Chinese markets of MPV ACC ECU 2022-2028: Research Report on technology, participants, trends, market size and share
Summary of thread implementation
UCORE lab2 physical memory management experiment report
UCORE lab1 system software startup process experimental report
Function: find 1-1/2+1/3-1/4+1/5-1/6+1/7-... +1/n
Opencv recognition of face in image
软件测试需求分析之什么是“试纸测试”
Express