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

MySQL数据管理(二)

一、DML语言

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

DML包括:

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

添加数据

插入单行数据

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第1张图片

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

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第2张图片

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

修改数据-UPDATE命令

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第3张图片

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

二、SQL语句中的运算符

算术运算符

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

比较运算符

运算符 含义 范例 结果
= 等于 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 取反 NOT 1>2 true

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', '[email protected]', '110101200003154321'),
(10002, 'pass456', '李四', '女', 2, '13998765432', '上海市浦东新区', '1999-07-20', '[email protected]', '310115199907201234'),
(10003, 'abc123', '王五', '男', 1, '13787654321', '广州市天河区', '2001-01-10', '[email protected]', '440106200101102345'),
(10004, 'pass789', '赵六', '女', 3, '13611112222', '深圳市南山区', '2003-05-25', '[email protected]', '440305200305252678'),
(10005, 'qwerty', '陈七', '男', 2, '13544445555', '成都市武侯区', '2002-11-05', '[email protected]', '510107200211053456'),
(10006, 'pass789', '刘八', '女', 2, '13755556666', '重庆市渝中区', '2000-09-18', '[email protected]', '500103200009183210'),
(10007, 'abcd1234', '张九', '男', 1, '13987654321', '杭州市西湖区', '1998-12-02', '[email protected]', '330106199812021234'),
(10008, 'pass123', '王十', '女', 3, '13899998888', '南京市鼓楼区', '2004-02-28', '[email protected]', '320106200402283456'),
(10009, 'password', '赵十一', '男', 2, '13698761234', '武汉市洪山区', '2003-07-15', '[email protected]', '420111200307152345'),
(10010, 'qwerty123', '李十二', '女', 1, '13567894567', '成都市锦江区', '2001-04-30', '[email protected]', '510104200104303210'),
(10011, 'pass987', '陈十三', '男', 3, '13733334444', '广州市海珠区', '2002-08-12', '[email protected]', '440105200208123210'),
(10012, 'pass456', '李十四', '女', 1, '13922221111', '深圳市福田区', '2000-01-25', '[email protected]', '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语言是数据库语言中最核心最重要的语句,也是使用频率最高的语句

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

一、什么是查询

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第4张图片

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第5张图片

二、SELECT

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第6张图片

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第7张图片

代码演示
#查询学生表中所有学生的所有信息
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或任意多个字符
  • 与“_”一起使用,表示匹配单个字符

MySQL数据管理(二) 及 使用DQL命令查询数据(一)_第8张图片

代码演示
#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;

你可能感兴趣的:(MySQL,mysql)