数据库-实验-学习笔记

e/r关系模型

e/r的意思:实体关系 entity-realationship

实体和实体集的关系

关系的,一般是二元关系,也有多元的

关系是(定义)连接两个或多个实体集的

关系集:一个表格,有两边实体集的名字但是没用其他属性

属性里下划线代表主键

映射基数?约束

一对一:两边都有箭头

一对多:和多对一一样

多对一:1.指向一的那边有箭头

多对多:没有箭头

Q:关系上面有个属性代表什么?

A: role,在marg上做了笔记

两个实体集上可以有好几个关系

挺好懂的

参照完整性例如每个理事长的studio必须在总的studio里,不好理解的话,一个movie的studio肯定是一个,但是多个movie的studio可能是一样的,但是在studio里的studio_name只能是一个。

度的约束:限制实体的个数

 弱实体集:不能单独存在的实体集

把er图转换为表格

实体集转化为表格属性是连接的属性

把关系转换为表格属性是连接的实体集

弱实体集是不能直接转化为表格的,因为他不能单独存在

转化关系为表格的时候,实体集的主键应该在表格中,关系的属性也应该在表格中

合并关系的为表格的时候,多对一的关系中,多的那个所有的属性都要当成表格的属性,一的那个只需要把主键弄进去就行了

怎么处理弱实体集呢?指的是把弱实体集转化为表格。弱实体集自己的属性都要有,还要包括他所依赖的强实体集的主键

Q:怎么样才能形成外键呢?

学习约束和触发器的ppt:

约束指的是数据元素之间的一些关系

触发器是当满足某个条件的时候执行一些操作

约束的种类:键,外键,基于值的约束,基于元组的约束,断言

Q: 基于元组的约束?

建立主键的操作,创建表格的操作

在某个属性后面加上primary key,要是有多个属性构成主键呢?

另写一行,用元组的形式把主键包含进去 

Q:怎么用CONSTRAINT关键字建立有名称的主键和外键约束。

A:主键:

constraint+主键名+primary key+属性名 这里的属性名外面一定要加括号,不然是会报错的

 外键呢?

constraint+外键名+foreign key(属性) references+主表名+(属性)

 由此看来constraint就是起到一个命名的作用,[]代表的意思应该是可选的

关于如何建立外键的例子

但是这样只建立了外键,却没有建立主键,所以还需要修改表格以建立主键,但是这里我突然想到一个问题:弱实体集需要建立主键吗?怎么建立主键呢,只用加入到这个表格中的强实体集的主键肯定是不行的,因为弱实体集是多对一的关系,对于这个弱实体集所依赖的强实体集来说的话 

ER图转为关系模式(超详细,超简单)_WKP9418的博客-CSDN博客_弱实体集转化为关系模式

这篇文章介绍了如何把er图转换为关系模式,写的还是不错的

对于这次实验来说,title这个弱实体集转换成关系表后的主键应该是所有的属性

所以还要把刚才建好的表格中的所有元素都设为主键

具体的操作应该是这样子的,(话说能不能把插入的图片去掉水印呢。。)

Q:日期这种的数据在创建表格的时候用什么类型?

A:用date数据类型,其储存yyyy-mm-dd格式的日期

删除表格的方法:drop table+表格的名字

创建好的表格在workbench里要重启才能看到,很不方便,所以可以用show tables这个命令来查看当前所有的表格

任务:导入数据到表格中

删除表

MySQL 删除数据表 | 菜鸟教程

创建表

前面是变量名,后面是变量类型,不要搞混

创建了表以后refresh

不刷新看不见创建的表,以为没创建呢

Refresh MySQL views? - Stack Overflow

里面提问里就写了右键刷新就行

从文件里导入数据 load data infile

thought:(题外话,学习的是方法,以后可能用不到这个知识,但是这种思维习惯已经在脑海里生根发芽了,养成阅读正规文档的习惯)

分成小任务来解决:

Q:怎么打开一个文件?

A:由于文件在本机,所以导入的时候写个绝对路径就行,local参数也要加上

从网上找一些用法搜好多文章都找不到想要的答案,这时候自己尝试就显得十分重要,只看文档我认为是很难理解一个函数是怎么用的,只有在例子中才能快速上手

在导入数据的时候遇到了不能导入的问题,error3948,google以后发现要把local_infile变量的值改为1才行,具体见如下网站mysql - ERROR: Loading local data is disabled - this must be enabled on both the client and server sides - Stack Overflow但是比着教程更改以后又发现了新的问题,error2068

mysql - Error code 2068: file requested rejected due to restrictions on access with root user - Stack Overflow这个网址似乎有点问题,自己再谷歌一下吧

 

用这条语句可以查阅一个table现在的状况

此处可以发现导入失败了,因为没有弄好分割符的事,所以我要清空表格然后重新导入数据,用这条语句可以清空表格的内容,还有一个delete的方法,插个眼以后可以研究 

这样以后虽然能插入数据了,但是只是表的列和文本中的列数目格式等一样的情况下才行,那么不一样的情况怎么办呢?(这里先不研究,以写完作业为目的 

插入的时候发现数据截断了,在lastname和firstname列开的字符串太小了,所以又要查查怎么修改已经建好的表

使用alter关键字和change,把last_name从char(15)改为char(30) 

这里我要使用truncate table employees想清空表的时候就出错了,因为我这个employees的主键是title的外键,而truncate的原理是把表删了再建一次,上面说了还有一个delete的方法,凭借记忆

这样就全部删除了

突然感觉像再写实验报告,以后要写的精简一点,复习起来也方便

limit关键字,查询前10条语句

 

根据条件查询条目

 

查询指定日期之间的

 查询具有特定前缀的

关于sql1ppt的笔记

查询最大值

把这一列的名字放入max中,as更改这一列的名字

 

count查人数 

order by调整升序还是降序,默认升序

group by聚合 

 明天再做吧,回去休息了

一些知识学会的就行,博客只记录点重要的问题或者是大纲,方便以后复习,想完善成好的博客也是以后再说吧。

not exist语句要求子查询的结果为空,怎么找在全部部门工作过的员工?根据员工编号,在dept_emp中查找,

部门和部门员工自然连接,则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值