MYSQL期中复习

MYSQL

[语句不要拼错,表名、列名不要写错,语句难记要记住]

创建表

模版

create table 表名(列名1 数据类型 [约束],

列明2 数据类型 [约束],

[表级约束]);


约束

单一主码约束

primary key

联合主码约束

primary key(列名1,列名2) [要在列名12定义后,的单独表级约束]

外码约束

foreign key(当前列名) references 另一表名(参照列名)

如:sc表的 sno 引用student的外码(sno)

foreign key(sno) references student(sno)

cascade 级联

restrict 限制

on delete restrict 删除限制

on update cascade 更新级联

  • 聪明的你自己写出:删除级联 ——————————

实战实例

sc表的 sno 引用Student的外码(sno),设置删除限制,更新级联

foreign key(sno) references student(sno) on delete restrict on update cascade

非空约束

not null

唯一约束

unique [允许有一个空值]

枚举类型

[有的版本不支持]

ENUM('男','女') [前面无需数据类型]

条件约束

列名 数据类型 check(列名=0)

默认取值

default 取的值 [前面需数据类型]

如: sdept varchar(20) default '计算机系'

自动增长列

auto_increment 一般是主键约束

数据类型

char(n) 字符型

varchar(n)可变长字符

int 整型

date 日期型

smallint

枚举类型建议一定是enum 且前面不需加数据类型

decimal(m,n) 数值型 m表示数据长度(整数位数+小数位数),n表示小数点后长度

修改表

模版

alter table 表名

[新加列]add 新列名 数据类型 [约束] //新增加一个列,

drop column 列名 //删除列,

[修改列常用]modify 待修改的列名 要修改的数据类型 //修改列的类型,

add column 列名 type 数据类型 //修改列的类型,

add foreign key(列名1) references 表名(列名2) on delete cascade,

rename column 旧列名 to 新列名 //修改列名;

增加自动增长列

alter table 表名 add column 列名 数据类型 auto_increment

实例:

alter table spj add column id int PRIMARY KEY auto_increment;

当一个select 要修改多个时候,多个语句要加逗号隔开,

或多个select 多次修改[考试禁用,因为考试时只能一条语句]

修改职工表emp:

增加列:部门编号:dno char(3) ,设置外码约束参照部门表dept的dno,并设置删除和更新均为级联。

alter table emp 
add column dno char(3) ,
add FOREIGN KEY (dno) REFERENCES dept(dno) ON DELETE CASCADE ON UPDATE CASCADE;

查询表

模版

select 输出的列名1,输出的列名2

from 表名1,表名2

[以下皆可选,但相对顺序要与下面一致]

where [条件]

group by [分组]

having [条件]

order by [排序]

limit [限制输出行数]

tips

`` 可以用重命名 [esc下面那个键]

多个表起 别名

多个列加 表名.

select

select *

[选择所有列的所有行]


select 列名1,列名2,'hello'

还可以乱入一列全是hello的列[列名也是hello 这样毫无意义]

一般在后面加as 取别名(别名最好''引用起来) 或直接不加as

select sno,sname,'hello' as comment
from student
select sno,sname,'hello' comment
from student

image-20241029170934216

image-20241029171017649

select 计算表达式

要求输出出生年份,但表中只给了年龄

select 2024-age [更标准用函数获取今年年份]

current_date() //返回当前日期 格式2024-10-29 实战直接用curdate() 一样效果

year(date) 提取年份 如:year('2024-10-22') =2024 延伸月、天等也可以

select year(current_date())-age

select 2+5 输出一列7


select concat(列名1,列名2,'我是聪明蛋')

把列1和列2 合并成一列输出 [不只是列,还可以乱入任意字符]

select name as 'office-name',concat(province ,address) as 'office-address'
from office

select group_concat([distinct] 列名 [order by] separator '分隔符')

这个语句一般要分组使用,或者只有一行也行

将多个行中的字段 连接起来,以一个列表输出,按排序规则,以分隔符隔开,选择去重

select dept_id,GROUP_CONCAT(DISTINCT job_title order by job_title SEPARATOR ',')
from employee
where dept_id=1000
​

group_concat(distinct exp order by separator '')

distinct 可选,去重

exp 行名

order by 列表内容排序规则

separator 以什么东西分隔开

返回一个列表,即字符串列表


select 函数

round(grade) 取整数

round(grade , 2) 取两位小数

count()

count(*) 返回NULL和非NULL的行数,即所有行。

count(exp) 返回exp为非NULL的行数。

count(distinct exp) 返回exp无重复且非NULL的行数。

AVG() :[平均值]只适用于数值类型的字段或变量。不包含NULL值

SUM() :[取和]只适用于数值类型的字段或变量。不包含NULL值

MAX() :[最大值]适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值

MIN() :[最小值]适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值


from

from 单个表名

from 表名1,表名2

from 表名1,(select------) as 表名2 [派生表2]

其中多表联合一般都可以用如下解决,不必思考其他[太麻烦了,看不懂,记不清,且没遇到过必须用的]

from b1,b2

where b1.sno= b2.sno

where

后面加的是表中出现的列的有关条件

where 后面一般是表中列名符合什么什么条件


like 字符串模糊匹配

like '%数据%'

%任意数量字符

_单个字符

where sname not like '张%';//不姓张
where product_name like '%联想%'//名称出现联想

空值

is NULL 是NULL

is not NULL 不是NULL


in ()

存在于括内列表内

not in ()表示不存在

一般在in 前还要加一个变量如 sno in()

SELECT
    * 
FROM
    employee 
WHERE
    job_title IS NULL 
    OR job_title NOT IN ( '总经理', '经理' );

group by

加一个表中变量,且这个变量是唯一的,无重复值[有重复,两个组就一样了,还分个蛋组]

如:group by sno

having

对分组后结果 再次进行条件查询

多加上count()语句

查询统计学生不及格(低于60分)门数大于等于2门的信息,输出系名,学号,姓名,不及格门数,按照系(升序)排序,不及格门数(降序)排序

select sdept,sc.sno,sname,count(*)
from student,sc
where student.sno=sc.sno and grade<60
group by sno
having count(*)>=2 
order by 1 asc,4 desc

order by

asc 升序[默认]

desc 降序

单一排序规则

列名 desc/asc [还可以直接把列名换成select 输出的第几个列]

联合排序规则

列名1 desc ,列名2 asc [逗号]

limit

limit +n 只输出前n行信息

limit n,m 从第n+1条记录开始,返回m条记录

limit 1,4 是2-5

union

把两个表结果连接起来,要求两个表结构一样[列数等等]

select distinct bno as No,bname as Name,'图书' as Type
from book
union
select distinct cno as No,name as Name,'学生'as Type
from card

bookUnionCard.png

高阶查询

在where后的嵌套查询

in

select *
from student
where sdept in (select sdept from student where sname='王大力')

借用select 查询返回的集合

没有同时选修“计算机导论”和“计算机网络”两门课的学生的学号,姓名

也就是 不是都有这两门课

select sno,sname
from student
where sno not in 
(select sno from course,sc 
where course.cno=sc.cno and cname='计算机导论' 
and sno in 
(select sno from course,sc 
where course.cno=sc.cno and cname='计算机网络'))

not exists

查询选修了全部课程的学生的学号,姓名,系名

(不是非常懂,不分析了,暂时记住模版吧)

理解就是从第一个表也就是student的每一行执行后面语句,得到true就输出,否则下一行继续

student的一行拿到与第二个表course 的每一行一个一个比对,执行下面,也就是sc表

第三个表中一个一个执行两个比较语句[course.cno=sc.cno and sc.sno=student.sno)] ,其中如果一个学生没有选那门课就会false ,第二个not exists 会是一个非空集,然后第一个not exists 会是一个空集,就不输出。

以上纯属瞎扯

第一个select 输出的列

第二个select条件(全部课程)

第三个select 两个等于

select sno,sname,sdept
from student
where not exists (select * from course where 
not exists (
select *from sc where course.cno=sc.cno and sc.sno=student.sno))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统是一个非常强大的组合。以下是一个详细的步骤指南&#xff0c;帮助你构建这样一个系统。 硬件准备 Intel RealSense深度相机&#xff1a;例如D415、D435或L515。计算平台&#xff1a;一台具有足够计算能力的计算机&…

无人机之多源信息融合算法篇

一、概述 多源信息融合算法在无人机导航领域中扮演着越来越重要的角色。该算法通过整合来自不同传感器&#xff08;如全球定位系统GPS、惯性导航系统INS、磁力计、气压高度计、视觉传感器等&#xff09;的数据&#xff0c;利用先进的数据融合算法处理这些多源信息&#xff0c;以…

【Spring Boot】元注解

元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解&#xff0c;是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解…

索尔德 APON无线工业轨道机车定位测距仪介绍

索尔德APON无线定位测距仪&#xff0c;简称APON&#xff0c;采用先进的应答式微波测距技术&#xff0c;为车辆赋予了一双敏锐的“智慧之眼”&#xff0c;能够精确捕捉到有轨移动车辆的绝对位置&#xff0c;无论是快速穿梭还是缓慢移动&#xff0c;确保它们能够准确无误地抵达预…

企业如何选择适合自己的智能扭矩系统Torque?_SunTorque

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。一站式数智工厂解决方案服务商】 一、选择适合自己企业的智能扭矩系统时&#xff0c;可以考虑以下几个关键因素&#xff1a; 扭矩精度要求 首先要明确企业生产过程中对扭矩精度的具体要求。如果产…

全面解析:轻松掌握多模态技术精髓

多模态检索 多模态检索是指利用多种数据模态&#xff08;如文本、图像、视频、音频等&#xff09;进行信息检索的技术。它旨在通过整合不同形式的数据&#xff0c;提供更全面、精确和丰富的检索结果&#xff0c;以满足用户多样化的查询需求。 接下来分三部分&#xff1a; 单模…

net 获取本地ip地址,net mvc + net core 两种

net mvc public static string GetIP(HttpRequestBase request){// 尝试获取 X-Forwarded-For 头string result request.Headers["X-Forwarded-For"]?.Split(,).FirstOrDefault()?.Trim();if (string.IsNullOrEmpty(result)){// 获取用户的 IP 地址result reques…

云存储的费用是多少?2024年最新价格表

云存储的费用是多少最新&#xff1f;云存储的费用通常基于多个因素确定&#xff0c;包括存储容量、访问流量、请求次数、服务类型&#xff08;如对象存储、文件存储、块存储等&#xff09;、计费方式&#xff08;按量计费或包年包月&#xff09;以及可能的附加功能&#xff08;…

linux 原子操作

首先是为什么要有 原子操作 网上的截图&#xff1a; 不能从C语言来看&#xff0c;要从汇编来看 但是实际的情况有可能是这样。 A进程没有得到想要的结果。 然后是 原子操作的 底层实现 最终会是这段代码&#xff0c;当然只是一个 加一的操作。 static inline void atomic_a…

从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f343; vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode&#x1f4ab; Gitee &#x1f…

解析日期、编码

解析日期 这里指的是将字符串或者object类型的日期&#xff0c;转换成panda或python的日期类型。 主要的是dtype的变化&#xff1a;object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …

swiper默认显示三个,中间放大且显示全部图片两边显示部分图片

先上效果图 template <template><div><div class"swiper-content"><div class"swiper-container"><div class"swiper-wrapper"><div class"swiper-slide"><img src"../../assets/images/…

【每日刷题】Day146

【每日刷题】Day146 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. mari和shiny 2. 组队竞赛__牛客网 3. 删除相邻数字的最大分数_牛客题霸_牛客网 1. mari和shiny /…

Resnet搭建介绍及代码撰写详解(总结6)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习主要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。&#xff08;如有侵权立即删稿…

compose.material3 中的DatePicker在 desktop 平台同样可以适用

引入 implementation(compose.material3) 添加触发 OptIn(ExperimentalMaterial3Api::class)Composableprivate fun BasicDateUnit(label: String, selectedDateStr: MutableState<String>) {var showDatePicker by remember { mutableStateOf(false) }var selectedDate…

115页PPT集团管控模型与企业实践5D

01 115页PPT集团管控模型与企业实践5D “5D1C”模型是一种集团管控框架&#xff0c;它将集团管控的主要任务划分为五个方面以及一个核心&#xff0c;即战略&#xff08;Strategy&#xff09;、组织&#xff08;Organization&#xff09;、决策&#xff08;Decision&#xff09…

创客匠人老蒋:创始人自己做服务,才有市场敏感度

大家好&#xff0c;我是老蒋。上周&#xff0c;老蒋对话标杆直播间第70期邀请到了【华雨婚姻课堂】平台创始人大雨老师&#xff0c;请他聊了聊关于如何有效提高用户粘性&#xff1f;如何深度联动用户&#xff0c;提升高客单转化&#xff1f;也分享了短视频和直播两大赛道关于内…

fpga系列 HDL: 竞争和冒险 02

竞争和冒险 在 Verilog 设计中&#xff0c;竞争&#xff08;race conditions&#xff09;和冒险&#xff08;hazards&#xff09;是数字电路设计中不期望出现的现象&#xff0c;它们会影响电路的正确性。了解并解决竞争和冒险问题对于确保电路稳定运行非常重要。 竞争&#x…

facebook账号类型有哪些?

Facebook的主要账号类型 在Facebook上&#xff0c;用户可以基于不同的目的和需求创建不同类型的账号&#xff0c;主要包括以下几类&#xff1a; 1. 个人账号 这是最常见的Facebook账号类型&#xff0c;每个用户都可以创建一个个人账号&#xff0c;分享生活动态、与朋友互动、…

Unity 实现音频进度条(可控制)

目录 前言 一、拼UI 二、上代码 前言 效果如图&#xff1a;&#xff08;因为是GIF格式&#xff0c;录不上音频&#xff09; 一、拼UI 1.新建空物体添加AudioSource&#xff0c;给AudioSource添加音频文件&#xff0c;取消勾选PlayOnAwake&#xff0c;勾选上Loop 2.创建Slid…