安福网站建设,简洁大方的网站首页,猎头公司前十名,关于做网站的笑话2024.4.1 Monday 目录 4.DQL查询数据#xff08;重点#xff01;#xff09;4.1.Data Query Language查询数据语言4.2.SELECT4.2.1.语法4.2.2.实践4.2.2.1.查询字段 SELECT 字段/* FROM 表查询全部的某某查询指定字段 4.2.2.2.给查询结果或者查询的这个表起别名#xff08…2024.4.1 Monday 目录 4.DQL查询数据重点4.1.Data Query Language查询数据语言4.2.SELECT4.2.1.语法4.2.2.实践4.2.2.1.查询字段 SELECT 字段/* FROM 表查询全部的某某查询指定字段 4.2.2.2.给查询结果或者查询的这个表起别名不用原本的字段名 AS4.2.2.3.使用函数拼接字符串 Concat(A, B)4.2.2.4.DISTINCT关键字的使用查询有参加过考试的同学 - 通过考试‘有’成绩来选择查询有哪些同学参加过考试对于‘参加过’考试的同学StudentNo数据去重 4.2.2.5.数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成应用场景4.2.2.6.查看学员考试成绩加了1分的结果 4.3.Where条件字句4.3.1.作用检索数据中符合条件的值4.3.2.逻辑操作符4.3.3.例4.3.3.1.查询StudentResult在95~100之间的4.3.3.2.查询除了1000号手机以外的同学的成绩 4.3.4.模糊查询比较运算符4.3.5.例4.3.5.1.LIKE搭配 %表示0~任意个字符_表示一个字符 --查询姓刘的同学查询姓刘的二字同学查询姓刘的三字同学查询名字中间有‘强’字的同学 4.3.5.2.IN 具体的一个或多个值查询1001,1002,1003号学员查询在北京朝阳的学生同理多个地点满足一个即可时就在‘’后加逗号继续写上其他的可选值 4.3.5.3.NULL NOT NULL查询地址为空的学生null或者查询有出生日期的同学borndate不为空查询没有出生日期的同学borndate为空 4.DQL查询数据重点
4.1.Data Query Language查询数据语言
4.1.1.查询数据库数据 , 如SELECT语句 4.1.2.简单 的单表查询或多表的复杂查询和嵌套查询 4.1.3.是数据库语言中最核心,最重要的语句 4.1.4.使用频率最高的语句
4.2.SELECT
这里开始的数据库名称为‘p16select’
建表查询相关代码如下数据库名称为‘school’
create database if not exists school;
-- 创建一个school数据库
use school;-- 创建学生表
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)
)enginemyisam default charsetutf8;-- 创建年级表
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)
) engineinnodb auto_increment 6 default charset utf8;-- 创建科目表
drop table if exists subject;
create table subject(subjectnoint(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;-- 创建成绩表
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;#3
-- 插入学生数据 其余自行添加 这里只添加了2行
insert into student (studentno,loginpwd,studentname,sex,gradeid,phone,address,borndate,email,identitycard)
values
(1000,123456,张伟,0,2,13800001234,北京朝阳,1980-1-1,text123qq.com,123456198001011234),
(1001,123456,赵强,1,3,13800002222,广东深圳,1990-1-1,text111qq.com,123456199001011233),
(1002,123456,刘福,0,4,13800002333,广东深圳,1990-1-1,text211qq.com,123456199091011232),
(1003,123456,刘大福,0,5,13800002233,广东深圳,1990-1-1,text221qq.com,123456199091011332),
(1004,123456,吴福,0,5,13800003333,北京,NULL,text222qq.com,123456199991011332);-- 插入成绩数据 这里仅插入了一组其余自行添加
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),
(1001,1,2013-11-11 16:00:00,70),
(1001,2,2013-11-12 16:00:00,0),
(1001,3,2013-11-11 09:00:00,80);-- 插入年级数据
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);#5
CREATE TABLE category(categoryid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主题id, -- 不同的名字算不一样的idpid INT(10) NOT NULL COMMENT 父id, -- 大类的第x类categoryname VARCHAR(50) NOT NULL COMMENT 主题名字,
PRIMARY KEY (categoryid) ) ENGINEINNODB AUTO_INCREMENT9 DEFAULT CHARSETutf8; INSERT INTO category (categoryid, pid, categoryname)
VALUES (2,1,信息技术),
(3,1,软件开发),
(5,1,美术设计),
(4,3,数据库),
(8,2,办公信息),
(6,3,web开发),
(7,5,ps技术);4.2.1.语法
SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias][left | right | inner join table_name2] -- 联合查询[WHERE ...] -- 指定结果需满足的条件[GROUP BY ...] -- 指定结果按照哪几个字段来分组[HAVING] -- 过滤分组的记录必须满足的次要条件[ORDER BY ...] -- 指定查询记录按一个或多个条件排序[LIMIT {[offset,]row_count | row_countOFFSET offset}];-- 指定查询的记录从哪条至哪条4.2.2.实践
4.2.2.1.查询字段 SELECT 字段/* FROM 表
查询全部的某某
-- 查询全部的某某 SELECT 字段/* FROM 表
SELECT * FROM studentSELECT * FROM result查询指定字段
-- 查询指定字段
SELECT StudentNo,StudentName FROM student4.2.2.2.给查询结果或者查询的这个表起别名不用原本的字段名 AS
-- 给查询的字段/结果/查询的这个表起别名不用原本的字段名 AS
SELECT StudentNo AS 学号,StudentName AS 姓名 FROM student AS STU4.2.2.3.使用函数拼接字符串 Concat(A, B)
-- 使用函数拼接字符串 Concat(A, B)
SELECT CONCAT(姓名,StudentName) AS 新格式 FROM student4.2.2.4.DISTINCT关键字的使用
查询有参加过考试的同学 - 通过考试‘有’成绩来选择
-- 查询有参加过考试的同学 - 通过考试‘有’成绩来选择
SELECT * FROM result查询有哪些同学参加过考试
-- 查询有哪些同学参加过考试
SELECT StudentNo FROM result对于‘参加过’考试的同学StudentNo数据去重
-- 对于‘参加过’考试的同学StudentNo数据去重
SELECT DISTINCT StudentNo FROM result4.2.2.5.数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成应用场景
SELECT语句返回结果列中使用SELECT语句中的ORDER BY , HAVING等子句中使用DML语句中的 where 条件语句中使用表达式
-- 查询系统版本函数
SELECT VERSION()
-- 计算数学算式结果表达式
SELECT 1021*3-999 AS CAL_RESULT
-- 查询自增步长变量
SELECT AUTO_INCREMENT_INCREMENT4.2.2.6.查看学员考试成绩加了1分的结果
-- 查看学员考试成绩加了1分的结果
SELECT StudentNo, StudentResult1 AS 显示时加一分 FROM result4.3.Where条件字句
4.3.1.作用检索数据中符合条件的值
搜索条件可由一个或多个逻辑表达式组成 , 结果一般为布尔值真或假
4.3.2.逻辑操作符 4.3.3.例
4.3.3.1.查询StudentResult在95~100之间的
#where条件语句
SELECT studentNo, StudentResult FROM result -- 查询全部的
#逻辑查询
-- 查询StudentResult在95~100之间的
SELECT studentNo, StudentResult FROM result
WHERE StudentResult 95 AND StudentResult 100
-- 用AND或者都可以
SELECT studentNo, StudentResult FROM result
WHERE StudentResult 95 StudentResult 100
-- 用‘模糊查询’区间查询也可以
SELECT studentNo, StudentResult FROM result
WHERE StudentResult BETWEEN 95 AND 1004.3.3.2.查询除了1000号手机以外的同学的成绩
-- 查询除了1000号手机以外的同学的成绩
SELECT studentNo, StudentResult FROM result
WHERE studentNo ! 1000; -- 或者
SELECT studentNo, StudentResult FROM result
WHERE NOT studentNo 1000; -- 注意NOT的位置4.3.4.模糊查询比较运算符 4.3.5.例
4.3.5.1.LIKE搭配 %表示0~任意个字符_表示一个字符 –
查询姓刘的同学
#模糊查询
-- 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 %强%-- 查询姓名中含有特殊字符的需要使用转义符号 \
-- 自定义转义符关键字: ESCAPE :4.3.5.2.IN 具体的一个或多个值
查询1001,1002,1003号学员
-- IN 具体的一个或多个值 --
-- 查询1001,1002,1003号学员
SELECT studentNo,StudentName FROM student
WHERE StudentNo IN (1001,1002,1003);
-- 和以下OR语句作用相同
SELECT studentNo,StudentName FROM student
WHERE StudentNo 1001 OR StudentNo 1002 OR StudentNo 1003查询在北京朝阳的学生同理多个地点满足一个即可时就在‘’后加逗号继续写上其他的可选值
-- 查询在北京朝阳的学生同理多个地点满足一个即可时就在‘’后加逗号继续写上其他的可选值
SELECT studentNo,StudentName,address FROM student
WHERE Address IN (北京朝阳)4.3.5.3.NULL NOT NULL
查询地址为空的学生null或者’
-- NULL NOT NULL --
-- 查询地址为空的学生null或者
SELECT studentNo,StudentName,address FROM student
WHERE address OR address IS NULL查询有出生日期的同学borndate不为空
-- 查询有出生日期的同学borndate不为空
SELECT studentNo,StudentName,borndate FROM student
WHERE borndate IS NOT NULL查询没有出生日期的同学borndate为空
-- 查询没有出生日期的同学borndate为空
SELECT studentNo,StudentName,borndate FROM student
WHERE borndate IS NULL