【Mysql -分组查询、分页查询、数据库备份与恢复、数据库约束】

一、分组查询(关键字 group by)

		1,使用group by 关键字
			1)不带条件分组查询
				select columnName ‘alias’ , groupFunction  from  tableName  group by columnName;
create database studentsql;
use studentsql;
create table student(
	id int primary key auto_increment,
	name varchar(10),
	sex varchar(5),
	math int,
	english int
);
insert into student(name ,sex,math ,english) values
		('suki','female',87,90),
		('bea','male',85,62),
		('candy','female',82,75),
		('poppy','female',87,88),
		('lily','female',80,90),
		('bob','male',78,83),
		('anni','female',66,87),
select 
	sex'性别'avg(math) 
from 
	student
group by 
	sex;
			2)带条件分组查询
				select columnName ‘alias’,groupFunction  from tablename where condition group by columnName;
select 
	sex'性别'sum(english)
from 
	student
where 
	english >70
group by 
	sex;
		2,having 
				select columnName‘alias’,groupFunction  from tableName where condition group by  columnName having condition;

应用场景:按学生性别分组,获得每个性别的数学平均分,过滤掉性别人数少于2个的				
select 
	sex'性别'avg(math)'数学平均分'
	count(id)人数
from 
	student
where 
	math >70
group by 
	sex
having
	人数>2;
	注意事项:
			group by 后面不可以跟聚合函数
			having 后面可以跟聚合函数
			where条件语句必须在group by前面

二、分页查询(关键字 select…limit start, rows)

	关键字解释:表示从start+1行开始取,取出rows行,start从0开始计算
	语法:select
				显示的字段
			from 
				表名
			limit 起始行数,每页显示的记录数;

			起始行数=每页显示的记录数*(页数-1)
			
			注意:当select语句同时含有group by, having, order by, limit时,使用顺序如下:
				select column1,column2... from  table 
						group by column
						having condition
						order by column
						limit start,rows;

三、数据库备份与恢复

方式一:图形界面化工具

		选中数据库,右键,选择导出或导入

方式二:dos命令行

1.数据库备份(不用登陆mysql)

		以管理员身份进入dos命令行
		1)单个数据库备份
			mysqldump -u root -p 库名 > 磁盘上的存放路径,文件名以.sql结尾(例:d:\\mysql\09.sql)
			输入mysql密码
		2)单个或者多个数据库备份
			mysqldump - u root -p -B 库名1 库名2 >  磁盘上的存放路径,文件名以.sql结尾(例:d:\\mysql\09.sql)
			输入mysql密码
		3)数据库中指定表的备份
			mysqldump -u root -p 库名 表1 表2 表n > 磁盘上的存放路径,文件名以.sql结尾(例:d:\\mysql\09.sql)
			输入mysql密码

2.数据库恢复(需要登陆mysql后操作)

			mysql -u root -p
			输入密码登陆
			source 存放数据库备份的路径

四、mysql的约束

			约束:用于确保数据库中的数据满足特定的商业规则
					包括:not null
							  unique
							  primary key
							  foreigh key
							  check 
							  default

1.primary key(主键 --属于一种index索引)

		语法:字段名 字段类型 primary key
create table st(
	id int primary key auto_increment;
	name varchar(10),
	email varchar(11)
);
		复合主键语法:primary key(column1,column2)
create table stu(
	id int,
	name varchar(10),
	email varchar(20),
	primary key(id,name)
);
		给表中字段添加主键自增长约束
			语法:alter table tableName modify fieldName type primary key auto_increment;
		给表中字段删除主键自增长约束
			第一步删除自增长约束
					语法:alter table tableName modify id int;
			第二步删除主键索引
					语法:alter table tableName drop primary key;
					注意:此时只删除了主键非重复索引,非空约束依然存在,需要单独去除非空
			第三步删除非空约束
					alter table tableName modify fieldName type;
						
		特点与细节:主键列的值非空并不重复,如有重复,添加不进去(通常用于非业务字段)
							但可以是复合主键(复合主键的字段值不能同时相同)
							 一张表最多只能有一个主键或复合主键
							 主键定义方式两种:字段类型后追加;字段全部定义完后,单独添加
							 可以使用desc 表名,查看主键情况
		auto_increment:自增长
				自增长使用细节:自增长可以配合primary key 或者unique使用
				自增长修饰的字段为整数类型(虽小小数也可以,但是很少这样使用)
				自增长默认从1开始,可以通过以下方式修改
					alter table tableName auto_increment=值;
					或者在创建表时指定自增长起始值

2.默认约束(关键字default)

		当字段值为null时,显示默认值
			语法:columnName  type default value	
		给表中字段添加默认约束
			语法:alter table tableName modify fieldName type defalult;
		给表中字段删除默认约束		
			语法:alter table tableName modify fieldName type;

3.非空约束(关键字not null )

		字段值不能为null,否则报错
			语法:columnName type not null
		给表中字段添加非空约束
			语法:alter table tableName modify fieldName type not null;
		给表中字段删除非空约束
			语法:alter table tableName modify fieldName type;

4.unique(唯一约束–一种索引)

		语法:columnName type unique;
		给表中字段添加唯一约束
			alter table tableName modify fieldName type unique;
		给表中字段删除唯一约束
			alter table tableName drop index columnName;
			(唯一约束的索引名就是字段名)
		特点与细节:
		只能有一个具体的值,不能重复
		空值不是具体的值,可以有多个null
		一张表可以有多个unique字段

5.foreign key(外键)

	    用于定义主表与从表之间的关系:外键约束定义在从表上,主表必须具有主键约束或者unique约束
		语法:foreign key(本表字段名) references 主表名(主表字段名)
		多对多外键关联语法:foreign key(本表字段名1) references 主表名(主表字段名1),
											  foreign key(本表字段名2) references 主表名(主表字段名2),
											  ...
		
		特点与注意:
						表的类型是innodb,这样的表才支持外键
						外键字段的值,必须在主键中存在,或者为null(前提是外键字段允许为null)
						建立外键关系后,主表的值不能随意删除,必须先将从表中引用该值的数据全部删除后,再删除。

6.check(强制约束)

		用于强制数行数据必须满足的条件
		例如在列上定义了check约束,并要求列值在1000~2000之间,如不在范围,提示出错
		语法: 列明 类型 check(check条件)
					
		注意:orical和sql server 均支持check,但是mysql5.7目前不支持check,只做语法校验,但不会生效
				  在mysql中实现check的功能,一般是在程序中控制,或者通过触发器完成

和poppy一起学习

	预习:多表查询以及JDBC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值