数据库概述 2-MySQL查询与约束

本文详细介绍了SQL查询的基本语法,包括数据查询语言DQL的使用,如条件查询、排序、聚合函数及分页等高级操作。同时,深入解析了数据库约束,如主键、唯一、非空和默认值等,确保数据的唯一性、正确性和完整性。

DQL(数据查询语言)

查询的顺序

select distinct */ 字段 / 聚合 / from 表 where条件 group by 字段 having 条件 order by 字段 limit a,b

简单查询

查询所有列:  select * from 表名;

查询指定列:  select 字段名1,字段名2... from 表名; 

别名查询:  select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名; 

清除重复值:  select distinct 字段名 from 表名;

查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)

在这里插入图片描述
条件查询

格式:select * from 表名 where 条件;

比较运算符

	> 大于 

	< 小于 

	<= 小于等于 

	>= 大于等于 

	= 等于 

	<> 、 != 不等于

在这里插入图片描述
逻辑运算符

and(&&) 多个条件同时满足 

or(||) 多个条件其中一个满足 

not(!) 不满足

数据库提供的方式:
between 值1 and 值2   类似与的关系
in(字段1,字段2)	    类似或的关系

在这里插入图片描述

模糊查询 like

like
%  : 模糊多位
_   : 模糊一位		

在这里插入图片描述
在这里插入图片描述
排序 order by 字段

select * from 表名 where 条件 order by 字段名称 [desc | asc] , 字段名 [desc | asc] ;
asc(默认) : 升序   desc : 降序

在这里插入图片描述
聚合函数
count() : 计数
sum() : 求和
max() : 求最大值
min() : 求最小值
avg() : 求平均值

在这里插入图片描述
分组 group by 字段

select * from 表名 where 条件 group by 分组字段 [having 分组条件 ] ;

having与where的区别(面试题)
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数

在这里插入图片描述
在这里插入图片描述
分页

limit
select * from 表名 limit 起始数,查询几条;

在这里插入图片描述

查询顺序

select distinct *或者字段或者聚合 from 表名 where 条件 and 条件 或 btween 条件 或 or 条件  或 in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b

数据库约束

约束:对表中的数据可以进行进一步的限制,来保证数据的唯一性,正确性和完整性

约束种类:

单表约束

PRIMARY KEY : 主键约束    代表该字段的数据不能为空且不可重复

NOT NULL : 非空  代表该字段的数据不能为空

UNIQUE : 唯一   代表该字段的数据不能重复

多表约束

 外键约束

主键约束 primary key

一个表中都得需要主键约束 用来标注一条记录的唯一性
在这里插入图片描述

特征:

主键字段值唯一不可重复

主键字段值不能包含NULL值

一个表中只能有一个主键

实现方式:

创建表的时候添加主键

在这里插入图片描述
在这里插入图片描述
创建好表之后,通过外部方式添加主键:
在这里插入图片描述
在这里插入图片描述

方式一 在创建表时,添加约束 
		格式
			create table 表名 ( 
    			字段名称1 字段类型 约束, 	
    			字段名称2 字段类型 约束 
    		);

方式二 在创建表时,结尾内添加约束
		格式1:单一主键
			create table 表名 (
            	字段名称1 字段类型, 	
            	字段名称2 字段类型, 	
            	primary key(字段名称1)  
        	);

		格式2:联合主键  特点:必须保证2个字段的值不能为空且唯一
			create table 表名 (
            	字段名称1 字段类型, 	
            	字段名称2 字段类型, 	
            	primary key(字段名称,字段名称1)  
        	);

在已有表中添加主键
		alter table 表名 add primary key(字段名称);

删除主键

alert table 表名 drop PRIMARY KEY;

主键自增
在这里插入图片描述

自己去维护主键过于麻烦,可以让数据库帮助我们去维护

auto_increment

默认地AUTO_INCREMENT 的开始值是1,如果希望修改起始值,请使用下列SQL语法  

ALTER TABLE 表名 AUTO_INCREMENT=起始值;

唯一约束: unique

name 和 sex都不能重复
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除唯一约束:

在这里插入图片描述
特征

被修饰的字段唯一,不可重复

注意: 一个表中可以有多个被unique修饰的字段,但对null不起作用

实现方式

	方式1: 创建表时在字段后添加 
		create table 表名 ( 
    		字段名称1 字段类型 约束, 
    		字段名称2 字段类型 约束 
    	);

	方式2: 创建表时结尾添加
		create table 表名 ( 
        	字段名称1 字段类型, 	
        	字段名称2 字段类型, 	
        	unique(字段名1) 
    	);
	
		特点:保证2个字段同时满足
		create table 表名 ( 
        	字段名称1 字段类型, 	
        	字段名称2 字段类型, 	
        	unique(字段名1,字段名2) 
    	);

	方式3: 创建完表后,通过修改表添加
		alter table 表名 add unique(字段名1,字段名2);

删除:
 alter table 表名 drop index 约束名称;

非空约束: not null

在这里插入图片描述
在这里插入图片描述
特征:

被修饰的字段不可为空

实现方式

直接在字段后面添加即可

删除:

alter table 表名 change 旧字段名称 新字段名称 类型 约束;

default : 默认值

数据备份与还原

命令方式

只能备份库中的表和数据

备份数据

	mysqldump -u用户名 -p密码 数据库名 > 文件的路径

	把指定数据库的表和表中的数据给备份了,没备份库

还原数据

	还原的时候需要先登录MySQL,并使用对应的数据库

	 source 导入文件的路径;

图形化界面方式

        备份整个数据库

多表的设计与实现

现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,老师和学生等

那么我们在数据库设计与之对应的表时,也应该体现出表与表之间的关系

数据库的表关系设计有三种:

1. 一对一(了解)
2. 一对多
3. 多对多

一对一:

一对多:

在这里插入图片描述

疑问:我们在数据库中有一张分类表和一张商品表,这两张表之间可不可以有关系?

如果有关系,在数据库里面,我们如何去创建这种关系?

实现:分类表和商品表

称一的一方为主表 称多的一方为从表

原则:在从表中(多的一方)创建一个字段为外键,然后让这个外键指向主表的(一的一方)主键

数据库提供了外键约束的语法来实现指向关系:

关系建立: alter table 从表 add constraint [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键)

关系删除: alter table 从表 drop foreign key 外键名称

外键约束的作用:能够保证数据的完整性和有效性

特征:从表中如果关联了主表的数据则强制主表的数据不能删除,保证数据的完整性和有效性

在这里插入图片描述
在这里插入图片描述

多对多

在这里插入图片描述
在这里插入图片描述

实现:学生表和课程表

原则:需要在外部创建一张中间表

这个中间表至少需要2个字段,然后让这2个字段分别作为外键只向各自表的主键

本质上就是两个一对多,添加中间表

一对一(了解)

人和身份证号,企业和法人

实现方式,一般都写在一张表中

如果非要拆分成两张表,可以有2种方式来建立它们之间的一对一关系

实现:

1 让双方的主键作为外键一一对应

2 在任意一方创建一个字段当成是外键指向另一方的主键,但是这个外键必须唯一

外键约束

添加外键约束

方式1: 创建表时添加

CREATE TABLE product(

	pid INT PRIMARY KEY AUTO_INCREMENT,

	pname varhcar(20),

	c_id INT,

	CONSTRAINT  foreign key(外键字段) references 主表名称(主键字段)

);	

方式2: 在已有表上添加外键约束

	给从表的外键字段添加外键约束

	alter table 从表 add [constraint 名称] foreign key(外键字段) references 主表名称(主键字段)

方式3:可视化图形方式(推荐)

	在架构设计器中,直接指定外键拖向主键即可,简单方便快捷

删除外键

方式一和方式二:ALTER TABLE 从表 drop foreign key 外键名称;

方式三:在架构设计器中,选中指向关系右键删除即可

下载前可以先看下教程 https://pan.quark.cn/s/a426667488ae 标题“仿淘宝jquery图片左右切换带数字”揭示了这是一个关于运用jQuery技术完成的图片轮播机制,其特色在于具备淘宝在线平台普遍存在的图片切换表现,并且在整个切换环节中会展示当前图片的序列号。 此类功能一般应用于电子商务平台的产品呈现环节,使用户可以便捷地查看多张商品的照片。 说明中的“NULL”表示未提供进一步的信息,但我们可以借助标题来揣摩若干核心的技术要点。 在构建此类功能时,开发者通常会借助以下技术手段:1. **jQuery库**:jQuery是一个应用广泛的JavaScript框架,它简化了HTML文档的遍历、事件管理、动画效果以及Ajax通信。 在此项目中,jQuery将负责处理用户的点击动作(实现左右切换),并且制造流畅的过渡效果。 2. **图片轮播扩展工具**:开发者或许会采用现成的jQuery扩展,例如Slick、Bootstrap Carousel或个性化的轮播函数,以达成图片切换的功能。 这些扩展能够辅助迅速构建功能完善的轮播模块。 3. **即时数字呈现**:展示当前图片的序列号,这需要通过JavaScript或jQuery来追踪并调整。 每当图片切换时,相应的数字也会同步更新。 4. **CSS美化**:为了达成淘宝图片切换的视觉效果,可能需要设计特定的CSS样式,涵盖图片的排列方式、过渡效果、点状指示器等。 CSS3的动画和过渡特性(如`transition`和`animation`)在此过程中扮演关键角色。 5. **事件监测**:运用jQuery的`.on()`方法来监测用户的操作,比如点击左右控制按钮或自动按时间间隔切换。 根据用户的交互,触发相应的函数来执行...
垃圾实例分割数据集 一、基础信息 • 数据集名称:垃圾实例分割数据集 • 图片数量: 训练集:7,000张图片 验证集:426张图片 测试集:644张图片 • 训练集:7,000张图片 • 验证集:426张图片 • 测试集:644张图片 • 分类类别: 垃圾(Sampah) • 垃圾(Sampah) • 标注格式:YOLO格式,包含实例分割的多边形点坐标,适用于实例分割任务。 • 数据格式:图片文件 二、适用场景 • 智能垃圾检测系统开发:数据集支持实例分割任务,帮助构建能够自动识别和分割图像中垃圾区域的AI模型,适用于智能清洁机器人、自动垃圾桶等应用。 • 环境监控管理:集成到监控系统中,用于实时检测公共区域的垃圾堆积,辅助环境清洁和治理决策。 • 计算机视觉研究:支持实例分割算法的研究和优化,特别是在垃圾识别领域,促进AI在环保方面的创新。 • 教育实践:可用于高校或培训机构的AI课程,作为实例分割技术的实践数据集,帮助学生理解计算机视觉应用。 三、数据集优势 • 精确的实例分割标注:每个垃圾实例都使用详细的多边形点进行标注,确保分割边界准确,提升模型训练效果。 • 数据多样性:包含多种垃圾物品实例,覆盖不同场景,增强模型的泛化能力和鲁棒性。 • 格式兼容性强:YOLO标注格式易于主流深度学习框架集成,如YOLO系列、PyTorch等,方便研究人员和开发者使用。 • 实际应用价值:直接针对现实世界的垃圾管理需求,为自动化环保解决方案提供可靠数据支持,具有重要的社会意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值