大一第一学期数据库期末复习大纲

数据模型与概念模型

信息世界通过概念模型进行描述,而计算机世界则是通过数据模型进行描述

概念模型相关的概念:

对象:类似与java中的类

实例:实体

属性:实体某一方面特征的抽象展示

码,主码,次码:唯一标识一个实体的属性或者属性组,不能唯一标识的为次码

实体集之间的联系:

image-20230206220046334

数字的标法即为从箭头的根部来标,数字为这个箭头根部的对应关系,如教师n→学校

E-R图

长方形写实体集,圆形为属性,菱形为联系

image-20230206220925012

er转化为关系模型

image-20230207100443658

以本图为例

合并到实体时,保留自身的属性,添加关系的码和另一个实体的码(问题就在于这个关系的码,回头得弄明白)

合并到关系时,保留自身的属性,添加左右两个实体的码,并且将两个码合并,作为自身的码

合并写法

使用(方法,姓名,卡号)(也就是把码用横线标出)

学生(姓名,班级,卡号…………)

数据库代码部分

查看当前所有数据库

1
show databases;

创建数据库

1
create database 数据库名;

切换字符集

1
alter database 数据库名 character set 字符集名

创建基本表

表结构就是定义一个表的字段、类型、主键、外键、索引

1
2
3
4
5
6
7
8
9
10
create table 表名(

列名 数据类型 约束条件,

列名 数据类型 约束条件,

);
约束条件有 PRIMARY KEY设置主键
NOT NULL 非空(不设置这个留空为null,设置了之后不可留空)
unique数据不重复

image-20230207102312335

unsigned标识只能为0-255的整数,default指定默认值

删除数据库

1
drop database 数据库名;

设置字段默认值

1
ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 默认值;

修改字段的条件与属性

1
alter table 数据库名 modify 字段名 数据类型 约束条件;

插入数值语句

1
2
3
4
5
第一种:INSERT INTO 表名 (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

第二种:INSERT INTO 表名
VALUES (value1, value2, value3, ...);

删除与增加主键

注意,主键不为空,不重复

1
2
3
alter table 表名 drop primary key;

alter table 表名 add primary key(字段,字段...);

自动增长

image-20230207105549891

约束条件auto_increment

注意一下图片里的这个语句

image-20230207105829182

自增的值可以自定义

展示表结构

desc 表名;image-20230207110033297

改表名,字段名,字段类型

1
2
3
alter table 表名1 rename to 表名2;(改表名)

alter table 表名 change 字段名1 字段名2 数值类型;

添加,删除字段

1
2
alter table 表名 add 字段名 数据类型;
alter table 表名 drop 字段名;

删除表

1
2
3
drop table 表名; 完全删除

delete from 表名; 只删除数据

批量修改表中数据

1
update 表名 set 字段名=表达式,字段名=表达式....;

示例:image-20230207143507522

image-20230207143515623

简单查询-单表(SELECT)

1
2
3
4
5
6
7
括号内的即为顺序
select 目标字段|字段表达式或函数 from 数据源 (where) (group by) (having) (order by)
其中目标字段用*代表全部

select distinct classname from stu;这里的distinct可以折叠重复的字段

算数操作符:+ - * / %(取模)

下面提供一些案例,其中包含重要的知识点,慢慢看

image-20230207144830256

image-20230207144847433

查表与子查询相关知识点

and 和 or 连接多个表达式

1
select 学号 from 选课 where 课程号 = 'c04' and 成绩 > 90

and是两个条件都满足

or是两个条件满足其中之一就行

image-20221118143140498

in后面代表的是集合,里面得是同类型的东西

1
between xx and xx检索一个范围(整数),并且这是一个闭区间

image-20221118143653861

like语句

1
2
3
select * from stu where sanme like '王%';(%替代很多个)

select * from stu where sanme like '王_';(_替代一个)

image-20221118145605265

如此以查找含有名字的

内联查询

image-20221118160657657

image-20221118160756250

image-20221118160848438

当两个表有同一个字段时,需要加表前缀加以区分

自然连接

join前加nature,两个字段必须同名并且会自动折叠同名的部分,原来那个字段名不必一样,但是内容得一样

外连接

左外连接和右外连接分别全部输出左边的数据与右边的数据,

1、两者的分类不同:内连接分为相等连接和自然连接两种连接方式;而外连接分为左外连接、右外连接和全外连接三种连接方式(左外连接即LEFT OUTER JOIN;右外连接即RIGHT OUTER JOIN)。

2、两者所连接的对象表不同:内连接进行连接的两个表是对应的相匹配的字段完全相同的。左外连接中进行连接的两个表会返回左边表中的所有的行和右边表中与之相匹配的列值,没有相匹配的用空值代替。右外连接中进行连接的两个表会返回右边表中的所有的行和左边表中与之相匹配的列值,没有相匹配的用空值代替。

3、两者的作用范围不同:内连接的连接发生在一张基表内,而外连接的连接发生在两张表之间。

注:内连接(典型的连接运算,使用像 = 或 <> 之类的比较运算符)。包括相等连接和自然连接。内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

image-20221125144025429

自链接

image-20221125144713254

a,b取别名,可以简化操作,学着点 image-20221125145212936

3表连接,超级加倍

升序降序

select * from xx order by 成绩 desc(降序)asc(升序)

嵌套查询-子查询

in语句

select 学号,姓名 from 学生 where 学号 not in (select 学号 from 选课);

子查询的括号前面必须要in或者=<>之类的

in表示范围内的数据

where 年龄 >(select 年龄 from 学生 where xxximage-20221125165358705)

运算符的子查询

selec xxx from xx where sex = ‘x’ and age >(select xx from xx where name)

any 与all

image-20221202134716965

image-20221202134925838

exist

image-20221202140026009

image-20221202140230801

image-20221202141433864

字段相等也并不是一定要链接

image-20221202143544431

image-20221202144457063

分组查询

group by

image-20221202145747995

image-20221202145946599

having语句

对分组后的语句经行条件的筛选就用having

image-20221202150916501

having后还能加order by

sql视图

视图的作用

简化用户的操作

创建视图

create view 视图名 (字段名列表) as 子查询 with check option

image-20221202160721007

image-20221202160824790

image-20221202161103904

视图的更新

image-20221202162335837

with check option的作用创建的视图中字段设有where条件,当有check option的时候插入非法字符就会报错,插入的东西或是修改的东西在基表里,但是修改视图的同时也修改了基表

image-20221202165306489

删除视图

drop view 视图名

触发器

create trigger 触发器名 (before/after) (insert update delete) on 表名 for each row 触发器主体

触发器主体

begin

aql语句;

end;

image-20221209141407789

new与old实现数据库完整性约束

image-20221209143903180

查看与删除触发器

drop trigger

show trigg

遗留下来的一些奇怪的东西

1
2
3
4
5
6
7
DELIMITER $$
CREATE TRIGGER t_ww AFTER UPDATE ON worker FOR EACH ROW
BEGIN
IF new.age > 60 THEN
UPDATE worker SET new.age = old.age;
END IF;
END;

关系模型的三类完整性约束

实体完整性 通过主键的约束保证不重复

参照完整性 通过外键的管理保证标与表之间数据的完整性

自定义完整性 自定义扳机

关系的运算

σF(),F是下标,代表查询的条件,括号内为表,f相当于where,f可替换为 addr = ‘xxx’

投影运算 Πsno,sname()下标,仅搜索下标的列

涉及到的题目

(所有的这些题目选择题也写一写)

12 2 3 5

27 第二个

28 第四个

28,29,30问答题

48 第一题,第三题,

73 第二题,第四题

95 第十二(第五章)

第六章分几乎占一半(直接或间接)

153 1 2 3

155 22题

193 做了解

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023 Langxecho
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信