1.DQL(Data Query Language):
- 几个数据库语言中的最核心的语言。
- 数据库中所有简单的查询、复杂的查询都是用DQL。
- 使用频率极高。
2.实现过程:
2.1简单select查询及定义别名的语法:
查询表的全部内容:
- SELECT * FROM
表名
;
查询表中指定字段内容(未设置别称):
- SELECT
字段1名称
,...
,字段n名称
FROM表名
;
查询表中指定字段内容(设置别称):
- 有时候我们字段名称起的不是那么容易看懂,那么我们查询出来可能会造成阅读困难,所以此时我们可以使用 AS 关键字来给字段名起一个别称,方便阅读结果。
- SELECT
字段1名称
AS别称
,...
,字段n名称
AS别称
FROM表名
AS别称
;
运用concat(a,b)数据库字符串拼接函数来融合查询指定字段(设置别称)。
- SELECT CONCAT(‘拼接内容’,
字段1名称
) AS别称
,...
, CONCAT(‘拼接内容’,字段n名称
) AS别称
FROM表名
AS别称
;
CREATE DATABASE IF NOT EXISTS `school`;
USE `school`;
-- 年级表创建以及数据插入
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade`(
`grade_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '年级编号',
`grade_name` VARCHAR(20) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`grade_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `grade` (`grade_id`,`grade_name`)
VALUES (1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'研究生');
-- 学生表创建以及数据插入
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`(
`student_no` INT(4) NOT NULL COMMENT '学生学号',
`login_pwd` VARCHAR(20) DEFAULT NULL COMMENT '登陆密码',
`student_name` VARCHAR(20) DEFAULT NULL COMMENT '学生姓名',
`sex` TINYINT(1) DEFAULT NULL COMMENT '性别,0或1',
`grade_id` INT(11) DEFAULT NULL COMMENT '年级编号',
`tel` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱账号',
`ID_number` VARCHAR(18) DEFAULT NULL COMMENT '身份证号码',
PRIMARY KEY (`student_no`),
UNIQUE KEY `ID_number`(`ID_number`),
KEY `email`(`email`)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;
INSERT INTO `student` (`student_no`,`login_pwd`,`student_name`,`sex`,
`grade_id`,`tel`,`address`,`birthday`,`email`,`ID_number`)
VALUES(1000,'123456','张三',0,2,'18888888888','火星','1900-1-1','text1@qq.com','123456789012345678'),
(1001,'123456','李四',1,3,'19999999999','水星','1901-1-1','text2@qq.com','098765432109876543');
-- 科目表创建以及数据插入
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject`(
`subject_no` INT(11) NOT NULL AUTO_INCREMENT COMMENT '课程编号',
`subject_name` VARCHAR(50) DEFAULT NULL COMMENT '课程名称',
`period` INT(4) DEFAULT NULL COMMENT '学时',
`grade_id` INT(4) DEFAULT NULL COMMENT '年级编号',
PRIMARY KEY (`subject_no`)
)ENGINE=INNODB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
INSERT INTO `subject`(`subject_no`,`subject_name`,`period`,`grade_id`)
VALUES(1,'高等数学',64,1),
(2,'C语言基础',64,1),
(3,'C++程序设计',64,1),
(4,'Java程序设计',64,1),
(5,'数据结构',64,1);
-- 成绩表创建以及数据插入
DROP TABLE IF EXISTS `result`;
CREATE TABLE `result`(
`student_no` INT(4) NOT NULL COMMENT '学生学号',
`subject_no` INT(11) NOT NULL COMMENT '课程编号',
`exam_date` DATETIME NOT NULL COMMENT '考试时间',
`student_result` INT(4) NOT NULL COMMENT '考试成绩',
KEY `subject_no`(`subject_no`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `result`(`student_no`,`subject_no`,`exam_date`,`student_result`)
VALUES(1000,1,'2021-01-01 00:00:00',85),
(1000,2,'2021-01-01 00:00:00',86),
(1000,3,'2021-01-01 00:00:00',87),
(1000,4,'2021-01-01 00:00:00',88),
(1000,5,'2021-01-01 00:00:00',89);
-- 简单查询过程:
-- 查寻表全部内容。
SELECT * FROM `student`;
-- 查询指定字段(没有设置别称)。
SELECT `student_no`,`student_name` FROM `student`;
-- 查询指定字段(设置别称)。
SELECT `student_no` AS 学号,`student_name` AS 学生姓名 FROM `student`;
-- 运用concat(a,b)数据库字符串拼接函数来融合查询指定字段(设置别称)。
SELECT CONCAT('学号:',`student_no`) AS `学号`,CONCAT('姓名:',`student_name`) AS 学生姓名 FROM `student`;
2.2 去重以及据库的表达式语法:
去重(distinct)
作用:去除SELECT查询结果中重复的数据,保留重复数据中的一条。
语法:SELECT DISTINCT
字段名1
,字段n
FROM表名
;
/* 紧接着上面实验简单查询所需创建的表以及数据继续往下些SQL */
-- 统计此次参加考试了的人的学号。
SELECT `student_no` AS 学号 FROM `result`;
/* 执行下面这条查询语句会发现将1000学号的学生的考试结果都 查出来了,信息重复了,于是我们执行去重。 */
SELECT DISTINCT `student_no` AS 学号 FROM `result`;
/* 执行去重过后的查询语句发现只显示一条1000,说明去重成功了。 */
2.3 继续深入:
我们在之前简单查询和去重之后我们可以知道:
- 在 SELECT
...
FROM表名
; 之间的...
中的内容可以拓展。 - 于是SELECT语句的使用方法也就逐渐加深。
/* 紧接着上面实验简单查询所需创建的表以及数据继续往下些SQL */
-- 查询语句用来计算(表达式):
SELECT 1*2*3*4*5 AS 计算5的阶乘结果;
-- 查询语句用来查询自增步长(变量):
SELECT @@AUTO_INCREMENT_INCREMENT AS 自增步长;
-- 查询语句用来查询当前MySQL版本(函数):
SELECT VERSION() AS 当前MySQL版本;
综上可知:
-
算数表达式、系统变量、函数、NULL、列等等都是属于数据库中的表达式。
-
所以在 SELECT
...
FROM表名
; 之间的...
中的内容可以拓展的内容非常多。 -
...
中就可以是数据库的表达式。
所以SELECT
...
FROM表名
可以概括为:
- SELECT
数据库中的表达式
[FROM表名
];([]中内容可以省略)。
2.4 where 条件语句:
-
通常情况下大家要做条件查询都是SELECT … WHERE …
-
那么我们来学习一下WHERE条件语句。
where条件语句之逻辑运算符:
运算符 | 描述 | 示例 |
---|---|---|
AND(&&) | 逻辑与 | 条件1 AND(&&) 条件2 |
OR(||) | 逻辑或 | 条件1 OR(||) 条件2 |
NOT(!) | 逻辑非 | NOT 条件 |
/* 紧接着上面实验简单查询所需创建的表以及数据继续往下些SQL */
-- 查询课程号码在2~4号的课程名称。
SELECT `subject_no` AS 课程编号,`subject_name` AS 课程名称 FROM `subject`
WHERE `subject_no`>=2 AND `subject_no`<=4;
-- 查询课程号码在2~4号的课程名称(模糊查询)。
SELECT `subject_no` AS 课程编号,`subject_name` AS 课程名称 FROM `subject`
WHERE `subject_no` BETWEEN 2 AND 4;
-- 查询除了课程编号为1的课程外的其他课程。
SELECT `subject_no` AS 课程编号,`subject_name` AS 课程名称 FROM `subject`
WHERE NOT `subject_no`=1;
2021.1.15
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解,也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕
本文地址:https://blog.csdn.net/SIESTA030/article/details/112565237