MySql02:增删改查

  • 1.外键索引(外键约束)
  • 2.DML - 添加 、修改 、删除
    • 2.1添加 insert
    • 2.2修改 update
    • 2.3删除 delete
    • 2.4删除的三种方式
  • 3.DQL - 查询关键字
    • 3.1 普通查询
    • 3.2 as 关键字
    • 3.3 distinct 去除重复的内容
    • 3.4 where 条件
    • 3.5 between and 关键字
    • 3.6 like 实现模糊查询
    • 3.7 in 范围查询
    • 3.8 null 空值查询
  • 4.连接查询 (多表查询)
    • 4.1内连接
    • 4.2外连接 ( out join )
  • 5.自连接

1.外键索引(外键约束)

外键:用于约束主表与从表之间的关联关系

# 主表  父表
create table dep(depid int unsigned  primary key auto_increment,depname varchar(20)
);# 从表 子表
create table emp(empid int primary key auto_increment,empname varchar(20) not null,empaddress varchar(50),did int not null
);# 外键索引(外键约束) foreign key 
# 外键 用于约束主表与从表之间的关联关系 
alter table emp add constraint FK_did  foreign key(did) references dep(depid);# 删除外键 mysql在帮我们创建外键索引的同时 还帮我们创建了一个普通索引 所以 我们也要把普通索引删除掉
alter table emp drop foreign key FK_did;
# 普通索引的名字与外键索引的名字相同
# 删除普通索引
alter table emp drop index FK_did;
create table grade (gid int primary key auto_increment,gname varchar(20) not null
);create table student (stuid int primary key auto_increment,stuname varchar(20) not null,stuaddress varchar(50) ,stuage int ,gradeid int not null,constraint FK_gradeid foreign key(gradeid) references grade(gid)
);# 实际开发中不是用物理外键
# 如果需要两个表产生关联关系  我们可以使用"逻辑外键"
# 因为在分布式开发场景中 我们通常需要分库分表 而外键是无法分库分表的

2.DML - 添加 、修改 、删除

2.1添加 insert

# #添加 insert 
# 方式1  
insert into dep(depid,depname) values(4,'人事部');# 方式2 
insert into dep(depname) values('技术部');
insert into emp(empname,did) values('小沈阳',2);# 方式3  可以不指定列名 直接添加 values小括号中的值必须与原表中列的顺序保持一致
# 注意:insert into dep values('营销部',7); 会报错 因为顺序不一致
insert into dep values(6,'市场部');# 方式4 一次添加多条数据  
insert into dep(depname) values('后勤部'),('安保部'),('宣传部');

2.2修改 update

# # 修改 update
update dep set depname = '人力资源部' where depid = 4;update emp set empaddress = '铁岭' where empname = '赵四';update emp set empaddress = '象牙山',empname = '尼古拉斯·赵四' where empid = 1;update emp set empage = empage + 20 where empage = 22 and empname = '大拿';update emp set empname = '赵四';

2.3删除 delete

# #删除 DELETE
delete from dep where depid = 1;delete from emp where empname = '赵四' && empage = 22;delete from emp where empname = '广坤' or empaddress = '铁岭';delete from emp;

2.4删除的三种方式

# 删除的三种方式:
#1# drop table 表名----删除数据、删除表结构
drop table city;#2# truncate table 表名
truncate table city;# 删除整个表数据 不影响表结构 索引 约束 会清空主键的编号#3# delete from 表名
delete from city; # 删除数据 不影响表结构 索引 约束 删除以后不会清空主键的编号# drop > truncate > delete 

3.DQL - 查询关键字

3.1 普通查询

# 查询所有 * 代表所有列  
select * from emp;# 指定查询其中某些列
select empname from emp;
select empname,empage from emp;

3.2 as 关键字

# as 关键字 * 实现 给列 或者 表 取别名 
# as 关键字可以省略不写# 给列取别名 
select empname as '员工姓名',empage as '员工年龄' from emp;
# 给表取别名
select e.empname,e.empage from emp as e;

3.3 distinct 去除重复的内容

select distinct empsex from emp;

3.4 where 条件

# 查询后加上 where条件 
select * from emp;# 查询年龄为20的人 信息
select * from emp where empage = 20;
# 查询年龄为25  并且性别为男的人信息
select * from emp where empsex = '男' and empage = 25;
# 查询年龄为26  或者 地址为象牙山的人信息
select * from emp where empage = 26 or empaddress = '象牙山';# 查询地址不为null的人的信息 
# is null 查询为null
# is not null 查询不为null的select * from emp where empaddress is  null;

3.5 between and 关键字

# 以下两条语句功能相同
select * from emp where empage between 25 and 27;
select * from emp where empage>= 25 and empage<=27;

3.6 like 实现模糊查询

#1# % 表示匹配 '0个'或者'n个' 任意字符
# 查询名字中带 '四' 的人信息
select * from emp where empname like '%四%';# 查找名字以  '四'  结尾的人的信息
select * from emp where empname like '%四';# 查找名字以 '四'开头的人的信息
select * from emp where empname like '四%';#2# _ 一个下划线表示一个任意字符
# 查找名字以 '四' 开头 名字一共两个字符的人的信息
select * from emp where empname like '四_';# 查找名字以 '四' 开头 名字一共三个字符的人的信息
select * from emp where empname like '四__';

3.7 in 范围查询

# 在WHERE子句中使用IN进行范围查询
# SELECT  字段列1,字段2 ,…  
#	FROM 表名  
#	WHERE  字段x  
#	IN  ( 值1,值2,值3…)
#1.查询的字段x的值,至少与括号中的一个值相同
#2.多个值之间用英文逗号隔开#普通处理方式
SELECT * FROM subject where ClassHour = 100 OR ClassHour =110 OR ClassHour = 120;#使用IN进行查询方式,更为简洁,效率更高
SELECT * FROM subject where ClassHour IN ( 100,110,120 );

3.8 null 空值查询

1.NULL代表 ‘无值’
2.区别于零值0和空符串""
3.只能出现在定义允许为NULL的字段
4.须使用 is null 或者 is not null 比较操作符去比较

4.连接查询 (多表查询)

select   [all | distinct] 
{ * | table.* |  [table.field1 [as alias1] [,table.field2[as alias2]][,…]]  }
from  table_name  [as table_ alias ][left|out|inner  join  table_name2 ]    #联合查询[where  …]   	#指定结果需满足的条件[group by …]	#指定结果按照哪几个字段来分组[having …]	#过滤分组的记录必须满足的次要条件[order by …]	#指定查询记录按一个或者多个条件排序[limit {[offset,] row_count|row_count offset offset} ];  #指定查询的记录从哪条至哪条

4.1内连接

select * from emp;#1# 两表等值连接查询: 取交集
select * from emp,dep where emp.did = dep.depid;select e.empname as '姓名',e.empage '年龄',e.empsex '性别',d.depname '部门' 
from emp as e,dep as d 
where e.did = d.depid;#2# 内连接查询 inner join 取交集 
select * from emp inner join dep on emp.did=dep.depid;select e.empname as '姓名',e.empage '年龄',e.empsex '性别',d.depname '部门'  
from emp inner join dep on emp.did=dep.depid;

4.2外连接 ( out join )

# 左连接 左外连接:left join  
# 以左边的表为主表:取交集。如果不匹配左边表的数据 以null填充
SELECT * FROM emp 
LEFT JOIN dep ON emp.did = dep.depid;# 右连接 右外连接:right join  
# 以右边的表为主表:取交集。如果不匹配匹配的项 以null填充
SELECT * FROM emp RIGHT JOIN dep ON emp.did = dep.depid;# 三表连接
select emp.empname,emp.empage,emp.empsex,city.cityname,dep.depname 
FROM emp,city,dep 
WHERE emp.did = dep.depid 
AND emp.cid = city.cityid;# inner join 
select emp.empname,emp.empage,emp.empsex,city.cityname,dep.depname
from city 
inner join emp on city.cityid = emp.cid 
inner join dep on emp.did = dep.depid;

5.自连接

# 自连接 (自己与自己连接) 将一个表 作为两张表来使用
# 查询出每个课程所对应的专业
select * from course;
select c1.profession,c2.cname 
from course as c1 ,course as c2 
where c1.cid = c2.profession;select c1.profession,c2.cname 
from course as c1 
inner join course as c2 on c1.cid = c2.profession;#右连接
select c1.profession,c2.cname 
from course as c1 
right join course as c2 on c1.cid = c2.profession;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3用户权限管理(路由控制等)1

在前端开发的过程中&#xff0c;我们需要做前端的权限管理&#xff0c;我们需要根据后端提供的信息来控制权限&#xff0c;这时候就需要根据用户的操作来进行权限控制了。逻辑稍微有一点绕&#xff0c;多理解就好了。 用户路由权限管理 大致的实现原理&#xff1a; 一般将路由…

解析IT运维领域ITSS和ITIL证书

&#x1f33b;IT运维领域ITSS和ITIL证书是两种广泛认可的专业认证。 &#x1f4d7;ITSS认证证书 ITSS是中国电子技术标准化研究院推出的&#xff0c;&#x1f449;包含“IT 服务工程师”和“IT 服务经理”的系列培训。有效满足GB/T 28827.1 的符合性评估要求和ITSS服务资质升级…

JavaScript音视频,JavaScript简单获取电脑摄像头画面并播放

前言 本章实现JavaScript简单获取电脑摄像头画面并播放的功能 兼容性(不支持Node.js) 需要注意的是,由于涉及到用户的隐私和安全,获取用户媒体设备需要用户的明确同意,并且可能需要在用户的浏览器中启用相关的权限。在某些浏览器中,可能需要用户手动开启摄像头权限。 …

中国建设银行 关于解决微软升级导致插入网银盾无法自动打开企业网银的通知

关于解决微软升级导致插入网银盾无法自动打开企业网银的通知 发布时间&#xff1a;2023-10-18 尊敬的客户&#xff1a; 近期Windows操作系统升级会禁止使用IE浏览器&#xff0c;可能会导致您在插入网银盾后无法自动弹出企业网银登录页面&#xff0c;您可以通过以下方式解决&…

QUV紫外光老化加速试验机

1.1 IEC61215标准背景 IEC61215Crystallinesiliconterrestrialphotovoltaic(PV)modules—Designqualificationandtypeapproval》是国际电工委员会的一个产品测试方法。目前太阳能行业正在广泛引用这个标准&#xff0c;对材料或产品进行测试。 2 材料耐候性老化测试原理 在介…

安全防御之漏洞扫描技术

每年都有数以千计的网络安全漏洞被发现和公布&#xff0c;加上攻击者手段的不断变化&#xff0c;网络安全状况也在随着安全漏洞的增加变得日益严峻。寻根溯源&#xff0c;绝大多数用户缺乏一套完整、有效的漏洞管理工作流程&#xff0c;未能落实定期评估与漏洞修补工作。只有比…

杨中科 ASP.NET Core 中的依赖注入的使用

ASP.NET CORE中服务注入的地方 1、在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builderServices中注入 2、在Controller中可以通过构造方法注入服 务。 3、演示 新建一个calculator类 注入 新建TestC…

【DevOps-08-1】Harbor镜像仓库介绍和安装

一、简要描述 Harbor介绍Harbor安装 下载离线安装包把下载的离线安装包上传到服务器,并且解压修改Harbor配置文件启动Harbor登录Harbor管理后台Harbor管理后台首页二、Harbor介绍 前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束&#xff0c;刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的&#xff0c;当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作&#xff0c;无法直接使用博文中的内容。 现在大…

Photoshop Express一款出色的照片编辑器

​【应用名称】&#xff1a;Photoshop Express ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Photoshop ​【应用版本】&#xff1a;12.1.2 ​【应用大小】&#xff1a;223MB ​【软件说明】&#xff1a;软件升级更新。一款出色的照片编辑器&#xff0c…

生成模型 | 2024年新年新论文:audio2photoreal[正在更新中]

本博客主要包含了20240103新出的论文From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations论文解释及项目实现~ 论文题目&#xff1a;20240103_From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations 论文地址&#xff1a;2401.018…

8年测试总结,正确的自动化测试实施-单元/接口/Web自动化...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 今天给大家分享自…

作业--day42

界面设计 MyProWin::MyProWin(QWidget *parent): QMainWindow(parent) {/**********窗口主体**********///窗口大小this->setFixedSize(644, 493);this->setWindowTitle("QQ");this->setWindowIcon(QIcon("C:/Users/10988/Downloads/pictrue/pictrue/…

java中实现对文件高效的复制

不多说我们直接上代码&#xff1a; 这个是使用NIO包下的FileChannel和ByteBuffer进行文件的操作的&#xff0c;会比较高效。

JavaScript(WebAPI)

文章目录 1. 什么是 WebAPI2. DOM 基本概念2.1 DOM 树 3. 获取元素3.1 querySelector3.2 querySelectorAll 4. 事件初识4.1 键盘事件 5. 操作元素5.1 获取/修改元素属性5.2 获取/修改表单元素属性5.3 获取/修改样式属性 6. 操作节点6.1 新增节点6.2 删除节点 1. 什么是 WebAPI …

浅谈智慧路灯安全智能供电方案设计——安科瑞赵嘉敏

摘要: 智慧路灯&#xff0c;作为智慧城市、新基建、城市更新的主要组成部分&#xff0c;近些年在各大城市已得到很好的落地和 应用&#xff0c;但其与传统路灯相比集成大量异元异构电子设备&#xff0c;这些设备的供电电压、接口形式、权属单位各不相同&#xff0c; 如何设计一…

Z-library居然来中国了!

提起「Z-Library」的大名&#xff0c;想必有不少朋友是知道的&#xff0c;早在2021年11月该网站遭遇了封站&#xff0c;好在目前已经有了比较稳定的国内直达网址&#xff0c;实测过了几个月还是能够稳定访问。 Z-Library是一个电子图书馆项目&#xff0c;提供世界上最大的免费…

Python基础(二十一、模块的使用,else的使用tip)

文章目录 一、模块什么是模块&#xff1f;导入模块的语法注意事项 二、elseelse与forelse与whileelse与try-except总结 当我们编写复杂的程序时&#xff0c;往往需要使用到大量的函数和变量。为了提高代码的可维护性和重用性&#xff0c;Python 提供了模块的概念。模块是一个包…

java编程中,保证接口幂等性的实现方案讨论

一、什么是幂等性 数学中的幂等是指f(x) f(f(x))&#xff0c;编程领域的术语是指同一个操作&#xff0c;在重复提交的情况下&#xff0c;最终产生的影响是不变的。举例说&#xff1a; 提交订单时&#xff0c;用户在购物车界面&#xff0c;重复点击“下单”&#xff0c;服务端…

【CUDA】windows下的CUDA安装

一、前言 windows10 下安装 CUDA &#xff0c;首先需要下载安装包&#xff1a; CUDA toolkit&#xff08;工具包&#xff09; 二、安装前的准备 电脑环境检查 通过cmd&#xff0c;输入nvidia-smi 查看自己的驱动版本和支持的CUDA版本&#xff0c;如下图红圈标记位置 下载 …