DQL 概述+查询指定字段+WHERE 条件子句

MySQL 数据库学习笔记

一、数据库与表创建(school 数据库)

1. 创建数据库

create database if not exists `school`;
-- 创建一个school数据库
use `school`;-- 创建学生表

2. 创建学生表

drop table if exists `student`;
create table `student`(
`studentno` int(4) not null comment '学号',
`loginpwd` varchar(20) default null,
`studentname` varchar(20) default null comment '学生姓名',
`sex` tinyint(1) default null comment '性别,0或1',
`gradeid` int(11) default null comment '年级编号',
`phone` varchar(50) not null comment '联系电话,允许为空',
`address` varchar(255) not null comment '地址,允许为空',
`borndate` datetime default null comment '出生时间',
`email` varchar (50) not null comment '邮箱账号允许为空',
`identitycard` varchar(18) default null comment '身份证号',
primary key (`studentno`),
unique key `identitycard`(`identitycard`),
key `email` (`email`)
)engine=myisam default charset=utf8;

3. 创建年级表

-- 创建年级表
drop table if exists `grade`;
create table `grade`(
`gradeid` int(11) not null auto_increment comment '年级编号',
`gradename` varchar(50) not null comment '年级名称',
primary key (`gradeid`)
) engine=innodb auto_increment = 6 default charset = utf8;

4. 创建科目表

-- 创建科目表
drop table if exists `subject`;
create table `subject`(
`subjectno`int(11) not null auto_increment comment '课程编号',
`subjectname` varchar(50) default null comment '课程名称',
`classhour` int(4) default null comment '学时',
`gradeid` int(4) default null comment '年级编号',
primary key (`subjectno`)
)engine = innodb auto_increment = 19 default charset = utf8;

5. 创建成绩表

-- 创建成绩表
drop table if exists `result`;
create table `result`(
`studentno` int(4) not null comment '学号',
`subjectno` int(4) not null comment '课程编号',
`examdate` datetime not null comment '考试日期',
`studentresult` int (4) not null comment '考试成绩',
key `subjectno` (`subjectno`)
)engine = innodb default charset = utf8;

二、数据插入操作

1. 插入学生数据

-- 插入学生数据 其余自行添加 这里只添加了2行
insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
values
(1000,'123456','张伟',0,2,'13800001234','北京朝阳','1980-1-1','text123@qq.com','123456198001011234'),
(1001,'123456','赵强',1,3,'13800002222','广东深圳','1990-1-1','text111@qq.com','123456199001011233');

2. 插入成绩数据

-- 插入成绩数据 这里仅插入了一组,其余自行添加
insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
values
(1000,1,'2013-11-11 16:00:00',85),
(1000,2,'2013-11-12 16:00:00',70),
(1000,3,'2013-11-11 09:00:00',68),
(1000,4,'2013-11-13 16:00:00',98),
(1000,5,'2013-11-14 16:00:00',58);

3. 插入年级数据

-- 插入年级数据
insert into `grade` (`gradeid`,`gradename`) values(1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'预科班');

4. 插入科目数据

-- 插入科目数据
insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
(1,'高等数学-1',110,1),
(2,'高等数学-2',110,2),
(3,'高等数学-3',100,3),
(4,'高等数学-4',130,4),
(5,'C语言-1',110,1),
(6,'C语言-2',110,2),
(7,'C语言-3',100,3),
(8,'C语言-4',130,4),
(9,'Java程序设计-1',110,1),
(10,'Java程序设计-2',110,2),
(11,'Java程序设计-3',100,3),
(12,'Java程序设计-4',130,4),
(13,'数据库结构-1',110,1),
(14,'数据库结构-2',110,2),
(15,'数据库结构-3',100,3),
(16,'数据库结构-4',130,4),
(17,'C#基础',130,1);

三、DQL 数据查询语言

4.1 DQL 概述

Data Query Language :数据查询语言

  • 所有查询操作都用它 Select
  • 简单+复杂查询都能做
  • 数据库中最核心的语言,最重要的语句
  • 使用频率最高的语句

4.2 查询指定字段

语法SELECT 字段,...... FROM 表
有的时候不够见名知意 可以使用 AS 取别名(字段,表)

-- 查询全部的字段   SELECT 字段 FROM 表
SELECT * FROM student

SELECT * FROM result

-- 查询指定的字段
SELECT `studentno`,`studentname` FROM student

-- 别名,给结果起一个名字  AS  可以给字段起别名,也可以给表起别名  (空格取别名)
SELECT `studentno` AS 学号,`studentname` AS 学生姓名 FROM student AS s

-- 函数 CONCAT(a,b)
SELECT CONCAT('姓名: ',studentname) AS 新名字 FROM student

-- 去重 DISTINCT
-- 作用:去除SELECT查询出来的结果中重复的数据,重复数据只显示一条

SELECT * FROM result -- 查询全部的考试成绩

SELECT `studentno` FROM result -- 查询有那些同学参加了考试

SELECT DISTINCT `studentno` FROM result -- 发现重复数据,去重

-- 特殊查询
SELECT VERSION() -- 查询系统版本 (函数)
SELECT 1000*3-533 AS 计算结果 -- 用来计算 (计算表达式)
SELECT @@auto_increment_increment -- 查询自增的步长 (变量)

-- 学员考试成绩 + 1分查询
SELECT `studentno`, `studentresult` FROM result
SELECT `studentno`, `studentresult`+ 1 AS '提分后' FROM result

总结SELECT 表达式 FROM 表
数据库中的表达式: 文本值,列,NULL,函数,计算表达式,系统变量......

4.3 WHERE 条件子句

作用:检索数据中符合条件的值
搜索的条件由一个或者多个表达式组成! 结果为 布尔值

逻辑运算符(尽量使用英文字母)

运算符 语法 描述
AND && a AND b a && b 逻辑与 两真则真
OR
NOT ! NOT a ! a 逻辑非 真为假,假为真
-- =================== WHERE ==================== --
SELECT studentno,studentresult FROM result

-- 查询考试成绩在 95~100 之间 AND  &&
SELECT studentno,studentresult FROM result WHERE studentresult>=95 AND studentresult<=100

SELECT studentno,studentresult FROM result WHERE studentresult>=95 && studentresult<=100

-- 模糊查询(区间)BETWEEN  AND
SELECT studentno,studentresult FROM result WHERE studentresult BETWEEN 95 AND 100

-- 除了1000号学生之外的同学的成绩 NOT  !  
SELECT studentno,studentresult FROM result WHERE studentno != 1000

SELECT studentno,studentresult FROM result WHERE NOT studentno = 1000

比较运算符(模糊查询)

运算符 语法 描述
IS NULL a IS NULL 为null,结果为真
IS NOT NULL a IS NOT NULL 不为null,结果为真
BETWEEN a BETWEEN b AND c 若a在b和c之间,结果为真
LIKE a LIKE b SQL匹配,如果a匹配b,则结果为真
IN a IN (a1,a2,a3,...) 如果a在a1,a2...其中的某一个值中,结果为真
-- =================== LIKE ==================== --
-- 查询姓刘的同学
-- like结合 %(代表0到任意个字符)   _(一个字符)
SELECT `studentno`,`studentname` FROM student WHERE `studentname` LIKE '刘%'

-- 查询姓刘的同学,名字后面只有一个字的
SELECT `studentno`,`studentname` FROM student WHERE `studentname` LIKE '刘_'

-- 查询姓刘的同学,名字后面只有两个字的
SELECT `studentno`,`studentname` FROM student WHERE `studentname` LIKE '刘__'

-- 查询名字中间有'嘉'的同学,名字后面只有两个字的
SELECT `studentno`,`studentname` FROM student WHERE `studentname` LIKE '%嘉%'

-- =================== IN(具体的一个值或多个值) ==================== --
-- 查询1001,1002,1003号学员
SELECT `studentno`,`studentname` FROM student WHERE studentno IN(1001,1002,1003)

-- 查询在北京学员
SELECT `studentno`,`studentname` FROM student WHERE `address` IN ('北京','安徽')

-- =================== NULL  NOT NULL ==================== --

-- 查询地址为空的学生 null ''
SELECT `studentno`,`studentname` FROM student WHERE address = '' OR address IS NULL 

-- 查询有出生日期的同学   不为空
SELECT `studentno`,`studentname`,`borndate` FROM student WHERE borndate IS NOT NULL

-- 查询没有出生日期的同学   为空
SELECT `studentno`,`studentname`,`borndate` FROM student WHERE borndate IS NULL

总结

  1. 完整创建了 school 数据库及学生、年级、科目、成绩4张核心表,定义了字段约束、主键、索引和存储引擎
  2. 完成了基础测试数据的插入,为查询操作提供数据支撑
  3. 掌握 DQL 核心语法:指定字段查询、别名、去重、表达式计算
  4. 熟练使用 WHERE 条件子句:逻辑运算符、比较运算符、LIKE/IN/NULL 模糊查询
posted @ 2026-04-13 20:35  果子同志  阅读(22)  评论(0)    收藏  举报