mysql学习笔记,sql语句2,mysql5.7.30,

查询语句

排序查询

语法:
	select * from 表 order by   排序字段1  排序方式1,排序字段n  排序方式n;
排序方式
	asc:升序,默认
	desc:降序
注意
	如果有多个排序条件,当前边条件值一样时才会用后面的排序方式

聚合函数

将一列数据作为一个整体,进行纵向计算(eg:算一列数据平均值)

类型
	1.count:计算个数
	2.max:计算最大值
	3.min:计算最小值
	4.sum:计算和
	5.avg:计算平均值
语法
	select 类型(列名) from 表;
注意
	会排除null值
解决方案
	1.选择不包含null的列
	2.ifnull(列名,替换的值)

分组查询

语法
	select ? from 表 group by 列名;
注意
	1.分组之后查询的字段:分组字段,聚合函数
	2.where和having
		1.where在分组之前限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足条件,则不会被查询出来
		2.where后不可以跟聚合函数,having可以

分页查询

语法
	select * from 表 limit 开始行数,开始行数后几行;
		eg
			select * from 表 limit 0,3; --  第一页,三行数据
			select * from 表 limit 3,3; --  第二页,三行数据
			select * from 表 limit 6,3; --  第三页,三行数据
			
公式
	开始的索引 = (当前页码-1) * 每页显示的行数
注意
	limit是mysql方言

约束

概念:对表中的数据进行限定,从而保证数据的正确性,有效性,完整性。
分类
	1.主键约束:primary key
	2.非空约束:not null
	3.唯一约束:unique
	4.外键约束:foreign key

主键约束

1.注意
	1.含义:非空且唯一
	2.一张表只能由一个字段为主键
	3.主键就是一张表中记录的唯一标识
2.在创建表的时候添加主键约束
	create table stu{
		id int primary key ,
		name varchar(20)
	};
3.删除主键
	alter table 表名 drop peimary key;
4.创建完表后,添加主键
	alter table 表名 modify 列名 列数据类型 primary key;
5.自动增长
	1.如果某一列是数值类型的,使用 auto_increment 可以来完成值的自动增长
	2.创建表时,添加主键约束并设置自动增长
		在主键最后加 auto_increment 
	3.删除自动增长
		alter table 表 modify 列 列类型;
	4.新建表后添加自动增长
		alter table 表名 modify 列名 列数据类型 auto_increment  ;

非空约束

某一列的值不能为null
1.创建表时添加约束:在创建语句后面添加 not null;
	eg:id int not null;
2.创建表后添加:
	alter table 表名 modify 列名 类型 not null;
3.删除非空约束
	alter table 表名 modify 列名 类型 ;

唯一约束

某一列的值不能重复,ps:null也作为一个值
1.创建表时添加约束:在创建语句后面添加 unique;
	eg:id int unique;
2.创建表后添加:
	alter table 表名 modify 列名 类型 unique;
3.删除非空约束
	alter table 表名 drop index 列名;

外键约束

1.在创建表时,可以添加外键
	语法:
		create table 表名{
			***
			外键列
			constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
		};
2.删除外键
	语法:alter table 表 drop foreign key 外键名;
3.添加外键
	语法:alter table 表 constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
4.级联操作
	添加在外键语句的最后
	1.级联更新 on update cascade
	2.级联删除on delete cascade

数据库设计

多表之间的关系

1.分类
	1.一对一:
		如:人和身份证
		分析:一个人只有一个身份证,一个身份证只能对应一个人
	2.一对多(多对一)
		如:部门和员工
		分析,一个部门有多个员工,一个员工只能对应一个部门
	3.多对多
		如:学生和课程
		分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择
2.实现关系
	1.一对多(多对一):
		如:部门和员工		

一对多实现方式

	2.多对多:
		如:学生和课表

在这里插入图片描述

	3.一对一:
		如:学生和身份证号

在这里插入图片描述

数据库设计的范式

概念
	设计数据库时,需要遵循的一些规范。
	要遵循后边的范式要求,必须先遵循前边的所有范式要求
分类
	1.第一范式(1NF)
		数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组
	2.第二范式(2NF)
		在第一范式的基础上,要求数据库表中的每个实例或记录必须可以被唯一地区分
	3.第三范式(3NF)
		在第二范式的基础上,一个关系中不包含已在其它关系已包含的非主关键字信息

几个概念
	1.函数依赖:A-->b,如果通过A属性(属性组)的值可以确定唯一的b属性的值,则b依赖于a
					eg:学号->姓名  (学号,课程名称)-->分数
	2.完全函数依赖:a-->b,如果a是一个属性组,则b属性值得确定需要依赖于a属性组中所有的属性值
					eg: (学号,课程名称)-->分数
	3.部分函数依赖:a-->b,如果a是一个属性组,则b的属性值得确定只需要依赖于a属性组中某一些值即可
					eg: (学号,课程名称)-->姓名
	4.传递函数依赖 a-->,b-->c,如果通过a属性(属性组)的值,可以确定唯一b属性的值,在通过b属性(属性组)的值可以确定唯一c属性的值,则称c传递函数依赖于a		
					eg:学号-->系名,系名-->主任
	5.码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
					eg:课表中码为(学号,课程名称)
					*主属性:码属性组中的所有属性
					*非主属性:除过码属性组的属性

数据库的备份和还原

1.命令行:
		备份:
			mysqldump -u用户名 -p密码 数据库名 > 保存的路径
		还原:
			1.登录数据库
			2.创建数据库
			3.使用数据库
			4.执行文件。source文件路径
2.图形化工具:
	备份
		傻瓜式操作,右键备份
	还原
		执行sql文件	
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值