MySQL数据管理(二) 及 使用DQL命令查询数据(一)

2024-01-08 11:54:56

MySQL数据管理(二)

一、DML语言

DML(数据操作语言):用于操作数据库对象中所包含的数据

DML包括:

  • INSERT(添加数据语句)
  • UPDATE(更新数据语句)
  • DELETE(删除数据语句)

添加数据

插入单行数据

代码演示
#给某个表中添加单行数据
INSERT INTO GRADE (GRADEID,GRADENAME) VALUES (1,'预科');
插入多行数据

代码演示
#插入多行数据(批量插入)
INSERT INTO STUDENT VALUES
(10001, 'password123', '张宇', '男', 1, '13812345678', '北京市朝阳区', '2000-03-15', 'zhangyu@email.com', '110101200003154321'),
(10002, 'pass456', '李欣', '女', 2, '13998765432', '上海市浦东新区', '1999-07-20', 'lixin@email.com', '310115199907201234'),
(10003, 'abc123', '王浩', '男', 1, '13787654321', '广州市天河区', '2001-01-10', 'wanghao@email.com', '440106200101102345'),
(10004, 'pass789', '赵雨菲', '女', 3, '13611112222', '深圳市南山区', '2003-05-25', 'zhaoyufei@email.com', '440305200305252678'),
(10005, 'qwerty', '陈嘉琪', '男', 2, '13544445555', '成都市武侯区', '2002-11-05', 'chenjiaqi@email.com', '510107200211053456');

修改数据-UPDATE命令

代码演示
#按照一定条件修改数据(修改张三手机号,条件是手机号是13812345678)
UPDATE STUDENT SET PHONE = '123' WHERE PHONE = '13812345678';
#按照一定条件修改一行中的多条数据(修改李四的手机号和地址,条件是手机号是13998765432)
UPDATE STUDENT SET PHONE = '321' , ADDRESS = '河南省郑州市' WHERE PHONE = '13998765432';

二、SQL语句中的运算符

算术运算符

运算符含义
+加法运算,求两个数或表达式相加的和
-减法运算,求两个数或表达式相减的差
*乘法运算,求两个数或表达式相乘的积
/除法运算,求两个数或表达式相除的商
%取模运算,求两个数或表达式相除的余数
=把一个数或变量或表达式赋值给另一个变量

比较运算符

运算符含义范例结果
=等于5 = 6false
<> 或 !=不等于5 != 6true
>大于5 > 6false
<小于5 < 6true
>=大于等于5 >= 6false
<=小于等于5 <= 6true
BETWEEN在某个范围之间(包含两边)BETWEEN 5 AND 10-

逻辑运算符

运算符含义范例结果
AND并且5>1 AND 1>2false
OR5>1 OR 1>2true
NOT取反NOT 1>2true

MySQL数据管理(二)综合代码演示

#切换到......
USE myschool;
#展示表
SHOW TABLES;
#查看表结构
DESC GRADE;

#给GRADE表添加数据
#给某个表中添加数据
INSERT INTO GRADE (GRADEID,GRADENAME) VALUES (1,'预科');
#从某个表中删除指定数据
DELETE FROM GRADE WHERE GRADEID=1;
#从某个表中查询数据
SELECT * FROM GRADE;

DESC STUDENT;
#给学生表批量添加数据
INSERT INTO STUDENT VALUES
(10001, 'password123', '张三', '男', 1, '13812345678', '北京市朝阳区', '2000-03-15', 'zhangsan@email.com', '110101200003154321'),
(10002, 'pass456', '李四', '女', 2, '13998765432', '上海市浦东新区', '1999-07-20', 'lisi@email.com', '310115199907201234'),
(10003, 'abc123', '王五', '男', 1, '13787654321', '广州市天河区', '2001-01-10', 'wangwu@email.com', '440106200101102345'),
(10004, 'pass789', '赵六', '女', 3, '13611112222', '深圳市南山区', '2003-05-25', 'zhaoliu@email.com', '440305200305252678'),
(10005, 'qwerty', '陈七', '男', 2, '13544445555', '成都市武侯区', '2002-11-05', 'chenqi@email.com', '510107200211053456'),
(10006, 'pass789', '刘八', '女', 2, '13755556666', '重庆市渝中区', '2000-09-18', 'liuba@email.com', '500103200009183210'),
(10007, 'abcd1234', '张九', '男', 1, '13987654321', '杭州市西湖区', '1998-12-02', 'zhangjiu@email.com', '330106199812021234'),
(10008, 'pass123', '王十', '女', 3, '13899998888', '南京市鼓楼区', '2004-02-28', 'wangshi@email.com', '320106200402283456'),
(10009, 'password', '赵十一', '男', 2, '13698761234', '武汉市洪山区', '2003-07-15', 'zhaoshiyi@email.com', '420111200307152345'),
(10010, 'qwerty123', '李十二', '女', 1, '13567894567', '成都市锦江区', '2001-04-30', 'lishier@email.com', '510104200104303210'),
(10011, 'pass987', '陈十三', '男', 3, '13733334444', '广州市海珠区', '2002-08-12', 'chensanshier@email.com', '440105200208123210'),
(10012, 'pass456', '李十四', '女', 1, '13922221111', '深圳市福田区', '2000-01-25', 'lishisi@email.com', '440304200001253456');
#按照一定条件修改数据(修改张三手机号,条件是手机号是13812345678)
UPDATE STUDENT SET PHONE = '123' WHERE PHONE = '13812345678';
#按照一定条件修改一行中的多条数据(修改李四的手机号和地址,条件是手机号是13998765432)
UPDATE STUDENT SET PHONE = '321' , ADDRESS = '河南省郑州市' WHERE PHONE = '13998765432';

#批量给成绩表添加数据
INSERT INTO RESULT VALUES
(10001, 1, '2023-05-20', 85),
(10002, 1, '2023-05-20', 92),
(10003, 1, '2023-05-20', 21),
(10004, 1, '2023-05-20', 89),
(10005, 1, '2023-05-20', 94),
(10006, 1, '2023-05-20', 80),
(10007, 1, '2023-05-20', 88),
(10008, 1, '2023-05-20', 60),
(10009, 1, '2023-05-20', 83),
(10010, 1, '2023-05-20', 55),
(10011, 1, '2023-05-20', 76),
(10012, 1, '2023-05-20', 30);

#按照条件修改数据
#修改学生表中,身份证号不为空的学生密码为111111
UPDATE STUDENT SET LOGINPWD = '111111'
WHERE IDENTITYCARD IS NOT NULL;
#将课程编号为1的所有不及格的学生的成绩修改为60分
UPDATE RESULT SET STUDENTRESULT = 60
WHERE SUBJECTNO = 1 AND STUDENTRESULT < 60;
#将课程编号为1的所有   大于等于80分 且 小于等于90分   的学生的成绩加5分
UPDATE RESULT SET STUDENTRESULT = STUDENTRESULT + 5
WHERE SUBJECTNO = 1 AND STUDENTRESULT >= 80 AND STUDENTRESULT <= 90;

使用DQL命令查询数据(一)

DQL(Data Query Language数据查询语言):用于查询数据库对象中所包含的数据

DQL语言主要的语句:SELECT语句

DQL语言是数据库语言中最核心最重要的语句,也是使用频率最高的语句

查询的主要类型:简单的单表查询多表的复杂查询子查询

一、什么是查询

二、SELECT

代码演示
#查询学生表中所有学生的所有信息
SELECT * FROM STUDENT;
#查询学生表中所有学生的学号、姓名、性别、电话、地址
SELECT STUDENTNO,STUDENTNAME,SEX,PHONE,ADDRESS FROM STUDENT;
#将上一个查询结果的字段名用中文表示(AS可以不写,但是必须加空格)
SELECT 
	STUDENTNO AS '学号',
	STUDENTNAME '姓名',
	SEX '性别',
	PHONE '联系电话',
	ADDRESS '家庭住址'
FROM STUDENT;

三、LIKE模糊查询

在WHERE字句总,使用LIKE关键字进行模糊查询

  • 与“%”一起使用,表示匹配0或任意多个字符
  • 与“_”一起使用,表示匹配单个字符

代码演示
#LIKE模糊查询
#查询姓赵的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '赵%';
#查询以“雨”结尾的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '%雨';
#查询名字中包含“雨”的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '%雨%';
#查询姓张,名字为两个字的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '张_';
#查询姓赵,名字为三个字的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '赵__';

四、MySQL中的函数

MySQL中的函数将一些常用的处理数据的操作封装起来,这样大大简化了程序员的工作,提高了开发效率

MySQL中常用的函数:

  • 聚合函数
  • 字符串函数
  • 日期时间函数
  • 数学函数

聚合函数

函数名作用
AVG()返回某字段的平均值
COUNT()返回某字段的行数
MAX()返回某字段的最大值
MIN()返回某字段的最小值
SUM()返回某字段的和
代码演示
#聚合函数
#查询编号10001的历次平均考试成绩
SELECT AVG(STUDENTRESULT)
FROM RESULT WHERE STUDENTNO = 10001;
#查询编号10001的考试次数
SELECT COUNT(1)
FROM RESULT WHERE STUDENTNO = 10001;
#查询学生表中一共有多少个学生
SELECT COUNT(*) FROM STUDENT;
#查询学生表中是2年级的学生个数
SELECT COUNT(*) FROM STUDENT WHERE GRADEID = 2;
#查询编号10001的考试最高分、最低分和总分
SELECT MAX(STUDENTRESULT),
MIN(STUDENTRESULT),
SUM(STUDENTRESULT)
FROM RESULT WHERE STUDENTNO = 10001;

数学函数

函数名作用举例
CEIL(x)返回大于或等于数值x的最小整数

SELECT CEIL(2.3)

返回:3

FLOOR(x)返回小于或等于数值x的最大整数

SELECT FLOOR(2.3)

返回:2

RAND()返回0~1之间的随机数

SELECT RAND()

返回:0.55254685838708134

字符串函数

函数名作用举例
CONCAT(str1,str2...strn)字符串连接

SELECT CONCAT('My','S','QL');

返回:MySQL

INSERT(str,pos,len,newstr)字符串替换

SELECT INSERT(

? ? ? ? '这是SQL Server数据库',

? ? ? ? 3,10,'MySQL');

返回:这是MySQL数据库

LOWER(str)将字符串转为小写

SELECT LOWER('MySQL');

返回:mysql

UPPER(str)将字符串转为大写

SELECT UPPER('MySQL');

返回:MYSQL

SUBSTRING(str,num,len)字符串截取

SELECT SUBSTRING(

? ? ? ? 'JavaMySQLOracle',5,5);

返回:MySQL

代码演示
#字符串函数
#查询学生信息的邮箱前五位
SELECT SUBSTRING(EMAIL,1,5) FROM STUDENT;
#生成一个唯一序列
SELECT UUID() FROM DUAL;
#生成一个唯一序列并去掉这个唯一序列中的-
SELECT REPLACE(UUID(),'-','') FROM DUAL;

日期时间函数

函数名作用举例(结果与当前时间有关)
CURDATE()获取当前日期

SELECT CURDATE();

返回:2024-01-04

CURTIME()获取当前时间

SELECT CURTIME();

返回:16:14:16

NOW()获取当前日期和时间

SELECT NOW();

返回:2024-01-04 16:14:53

WEEK(date)返回日期date为一年中的第几周

SELECT WEEK(NOW());

返回:1

YEAR(date)返回日期date的年份

SELECT YEAR(NOW());

返回:2024

HOUR(time)返回时间time的小时值

SELECT HOUR(NOW());

返回:9

MINUTE(time)返回时间time的分钟值

SELECT MINUTE(NOW());

返回:43

DATEDIFF(date1,date2)

返回日期参数date1和date2之间

相隔的天数

SELECT DATEDIFF(NOW(),'2008-8-8');

返回:5627

ADDDATE(date,n)计算日期参数date加上n天后的日期

SELECT ADDDATE(NOW(),5);

返回:2024-01-09 16:27:07

代码演示
#日期时间函数
#获取系统当前时间
SELECT NOW() FROM DUAL;
#获取系统当前时间若干天后的时间
SELECT ADDDATE(NOW(),30) FROM DUAL;

MySQL中更多常用函数示例

使用DQL命令查询数据(一)综合代码演示

#切换到......
USE myschool;

#查询学生表中所有学生的所有信息
SELECT * FROM STUDENT;
#查询学生表中所有学生的学号、姓名、性别、电话、地址
SELECT STUDENTNO,STUDENTNAME,SEX,PHONE,ADDRESS FROM STUDENT;
#将上一个查询结果的字段名用中文表示(AS可以不写,但是必须加空格)
SELECT 
	STUDENTNO AS '学号',
	STUDENTNAME '姓名',
	SEX '性别',
	PHONE '联系电话',
	ADDRESS '家庭住址'
FROM STUDENT;

#查询成绩表中,成绩大于85的信息
SELECT * FROM RESULT WHERE STUDENTRESULT > 85;
#查询成绩表中,成绩不是85分的信息
SELECT * FROM RESULT WHERE STUDENTRESULT != 85;

#LIKE模糊查询
#查询姓赵的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '赵%';
#查询以“雨”结尾的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '%雨';
#查询名字中包含“雨”的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '%雨%';
#查询姓张,名字为两个字的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '张_';
#查询姓赵,名字为三个字的学生信息
SELECT * FROM STUDENT WHERE STUDENTNAME LIKE '赵__';

#聚合函数
#查询编号10001的历次平均考试成绩
SELECT AVG(STUDENTRESULT)
FROM RESULT WHERE STUDENTNO = 10001;
#查询编号10001的考试次数
SELECT COUNT(1)
FROM RESULT WHERE STUDENTNO = 10001;
#查询学生表中一共有多少个学生
SELECT COUNT(*) FROM STUDENT;
#查询学生表中是2年级的学生个数
SELECT COUNT(*) FROM STUDENT WHERE GRADEID = 2;
#查询编号10001的考试最高分、最低分和总分
SELECT MAX(STUDENTRESULT),
MIN(STUDENTRESULT),
SUM(STUDENTRESULT)
FROM RESULT WHERE STUDENTNO = 10001;

#字符串函数
#查询学生信息的邮箱前五位
SELECT SUBSTRING(EMAIL,1,5) FROM STUDENT;
#生成一个唯一序列
SELECT UUID() FROM DUAL;
#生成一个唯一序列并去掉这个唯一序列中的-
SELECT REPLACE(UUID(),'-','') FROM DUAL;

#日期时间函数
#获取系统当前时间
SELECT NOW() FROM DUAL;
#获取系统当前时间若干天后的时间
SELECT ADDDATE(NOW(),30) FROM DUAL;

文章来源:https://blog.csdn.net/m0_61606343/article/details/135379506
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。