mysql是谁开发的_MySQL

分组查询

注意分组之后只能加上分组的字段,还有聚合函数,因为加上其他字段是没有意义的

select sex,avg(math) from student group by sex;

限定分组前的条件:在group by之前使用where限定。

限定分组之后的条件:having

select sex,avg(math) from student where math>70 group by sex having count(id)>2;

查询在数学成绩大于70分的人中按照性别分组并且每个组人数大于2

where和having的区别

1、where在分组之前进行限定,如果不满足条件就不准参与分组,having在分组之后进行限定,如果不满足结果就不会被查询出来。

2、where不能后面跟上聚合语句,having之后可以跟上聚合语句

分页查询

语法:limit,开始索引,每页查询的数

select * from student limit 0,3;

select * from student limit 3,3;

公式,开始的索引当前的页码减去1,再成每页显示的条数。

select字段列表

from表

where条件列表groupby分组字段

having分组之后的限定order by排序

limit 条件限定

模糊查询

占位符    "_"任意单个字符  "%"任意多个字符(0个也是可以的)

select * from student where name like '马%'

查询姓马的

查询名字是三个字的人三个"_"

select * from student where name like '___'

约束

(对表中的数据进行限定,保证数据的有效性和完整性)

分类:主键约束、非空约束,唯一约束(索引),外键约束

非空约束:not null 表示值不能是空的

创建表时候添加约束

create table stu(

idint,

name varchar(20) not null --非空约束

);

删除约束

alter table stu modify name varchar(20);

创建表之后添加约束

alter table stu modify name varchar(20) not null;

唯一约束:unique,表示值不能重复(null值 是可以重复的)

create table stu(

idint,

phone_number varchar(20) unique

)

删除

alter table studrop index phone_number;

创建表之后添加唯一约束

alter table stu modify phone_number varchar(20) unique;

主键约束:primary key

1、表示非空且唯一

2、一张表只能有一个主键约束

3、主键就是表中的唯一标识

创建表时候添加主键约束

create table stu(

idint primary key auto_increment, -- 表示自增长

name varchar(20)

)

删除主键约束

alter table stu drop primary key

删除自动增长

alter table stu modify id int --注意因为主键约束使用这个是不能直接删除的,所以这个可以用来删除自增长

添加自增长(通常和主键一起使用)

alter table stu modify id int auto_increment

添加主键约束

alter table stu modify id int primary key

外键约束:foreign key

1.在创建表时候可以添加外检约束

create table 表名(

constraint 外键名称 foreign key 外键列名 references 主表名称(主表列名称)

)

create table employee(

idintprimary key auto_increment,

name varchar(20),

ageint,

dep_idint , --外键对应主表的主键

constraint emp_dept_fk foreign key(dep_id) reference department(id) on update cascade--设置及联更新操作

)

这里不能直接删除department表,因为有其他表引用这个表。外键可以是null但是不能是不存在的值

删除外键

alter table employee drop foreign key emp_dept_fk;

创建表之后添加外键

alter table employee add constraint emp_dept_fk foreign key (dep_id) references department(id);

级联操作,添加外键的时候设置级联(谨慎使用,特别是级联删除,使用之前好好考虑)

部门id改变,引用department表的表中也需要修改

constraint emp_dept_fk foreign key(dep_id) reference department(id) on update cascade--设置及联操作

级联删除

constraint emp_dept_fk foreign key(dep_id) reference department(id) on delete cascade--设置及联删除操作

注意被引用中删除行,对应引用表中引用的就会被删除。

数据库的设计

1.多表之间的关系

1.一对一关系:人和身份证 一个人只能有一个身份证,一个身份证只能对应一个人

可以在任意的一方添加外键,指向另一方。并且让外键唯一,给外键添加唯一约束unique(直接合成一张表)

2.一对多或者多对一关系:部门和员工,一个部门有多个员工,一个员工只能对应一个部门。

实现方式:在多的一方建立外键指向一的一方的主键

3.多对多的关系:学生和课程之间的关系。

实现方式:通过中间表实现,中间表至少有两个字段,这两个字段分别指向两个表的主键,这两个字段分别作为两个外键,指向两张表的主键,这两个就是联合主键,

820b2effbcb8f00631acb81db1c88e51.png

案列,旅游项目中

分类表->路线表  一对多

分类表

create category(

cidintprimary key auto_increment,

cname varchar(100) not nullunique

)

线路表

create tab_route(

ridintprimary key auto_increment,

rname varchar(100) not nullunique,

price doublel,

rdate date,

cidint,

foreign key (cid) reference category(cid)

)

用户表

create tab_user(

uidintprimary key auto_increment,

username varchar(100) unique not null,

password varchar(30) not null,

name varchar (100) ,

birthday date,

sex varchar(1) default '男',

telephone varchar(11),

email varchar(100)

)

路线表->用户表 多对多

创建中间表favorite

create tab_favorite(

ridint,

date datetime,

uidint,

primary key(rid,uid),--联合主键

foreign key (rid) references tab_route(rid),

foreign key(rid) references tab_user(uid)

)

2.数据库设计的范式

第一范式:每列都是不可分割的原始数据

第二范式:在及第一范式的基础上, 非码属性必须完全依赖码属性(消除非主属性对主码属性的部分依赖)

函数依赖:如果通过A的属性的值可以确定

完全函数依赖:如果A是一个属性组,则B属性值的确定完全依赖A属性中所有的属性值

部分函数依赖:如果A是一个属性组,B属性的确定只需要A中的某一个确定

传递函数依赖:通过A属性确定B属性,由B属性确定C

码:字啊一张表中,如果一个属性或属性组,被其他所有属性完全依赖,就成这个属性是这个表的码

码属性:属性组中的所有属性

非码属性:除上面之外的。

第三范式:在二范式的基础上消除传递依赖,(这样就不会因为某个行的删除,对应系也会删除)

满足第一范式(属性不可分割)下面表中的码是学号和课程名

5858f357c263d9abfcbb3893c5380787.png

满足第二范式(非码属性完全依赖码属性)

6206bbdaf18ff6908273803adcb57832.png

满足第三范式(上面系主任依赖系名,系名依赖学号,删除学生对应的系和主任也会删除。)

8039237b7b3c71c33649e99966d211a4.png

数据库的备份

命令行:

语法:mysqldump -u用户名 -p密码  数据库名称> 保存路径

还原:登录数据库,创建数据库,使用数据库,执行文件source文件的路径

语法:source 上面保存文件的路径。

图形化工具:右键导出,右键执行sql脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值