常用数据库知识

### 目录

-[√][E-R]()关系简单介绍

-[√] 表是怎么被设计出来的

-[√] 主键和外键

-[√] 表和视图

-[√] 单表查询

-[√] 连接查询

-[√] 嵌套查询

-[√] 集合查询

-[√] 数据更新

-[√] 修改表&删除表([慎用]())

####[E-R]()关系简单介绍

*概念

*E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

*示例图


#### 表是怎么被设计出来的

*范式

*概念

*范式(数据库设计范式,数据库的设计范式)

是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。

*第1范式(1NF)

*数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

*第2范式(2NF)

*数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

*假定选课关系表为SelectCourse(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在如下决定关系:

-[√](学号,课程名称) → (姓名,年龄,成绩,学分)

*这个数据库表不满足第二范式,因为存在如下决定关系:

-[√](课程名称) → (学分)

-[√](学号) → (姓名,年龄)

*由于不符合2NF,这个选课关系表会存在如下问题:

-[√] 数据冗余

-[√] 插入异常

-[√] 删除异常

*把选课关系表SelectCourse改为如下三个表:

*学生:Student(学号,姓名,年龄)

*课程:Course(课程名称,学分)

*选课关系:SelectCourse(学号,课程名称,成绩)

#### 主键和外键

*主键

*主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

*外键

*如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

*建表示例


#### 表和视图

*视图概念

*指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

*视图作用

-[√] 简单性

-[√] 安全性

-[√] 逻辑数据独立性

*创建视图示例


#### 单表查询

*单表查询是指仅涉及一个数据库表的查询,比如选择一个表中的某些列值、选择一个表中的某些特定行等。单表查询是一种最简单的查询操作。

*示例

*查询全体学生的学号与姓名

*select 学号,姓名 from student;

*查询全体学生的出生年份

*select 姓名,2017-年龄 from student;

*多个查询条件查询

*select * from student where 姓名='张三' and 年龄='16';

*根据年龄倒序排序

*select * from student where 姓名='张三' and 年龄='16';

*统计表中的记录数

*select count(*) from student;

*统计学生的平均年龄

*select avg(年龄) from student;

*统计不同名字的学生数(根据名字去重)

*select count(distinct 姓名) from student;

*对查询结果分组

*select 学号,count(*) from selectcourse GROUP BY 学号;

*使用having对分组结果进行筛选

*select 学号,count(*) from selectcourse GROUP BY 学号 having 学号>2

*常用查询条件


#### 连接查询

*卡氏积连接

*不带连接谓词的连接。两个表的卡氏积即是两表中元组的交叉乘积,也即其中一表中的每一元组都要与另一表中的每一元组做拼接,因此结果表往往很大。

*如:select * from student,course;

*自然连接

*如果是按照两个表中的相同属性进行等值连接,且目标列中去掉了重复的属性列,但保留了所有不重复的属性列,则称之为自然连接。

*如:select * from student,selectcourse where student.学号= selectcourse.学号;

*自身连接

*自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

*如员工表里有“员工号,管理者工号”,要查询即是员工又是管理者的员工

*如:select a.姓名,a.员工号 from emp a,emp b where a.员工号=b.上司员工号;

*复合条件连接

*where子句中有多个条件的连接操作,称为复合条件查询

*如:select * from student,selectcourse where student.学号= selectcourse.学号 and selectcourse.成绩>=60;

#### 嵌套查询

*带有in谓词的子查询

*如单层嵌套:select * from student where 学号 in(select 学号 from selectcourse);

*如多层嵌套:select * from student where 学号 in(select distinct 学号 from selectcourse

where 课程名称 in(select 课程名称 from course));

*如多层嵌套+复合条件查询:select * from student where 学号 in(select distinct 学号 from selectcourse

where 课程名称 in(select 课程名称 from course)) and 年龄>=17;

*带有exists谓词的子查询

*exists代表存在量词∃。带有exists谓词的子查询不返回任何实际数据,它只产生逻辑真值“true”或逻辑假值“false”。

*如:select * from student WHERE

exists (

select * from selectcourse

where

学号=student.学号 and 年龄=20)

#### 集合查询

*每一个select语句都能获得一个或一组元组。若要把多个select语句的结果合并为一个结果,可用集合操作来完成。(注意:参加union操作的各数据项数目必须向他,对应项的数据类型也必须相同)

*如:select 姓名,年龄 from student UNION select * from course;

#### 数据更新

*插入数据

*如:insert into student VALUES(1,'张三',16);

*修改数据

*如:update student set 年龄=14 where 学号=1;

*删除数据

*delete from student where 学号=1;

*delete from selectcourse where 学号=1;

#### 修改表&删除表([慎用]())

*给表添加一列

*如:alter table student add 性别 varchar(5);

*删除表中某一列

*如:alter TABLE student drop column 性别;

*删除表

*drop table emp;

*drop table selectcourse;

*drop table course;

*drop table student;

*drop view sc;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容