知识要点
2.22
一.数据库系统和数据库设计
1.数据(Data),信息表现形式(数字、文字、图形、图像、视频、音频或动画等)
2.数据库(DataBase,DB):有组织结构的数据集合。
3.数据库管理系统(DataBase Managemen System,DBMS):是一个系统软件平台,是数据库应用系统的核心。
4.数据库应用系统(DataBase System,DBS):包括DB,OS,DBMS,APP,USER,DBA等。
5.数据模型:
层次模型,网状模型,关系模型
6.
SQL Server的安装
操作:
(1)Mysql80的安装与配置
(2)E-R图设计
第2周 3.1-3
第二章 关系数据库系统模型
1、数据模型:
根据应用层次分为3类:
概念模型:实体(矩形框)、属性(椭圆框)、联系(姜形框+无向边)---->E-R图表示
逻辑模型:层次模型(树状)、网状模型(网状)、关系模型(二维表)
物理模型:数据在计算机里面的存取与管理方式等,对数据最底层的抽象描述
根据内容有3部分组成:
数据结构:层次模型(树状)、网状模型(网状)、关系模型(二维表)
数据操作:增、删、改、查
数据约束:完整性的规则
2、数据库模型:
标准结构:
三级模式:
外部层---->外模式(数据概念模型)
概念层---->概念模式(数据逻辑模型)
内部层---->内模式(数据物理模型)
两级映像:
外模式/概念模式映像
概念模式/内模式映像
3、关系数据库系统模型:
(1)关系模型:
域:一组具有相同数据类型的值的集合
笛卡尔积:域的遍历乘积,构成一个二维表,子集为全集的关系(Relation)
关系:笛卡尔积的有限子集,也是一个二维表
行:元组
列:属性
类型:基表、查询表、视图表
候选码(CK) 唯一标识元组的属性或属性组)
主码(PK):某某一个候选码(实体完整性)
外码(FK):不不同基表间的相同属性联系(参照完整性)
规范化(范式) 每个分量必须是不可分的数据项(不能”表中表“)
表示:R(A1, A2,A3...An),其中R是关系名,A1,A2…An是属性名
(2)关系代数:抽象的查询语言
传统的集合操作:并、差、交、笛卡尔积(元组行)
专门的关系操作:选择(元组行),投影(属性列),连接(行列)、除(行列)
比较运算符:大于、大于或等于、小于、小于或等于、等于、不等于
逻调运算符;与、或、非
(3) 关系语言:
数据定义语言(Data Definition language.DDL): CREATE, ALTER, DROP(包I、修、8)
数据操作语言(Data Manipulation Language.DML):INSERT, UPDATE、DELETE(播入、修改、配除)数据查询语言(Data Query Language,DQL):SELECT(查询)
数据控制语言(Data Control Language.DCL):GRANT。REVOKE(操作权限)
4、操作:课本P37-39
实验2-2(1)(2)(3)(4)(5)
3(1)(2)将结果写在书上
第四章 Mysql数据库和表的命令操作
1.数据库(DATABASE)操作:
(1) 创建数据库
【例4.2】创建名为stusys的学生信息数据库,该数据库是本书的重要数据库。
mysql> CREATE DATABASE stusts;
(2)查看数据库
【例4.1】查看MySQl服务器中已有的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| stusys |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
(3)选择数据库
【例4.3】选择stusys为当前数据库
mysql> use stusys;
Database changed
(4)修改数据库
【例4.4】修改数据库stusys的默认字符集和校对规则
mysql> alter database stusys
default character set gb2312
default collate gb2312_chinese_ci;
(5)删除数据库
【例4.5】删除数据库 stusys
mysql>DROP DATABASE stusys;
2.数据表(TABLE)操作:
(1)表结构
行:记录
列:字段(filed),空值(null),主键(primary Key),外键(Foreign Key)
(2)数据类型
整数型(int),定点数型(decimal(m,d)),浮点型(float),字符串型(char(n),varchar(n)),日期和时间型(datetime,year)
(3)创建表
a.新表
【例4.6】在数据库stusys中创建student表
mysql> use stusys;
Database changed
mysql> create table student
-> (
-> sno char(6) not null primary key ,
-> sname char(8) not null,
-> ssex char(2)not null default '男’,
-> sbirthday date not null,
-> speciality char(12) null,
-> tc tinyint null
-> );
b.复制表:
[例4.7]在stusys数据库中,使用复制方式创建student1表,表结构取自student表。
mysql> USE stusys;
Database changed
mysql> CREATE TABLE student1 like student;
(5)查看表
a.表的名称:
[例4.8]查看数据库stusys中所有表名。
mysql> USE stusys;
Database changed
mysql> SHOW TABLES;
b.表的基本结构
[例4.9]查看数据库stusys中student表的基本结构。
mysql> SHOW COLUMNS FROM student;
或者
mysql> DESC student;
C.表的详细结构
[例4.10]查看数据库stusys中student表的详细结构。
mysql> SHOW CREATE TABLE student;
(6)修改表
a.添加列
[例4.11]在数据库stusys的student表中增加一列sid, 添加到表的第1列,不为空,取值唯一并 自动增加。 mysql> ALTER TABLE stusys.student
b.修改列 ADD COLUMN sid int NOT NULL UNIQUE AUTO INCREMENT FIRST;
[例4.12]将stusys数据库的student1表的列sbirthday修改为sage,将数据类型改为tinyint,可空,默认值为18。 mysql> ALTER TABLE stusys.student1
-> CHANGE COLUMN sbirthday sage tinyint DEFAULT 18;
C.删除列
[例4.13]删除数据库stusys的表student中的列sid。
mysql> ALTER TABLE stusys .student
> DROP COLUMN sid;
d.修改名称
[例4.14]在stusys数据库中,将student 1表重命名为student2表。
mysql> ALTER TABLE stusys.student1
> RENAME TO stusys.student2;
[例4.15]在stusys数据库中,将student2表重命名为student3表。
e.删除表 mysql> RENAME TABLE stusys.student2 TO stusys student3;
[例4.16] 删除stusys数据库中的student3表。
mysql> DROP TABLE stusys.student3;
(7)查看存储引擎
[例4.17] 查看存储引擎。 mucrl- CHC W FNIGINFS
mysql> SHOW ENGINES;
第五章 表数据操作
2表数据操作
(1)插入数据
a.插入值的顺序和表定义的列的顺序相同
# [例5.1]向student1表插入一 条记录(196001;董明霞,女:1999-05-02,通信 ,50)。
INSERT INTO student1
values
(196001,董明霞女,1999-05-02;通信,50);
select*from student1;
b.插入值的顺序和表定义的列的顺序不同
# [例5.2]向student1表插入- 条记录,学号为“196002",姓名为“李茜”,专业为“通信”, 总学分48,
INSERT INTO student1 (sno, sname, speciality, te, ssex, sbirthday)
values
(196002;李茜,通信 48,女;1998-07-25);
select* from student1;
c.给出了部分列的值,其它列的值为表定义时的默认值,或允许该列取空值
# [例5.3]向student1表插入一条记录,学号为“196004 ,姓名为“周俊文”,性别为“男”、 取默认值,出生日期为"1998-03-10” ,专业为空值,总学分为52. INSERT INTO student1 (sno, sname, sbirthday, tc)
VALUES
(196004;周俊文," 1998-03-10', 52);
select大from student1;
d插入多条记录,在插入语句中,插入值列表之间用逗号隔开。
# [例5.4]向student表插入样本数据,共6条记录,参见附录B.
INSERT INTO student
(191001,,刘清泉,男;1998-06 21;计算机,52)
(191002'张营玲女1999-11-07*”计算机:50)
(191003";冯涛",男;1999-08-12;计算机,52),
(196001,董明霞,女,1999-05-02;通信,50),
(196002李茜,女:1998-07-25;通信,48),
(196004,周俊文,男;1998-03-10";通信,52);
select from student1;
e.REPL ACE语句可以在插入数据之前将与新记录冲突的旧记录删除,便新
#【例5.5】对student1表,重新插入记录('196002','李茜','女','1998-07-25','通信’,48)。
use stusys;
create table student1 like student;
select * from student1;
insert into student1
select * from student;
#【例5.6】向student2表插入student表的记录。
use stusys;
create table student2 like student;
select * from student2;
insert into student2
select * from student;
#【例5.7】在student1表中,将学生周俊文的出生日期改为“1999-03-10”。
select * from student1;
SET SQL_SAFE_UPDATES=0;
UPDATE student1
SET sbirthday='1999-03-10'
WHERE sname='周俊文';
#【例5.8】在student1表中,将所有学生的学分增加2分。
use stusys;
update student1
set tc=tc+2;
select * from student1;
select * from student;
#【例5.9】在student1表中,删除学号为196004的行。
delete from student1
WHERE sno='196004';
#【例5.10】在student1表中,删除所有行。
delete from student1
#【例5.11】在student表中,删除所有行。
5.04-12
第10章存储过程和存储函数
1.存储过程(procedure) :
是一组完成特定功能的SQL语句生,即一段存放在数据库中的代码,可由声明式SQL语句(例如CREATE语句、SELECT语句、INSERT语句等)和过程式SQL语句(如IF -THEN-ELSE控制结构语句)组成。
2.存储过程的创建、查看、调用和删除
(1)创建:
delimiter//
create procedure存储过程名称(形式参数] )(先选择数据库)
begin
routine body(存储过程体) ;
end$$
I delimiter;
注意:可使用DELIMITER命令将MySQL语句的结束标志修改为其他符号:delimiter //..delimiter ;
(2)查看:
show procedure status;/create procedure存储过程名称;
(3)调用:
CALL存储过程名称(实际参数]);
()删除
drop procedure存储过程名称
3.存储函数(function):
可以分为两种,一种是内置函数,-一种是自定义函数。在MySQL中, 通常将用户自定义的函数称为存储函数,和MySQL内苦函数性质相同,都用于实现某种功能。
4.存储函数的创建、查看、调用和删除
除了调用均与存储过程类似, 只需将procedure改成function即可。
(1)创建,createfunction
(2)查看:show function
t(C:]
(3)调用:select函数名(实参)(不能用cal)
(3月月31
D:
(4)删除:drop function
5.存储过程与存储函数的异同
(1)相同:
都是过程式数据库对象,都是附有一定功能的代码集合,增删改查操作均类似
(2)不同:
a.存储过程可以有输入和输出参数,但函数只能有输入参数,函数本身就是输出参数 b,存储过程调用: call存储过程名,但函数调用: select 函数名(实参)
中1
C.存储过程不允许有return语句,但函数必须有retur语句
口8-Windows照片查看器
文件日打印(P)电子邮件(E)
刻乐U
可打开(O)
个
Drive
地磁盘(C:地磁盘(D:
6.变量的定义(声名)、赋值、流程控制语句与游标
局部变量:在过程体的开头声名,在benin..end内总有效
(1)定义:declare变量名变量类型
(2)单个赋值语句:set变量名=变量值或表达式
(3)列表赋值语句: select列表名 into |变量名
(3)流程控制语句:
a.条件语句: f.h..l.. end if;
case变量名
when...then ..end case;
b.循环语句: while .. end while;
[标签:]LOOP语句列表出END LOOP[标签];
[标签:] REPEAT语句列表UNTIL条件表达式END REPEAT [标签];
(4)游标:是通过select语句检索出来的结果集,一定要在存储过程或函数使用,不能单独在查询中使用。
操作过程:
定义(声名) : declare游标名称-->
打开: open游标名称-->
读取: fetch 游标名称into变量名-->
关闭: close 游标名称
用户变量:用户自己定义的变量,存在整个会话中,前面加@符号,与存储过程的输出变量个数相同。
系统变量:全局变量和会话变量,前面加@@符号。
5.17- 19
第11章触发器和事件
1.触发器(trigger) :
是一个被指定关联到表的数据库对象,与表的关系密切,它不需要用户调用,而是在一个表的特定事件出现时将会被激活, 此时某些MySQL语句会自动执行。
2.触发器的创建、删除和使用
(1)创建: delimiter //
CREATE TRIGGER 名称时间(before/after) 事件(insert/update/delete)
ON名FOR EACH ROW
begin
触发体语句;
end //
delimiter ;
注意:在触发器的创建中,每个表每个事件每次只允许一个触发器,所以每条INSERT、 UPDATE、 DELETE的前或后可创建一 个触发器, 每个表最多可创建6个触发器。
(2)验证使用:
a. INSERT触发器:在INSERτ语句执行之前或之后执行。
(a) INSERT触发 器的触发体内可引用一个名为NEw的虚拟表来访问被插入的行。 b)在BEFORE INSERT触发器中,NEW中的值可以被更新,但after后不能更新。
b. UPDATE触发器:在UPDATE语句执行之前或之后执行。
(a)UPDATE触发器的触发体内可引用一一个名为0LD的虚拟表来访问更新以前的值,也可引用一一个名为NEw的虚拟表来访问更新以后的值。
(b)在BEFORE UPDATE触发器中,NEW中的值可能E被更新,但after后不能更新。 (c) OLD中的值不能被更新。
c. DELETE触发器:在DELETE语句执行之前或之后执行。
(a) DELETE触发 器的触发体内可引用一个名为OLD的虚拟表来访问被 删除的行。 (b) OLD中的值不能被更新。
(3 )删除: DROP TRIGGER 名称
3.补充说明:
(1)after是先完成数据的增删改,再触发,对new数据不能增删改;
(2)before是先完成触发,再增删改,对new数据可以增删改;
(3)after和before都不能对old数据增删改。
4.事件(Event):
是在指定时刻才被执行的过程式数据库对象
(1 )通过MySQL中一个很有特色的功能模块一一事件调度器(Event Scheduler)进行监视,并确定其是否需要被调用。 (2 )事件调度器可以精确到每秒钟执行个任务, 比操作系统的计划任务更具实时优势。
(3)事件和触发器相似,都是在某些事情发生时启动,由于它们相似,所以事件又称为临时触发器( Temporal Trigger)。(4)区别:触发器是基于某个表所产生的事件触发的,而事件是基于特定的时间周期来触发的。
(5 )使用事件调度器之前,必须确保开启事件调度器。
5.事件的创建、修改和删除
(1)创建:
delimiter //
create event 名称
on schedule时间(at/every)dc
begin
事件语句;
end //
delimiter ;
(2)修改: alter event名称
(3)删除: drop event名称
5.24-26
第12章安全管理
1.权限表
(1)user表:记录允许连接到服务器的账号信息,里面的权限是全局级的,即针对所有用户数据库所有表的
查看: desc user;
(2)db表:存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
(3)tables_ priv表和tables_ priv表:对表进行权限设置
(4)procs_ priv表:对存储过程和存储函数进行权限设置
2.用户管理
(1)查看: SELECT host, user, authentication string FROM mysql.user,
(2)创建:CREATE USER 'user name' @'host name' IDENTIFIED BY 'password' (3)删除:DROP USER user 'user name @'host name';
(4)修改用户名:RENAME USER old user TO new user;
(5)修改密码: SET PASSWORD FOR user=' password'
3.权限管理
(1)授予权限:
GRANT priv _type(create/select/drop...).
on数据库名或表名
to user
WITH GRANT OPTION; (权限转移)
(2)撤销权限:
REVOKE priv type(create/select/drop..)
on数据库名或表名
FROM user
第15章关系数据库设计理论
(1)函数依赖:起核心作用,是模式分解和模式设计的基础。
(2)范式:是模式分解的标准。
(3)模式设计