当前位置: 首页 > news >正文

Linux云计算训练营笔记day09(MySQL数据库)

Linux云计算训练营笔记day09(MySQL数据库)

目录

  • Linux云计算训练营笔记day09(MySQL数据库)
    • 外键约束
    • 数据的导入和导出
      • 数据的导出
      • 数据的导入
    • DQL 数据查询语言
      • 查指定字段
      • 查所有字段
      • where 过滤条件
        • and 和 or
        • in 和 not in
        • between...and...
      • distinct
      • 练习:
        • like 模糊查询
        • NULL
      • order by
      • 分页查询

主键约束
PRIMARY KEY 非空 唯一

外键约束

FOREIGN KEY 声明了外键的列上插入的值必须在另一个表的主键上出现过

-- Active: 1747188627686@@127.0.0.1@3306@tedu
CREATE DATABASE job CHARSET=utf8;use job;-- 部门表 dept
CREATE TABLE dept(did INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(10) UNIQUE
);INSERT INTO dept VALUES(10,"研发部");
INSERT INTO dept VALUES(20,"运营部");
INSERT INTO dept VALUES(30,"市场部");SELECT * from dept;
-- 员工表 emp
CREATE Table emp(eid INT PRIMARY KEY AUTO_INCREMENT,ename VARCHAR(10) not NULL,birthday date,salary DOUBLE(8,2),deptId INT,Foreign Key (deptId) REFERENCES dept(did)
);INSERT INTO emp VALUES(1,"王林","1999-11-17",8888.88,10);
INSERT INTO emp VALUES(2,"李木婉","2000-11-17",9999.99,20);SELECT * from emp;

数据的导入和导出

数据的导出

mysqldump -u用户名 -p密码 数据库的名字 > 文件的名字.sql
把当前电脑的数据库导入出去

mysqldump -uroot -proot job > job.sql

数据的导入

数据准备tedu.sql
点击如下链接可以下载
https://download.csdn.net/download/weixin_46411355/90842134

把别人的数据库导入进来

mysql -uroot -proot < tedu.sql

DQL 数据查询语言

查询 SELECT

查指定字段

select 字段1,字段2 from 表; 查指定字段

查所有字段

select * from 表; 查所有字段

where 过滤条件

where 过滤条件 ,会把满足的条件查询出来

use tedu;-- 查询所有字段
SELECT * FROM teacher;desc teacher;-- 查看指定字段
SELECT name,salary,gender,title from teacher;
-- 查看所有学生的名字,年龄,性别,生日
desc student;
SELECT name,age,gender,birth from student;-- 查看职称为 一级讲师 的老师的名字,职称,工资,年龄
select name,title,salary,age
from teacher
where title="一级讲师";-- 查看除了 刘苍松 以为的所有老师的名字,工资,奖金,职位
SELECT name,salary,comm,title
from teacher
where name <> "刘苍松";-- 查看 职位是 大队长 的学生的名字,年龄, 性别
SELECT name,age,gender 
FROM student
where job="大队长";-- 查看年龄在30岁以上(包含)的老师的名字,职称,工资,奖金
SELECT name,title,salary,comm
from teacher
where age>=30;-- 查看2层以上(包含)的班级有哪些,列出班级名字,所在楼层
SELECT name,floor
from class
WHERE floor>=2;
and 和 or

连接多个条件
and 与 并且 两边都为真结果才为真
or 或 两边都为假结果才是假

and的优先级高于or的
如果想提高优先级,可以使用( )

-- 查看 7岁 的 大队长 都有谁,列出这些学生的名字,年龄,性别和职称
SELECT name,age,gender,job
from student
where age=7 and job="大队长";-- 查看班级编号小于6的所有中队长都有谁,列出这些学生的名字,年龄,性别,班级编号和职位
SELECT name,age,gender,class_id,job
from student
WHERE class_id<6 and job="中队长";-- 查看所有一级讲师和三级讲师的名字,职称title,工资
SELECT name,title,salary
from teacher
where title="一级讲师" or title="三级讲师";-- 查看所有大队长, 中队长,小队长的名字,性别,年龄和职位job
SELECT name,gender,age,job
from student
WHERE job="大队长" or job="中队长" or job="小队长";-- 查看班级编号在6(包含)以下的所有大队长和中队长的名字,年龄,性别,班级和职位
SELECT name,age,gender,class_id,job
from student
WHERE class_id<=6 and (job="大队长" or job="中队长");desc student;
in 和 not in

in(列表) 表示字段的值在列表中
not in(列表) 表示字段的值不在列表中

-- 查看所有大队长,中队长和小队长的名字,性别,年龄和职位
SELECT name,gender,age,job
from student
WHERE job in ("大队长","中队长","小队长");-- 查看所有 一级讲师, 二级讲师,三级讲师的名字,职称,工资和性别
SELECT name,title,salary,gender
from teacher
WHERE title in ("一级讲师", "二级讲师","三级讲师");-- 查看除了一级讲师和二级讲师之外的所有老师的名字,职称,工资
SELECT name,title,salary
from teacher
WHERE title not in ("一级讲师", "二级讲师");
-- WHERE title <> "一级讲师" and title <> "二级讲师";-- 查看除了大队长,中队长,小队长之外的其他学生的名字,职位,性别和年龄
SELECT name,job,gender,age
from student
WHERE job not in ("大队长","中队长","小队长");
between…and…

between n and m 在n和m之间
not between n and m 不在n和m之间

-- 查看工资在2000到5000之间的老师的名字,性别,年龄,工资
SELECT name,gender,age,salary
from teacher
WHERE salary BETWEEN 2000 and 5000;-- 查看年龄在7岁到10岁的学生名字,性别,年龄
SELECT name,gender,age 
from student
WHERE age BETWEEN 7 and 10;-- 查看年龄在20到35之间的男老师都有谁,列出名字,性别,年龄,职称
SELECT name,gender,age,title
from teacher
WHERE age BETWEEN 20 and 35
and gender="男";-- 查看所有3-5层的班级都有哪些,列出班级名称和所在楼层
SELECT name,floor
from class
WHERE floor BETWEEN 3 and 5;-- 查看年龄在7到10岁以外的学生的名字,性别,年龄
SELECT name,gender,age 
from student
WHERE age not BETWEEN 7 and 10;

distinct

distinct 去除重复行
distinct用在select关键字之后,可以将结果中指定字段重复的记录去除
distinct后面可以指定多个字段

-- 查看老师都有哪些职称
SELECT DISTINCT title
from teacher;
-- 查看学生都有哪些职位
select DISTINCT job
from student;
-- 查看各年龄段的学生都有哪些职位
SELECT DISTINCT age,job
from student;

练习:

-- 1.查看负责课程编号为1的男老师都有谁?
SELECT name
from teacher
WHERE subject_id=1 and gender="男";-- 2.查看工资高于5000的女老师都有谁?
SELECT name
from teacher
WHERE salary>5000 and gender="女";-- 3.查看工资高于5000的男老师或所有女老师的工资?
SELECT name,gender,salary
from teacher
WHERE salary>5000 and gender="男" or gender="女"
;
-- 4.查看所有9岁学生的学习委员和语文课代表都有谁?
SELECT name,age,job
from student
WHERE age=9 and job in ("学习委员","语文课代表");-- 5.查看工资在6000到10000之间的老师以及具体工资
SELECT name,salary
from teacher
WHERE salary BETWEEN 6000 and 10000;-- 6.查看工资在4000到8000以外的老师以及具体工资
SELECT name,salary
from teacher
WHERE salary NOT BETWEEN 4000 and 8000;-- 7.查看老师负责的课程编号都有什么?
SELECT DISTINCT subject_id
from teacher;-- 8.查看所有女老师的职称都是什么?
SELECT DISTINCT title
from teacher
WHERE gender="女";-- 9.查看7-10岁男同学的职位都有哪些?
SELECT DISTINCT job
from student
WHERE age BETWEEN 7 and 10
AND gender="男";-- 10.查看一级讲师和二级讲师的奖金是多少?
SELECT name,comm 
from teacher
WHERE title IN ("一级讲师","二级讲师");-- 11.查看除了老板和总监的其他老师的工资和奖金是多少?
SELECT name,salary,comm
from teacher
WHERE title not in ("老板","总监");-- 12.查看 3年级2班 和 5年级3班 在哪个楼层?
SELECT name,floor 
from class
WHERE name in ("3年级2班","5年级3班");
like 模糊查询

两个通配符
_ 表示一个字符
% 表示任意多个字符 0-n
like %x% 只要包含x
like x% 表示以x开头 iphone%
like %x 表示以x结尾
like _x% 表示第二个字符是x
like %x_y 倒数第三个是x,最后一个是y
like x%y 表示以x开头,以y结尾
like __x% 表示第三个字符是x

- 查看名字中包含 晶 的老师都有谁
SELECT name
from teacher
WHERE name LIKE "%晶%";-- 查看姓张的学生都有谁
SELECT name 
from student
WHERE name LIKE "张%";-- 查看三个字名字中第二个字是 平 的学生都有谁
SELECT name
from student
WHERE name LIKE "_平_";-- 查看最后一个字是 晶 的老师都有谁
SELECT name 
from teacher
WHERE name LIKE "%晶";-- 1.查询名字姓 李 的学生姓名
SELECT *
from student
WHERE name LIKE "李%";-- 2.查询名字中包含 江 的学生姓名
SELECT *
from student
WHERE name LIKE "%江%";-- 3.查询名字以 郭 结尾的学生姓名
SELECT *
from student
WHERE name LIKE "%郭";-- 4.查询 9-12岁里是 课代表 的学生信息
SELECT *
from student
WHERE age BETWEEN 9 and 12
and job LIKE "%课代表";-- 5.查询名字第二个是 苗 的学生信息
SELECT * 
from student
WHERE name LIKE "_苗%";-- 6.查询姓 邱 的课代表都是谁
SELECT *
from student
WHERE name LIKE "邱%"
AND job LIKE "%课代表";-- 7.查看哪些学生是 课代表? 列出他的名字和职位
SELECT name,job
from student
WHERE job LIKE "%课代表";-- 8.查看所有的2班都在哪层?
SELECT *
from class
WHERE name LIKE "%2班";
NULL

在数据库中 所有字段默认值都是NULL,他表示不存在,是空
NULL不能算作一个值,应该是一种状态
判断NULL
is NULL 判断一个字段的值是否为空
is not NULL 判断一个字段的值是否为非空
不可以用 = 或者 <> 来判断NULL

-- 哪些老师没有奖金
SELECT *
from teacher
WHERE comm is NULL;-- 哪些老师有奖金  (哪些老师的奖金不为空 is NOT NULL)
SELECT *
from teacher
WHERE comm is NOT NULL and comm <> 0;

order by

把查询的结果按照指定的字段升序或降序
asc: 按照指定字段升序 小到大
desc: 按照指定字段降序 大到小
不指定排序方式,默认为升序
如果按照多字段排序:
首先将结果集按照第一个字段进行排序
当第一个字段值重复的时候,在按照第二个字段进行排序
优先级: order by后第一个字段为最先,第二个排第二

日期比较大小规则: 距离现在越近的日期越大
NULL在数据库中被视作最小值

-- 查看老师的工资从高到底
SELECT name,salary
from teacher
ORDER BY salary desc;-- 查看老师的奖金排名
SELECT name,comm
from teacher
ORDER BY comm desc;-- 查看学生的生日,按照从远到近(小到大 升序)
SELECT *
from student
ORDER BY birth ASC; -- 查看7-10岁的学生信息,学生按照年龄从大到小排序(同年龄的看生日)
SELECT name,birth 
from student
WHERE age BETWEEN 7 and 10
ORDER BY birth;-- 查看老师的工资和奖金,首先按照奖金的升序,在按照的工资的降序
SELECT name,salary,comm
from teacher
ORDER BY comm ASC,salary desc;

分页查询

分页查询: 将查询的结果按照分段显示出来
当查询的结果较多时,就可以使用分页查询

语法:
select xx
from xx
where xx
order by xx
limit M,N
M和N是两个整数

M: 表示跳过结果集中多少条记录(起始位置)
N: 表示从M位置开始查询出多少条记录
分页中常见的参数:

  1. 当前的页数
  2. 每页显示多少条记录
    M: (当前页数-1)*每页显示的条目数
    N: 每页显示多少条
-- 查看老师工资的前5名
-- 1)按照工资进行降序  2)分页查询
-- M: (当前页数-1)*N  M:(1-1)X5  => M: 0
-- N: 5
SELECT name,salary
from teacher
ORDER BY salary desc
LIMIT 0,5;
-- 第一页的数据  M:(1-1)X5    M: 0     N:5
-- 第二页的数据   M: (2-1)X5    M: 5    N: 5
SELECT name,salary
from teacher
ORDER BY salary desc
LIMIT 5,5;-- 查看老师奖金信息,按照降序排序后,每页显示3条,显示第五页?
-- M: (5-1)x3  =>M:12    N:3
SELECT name,comm
from teacher
ORDER BY comm desc
LIMIT 12,3;

相关文章:

  • 进度管理高分论文
  • 在 Hugo 博客中集成评论系统 Waline 与 浏览量统计
  • 基于“物理—事理—人理”的多源异构大数据融合探究
  • bfs搜索加标记连通区域id实现时间优化(空间换时间)
  • Go语言八股之Mysql事务
  • 扬州卓韵酒店用品:优质洗浴用品,提升酒店满意度与品牌形象
  • TCP(传输控制协议)建立连接的过程
  • Git/GitLab日常使用的命令指南来了!
  • 前端代码生成博客封面图片
  • 寻找两个正序数组的中位数 - 困难
  • 【BotSharp详细介绍——一步步实现MCP+LLM的聊天问答实例】
  • vscode c++编译onnxruntime cuda 出现的问题
  • 浏览器宝塔访问不了给的面板地址
  • 运维职业发展思维导图
  • 幼儿学前教育答辩词答辩技巧问题答辩自述稿
  • React Native/Flutter 原生模块开发
  • BGP实验(联邦及反射器)
  • SQL:MySQL函数:条件函数(Conditional Functions)
  • Day 21 训练
  • Spring+LangChain4j小智医疗项目
  • 泉州围头湾一港区项目炸礁被指影响中华白海豚,官方:已叫停重新评估
  • 贵州省委军民融合发展委员会办公室副主任李刚接受审查调查
  • 俄代表团:16日上午将继续“等候乌代表团”
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗
  • 远洋集团:今年前4个月销售80.9亿元,同比增加13.62%
  • 国防部:菲方应停止一切侵权挑衅危险举动,否则只会自食苦果