数据库复习大纲
1.视图的定义和作用
视图是数据库中的虚拟表,其内容是根据查询语句动态生成的结果集。它提供了一种逻辑上的数据表表示方式,但实际上并不存储任何数据。视图的作用有以下几个方面:
-
数据抽象:视图隐藏底层复杂的数据结构和关联关系,提供一个简化的接口供用户查询和操作数据,使数据访问更加方便。
-
数据安全性:通过视图可以限制用户对数据库的访问权限,只向用户显示他们具备权限的数据列,从而保护敏感数据的安全性。
-
数据完整性:通过视图可以定义数据列的验证非法数据的插入或修改,保障数据的完整性。
-
数据重用:视图可以将常用的查询逻辑抽象出来,在需要的时候重复使用,简化应用程序开发,并提高数据库操作的效率。
-
简化复杂查询:通过使用视图,可以将复杂的查询逻辑封装在视图中,使得查询语句更加简洁清晰,减少应用程序中的重复代码。
总之,视图提供了一种灵活、安全、简化数据库访问和查询的方式,提高了数据库的可用性和可维护性。
2.数据库主要提供哪些功能
数据库主要提供以下功能:
-
存储数据:数据库能够持久地存储大量结构化或非结构化数据,包括数字、文本、音频和图像等多种类型的数据。
-
管理数据:数据库能够对存储的数据进行管理,包括添加、删除、修改和查询等操作,确保数据的完整性、一致性和安全性。
-
查询数据:数据库能够通过各种查询语言和工具查询存储的数据,并且能够快速检索和返回满足用户需求的数据。
-
维护数据:数据库能够对存储的数据进行备份、恢复、优化和调整等维护工作,确保数据库的可靠性和高效性。
-
分析数据:数据库能够对存储的数据进行分析,例如应用聚合函数、统计分析、数据挖掘等技术,发现数据中隐藏的模式、趋势和异常。
3.1nf、2nf、3nf的定义和满足条件
1NF(第一范式):数据表中的每个字段都必须是原子性的,即不能再分解成更小的数据。
2NF(第二范式):数据表必须满足1NF,并且非主键列必须完全依赖于主键,而不是依赖于主键的一部分。
3NF(第三范式):数据表必须满足2NF,并且不存在任何非主键列对其他非主键列的传递依赖。也就是说,任何非主键列必须直接依赖于主键,而不能通过其他非主键列间接依赖于主键。
需要满足的条件:
- 第一范式(1NF)
- 非主键列完全依赖主键(2NF)
- 不存在非主键列对其他非主键列的传递依赖(3NF)
4.db,dbs,dbms指的是什么
这些缩写通常与数据库相关:
- DB 代表“Database”,意为“数据库”。
- DBS 代表“Database System”,意为“数据库系统”,通常指一个完整的数据库软件系统。
- DBMS 代表“Database Management System”,意为“数据库管理系统”,是一种用于管理和操作数据库的软件系统。
5. sql常用的聚集函数有哪些
SQL中常用的聚集函数有以下几种:
- COUNT:用于计算指定列或行的数量 SUM:用于计算指定列的总和。
- AVG:用于计算指定列的平均值。
- MAX:用于找到指定列的最大值。
- MIN:用于找到指定列的最小值。
- GROUP_CONCAT:用于将指定列的值连接成一个字符串,并可选择添加分隔符。
- STDEV:用于计算指定列的标准差。
- VAR_POP:用于计算指定_SAMP:用于计算指定列的样本方差。
- STDDEV_POP:用于计算指定列的总体标准差。
- STDDEV_SAMP:用于计算指定列的样本标准差。
这些聚集函数可以应用在SELECT语句的SELECT子句中,用于对查询结果进行汇总和统计计算。
6.sql的通配符使用规则
SQL中的通配符是用来模糊匹配数据的特殊字符。以下是SQL中通配符的使用规则:
- 百分号(%):匹配任意字符(包括空格)。例如,"ab%“可以匹配"abc”、"abcd"等。
- 下划线(_)“可以匹配"abc”、"adc"等。
- 方括号([]):匹配括号内的任意一个字符。例如,"[abc]“可以匹配"a”、“b”、"c"中的任意一个字符。
需要注意的是,在使用通配符时,需要将其放在面,并且大小写敏感。例如,如果想要查找以"abc"开头的字符串,可以使用"SELECT * FROM table_name WHERE column_name LIKE ‘abc%’"语句。
7.关系数据库的三级模式是什么
关系数据库的三级模式指的是:外模式(External Schema)、概念模式(Conceptual Schema)和内模式(Internal Schema)。其中:
-
外模式:是用户能够看到和使用的局部数据的逻辑结构描述。每个外模式可能仅涉及到概念模式的一部分,并定义了与用户相关的数据视图。
-
概念模式:是数据库全局逻辑结构描述,描述所有用户所见到的数据的总体逻辑结构。它将数据抽象为一个独立于具体实现的逻辑结构。
-
内模式:是物理存储结构的描述,即如何在计算机上存储数据。它定义了如何将数据表示为二进制形式,包括数据的磁盘块分布、索引方式以及存储的数据格式等。
8.数据库的主要特点有哪些
数据库的主要特点包括:
- 数据共享:多个用户可以访问数据库中的数据,实现数据共享和协作。
- 数据独立性:数据库设计和物理存储分离,应用程序与底层数据存储细节解耦,增加了系统的灵活性和可维护性。
- 数据集成性:数据库可以整合来自格式不同的数据,提供统一的访问接口。
- 数据安全性:数据库提供了访问控制和数据加密等安全措施,确保数据的保密性和完整性。
- 数据一致性:数据库采用事务处理机制,保证多次操作之间的一致性和完整性。
- 数据可恢复性:数据库具备故障恢复和数据备份等功能,保证在发生不可预知情况下数据的安全。
9.数据库系统的主要组成部分
数据库系统的主要组成部分包括以下几个方面:
- 数据库:保存数据的地方,可以是关系型数据库、文档数据库等。
- 数据库管理系统(DBMS):负责管理数据库的软件,提供数据存储、检索、修改、删除等功能。
- 数据库应用程序:通过调用DBMS提供的接口来实现对数据库的操作,例如电子商务网站、人力资源管理系统等。
- 数据库管理员:负责管理数据库的安全性、备份及恢复,以及优化数据库性能等问题。
- 数据库用户:使用数据库应用程序进行数据操作的人员,按照权限访问数据库中的数据。
总的来说,数据库系统的主要组成部分包括了存储数据的容器、管理数据的软件、应用程序以及相关的人员。
10.什么是主码,外码
在数据库中,主码和外码是用来建立表与表之间关系的概念。
主码(Primary Key)是一种唯一标识数据库表中每条记录的字段或集合,也就是说,每个记录都有一个唯一的主码。主码可以由单个列或多个列组成,并且必须满足唯一性和非空性。主码用于确保数据表中每一行都能够被唯一地标识和操作,同时也被用作建立表与表之间的关联。
外码(Foreign Key)则是用来建立表与表之间关系的一种字段。它指向另一个表的主键,形成两个表之间的关联。外作用通常是为了维护表与表之间数据的一致性和完整性,保证一些业务规则得以满足。通过定义外码,可以限制插入、更新和删除操作只能在关联表中进行。
11.grant语句的主要功能
Grant语句的主要功能是为数据库用户授予访问数据库对象的权限,例如表、视图和存储过程等。通过Grant语句,数据库管理员可以限制或扩大不同用户对数据库对象的访问权限,从而实现对数据库资源的管理和保护。
12.什么是参照完整性
参照完整性是指数据库表之间的关系被正确地维护和遵循,确保数据在多个表之间正确匹配。常见的实现方式是通过定义外键约束来确保数据多表之间的一致性,确保每个引用其他表的值都存在于相应的参照表中。这有助于防止一些数据连锁反应错误,同时提高了数据的准确性和可靠性。
13.怎么定义外键
在关系型数据库中,可以通过在一个表中定义外键来指定该表与另一个表之间的关系。外键是指该表中的一列或多列,其值只能是另一个表中已经存在的一个或多个值。通常情况下,在创建一个表时可以使用 FOREIGN KEY 关键字来定义外键,并指定该外键关联的目标表和目标表中的列。例如,以下是在 MySQL 中定义外键的示例:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
在上面的示例中,orders 表中的 customer_id 列被定义为外键,并且指定了该外键关联的目标表 custom 和目标表中的列 customer_id。这表示,orders 表中的每个 customer_id 值必须存在于 customers 表中的 customer_id 列中,否则将无法进行插入、更新或删除操作。
14.怎么定义唯一,非空,取值范围等完整性约束
-
唯一约束:对于一个表格中的某一列或多列,保证其中每一个值都是唯一的,不会存在重复数据。如在一个用户表格中,使用唯一约束可以确保每一个用户的用户名都是独一无二的。
-
非空约束:对于一个表格中的某一列,要求其值不允许为空,即必须要有一个值。如在一个学生信息表格中,使用非空约束可以确保每个学生都有一个有效的学号。
-
取值范围约束:对于一个表格中的某一列,限制其取值范围必须满足特定条件,例如数值类型必须在一定区间范围内等。如在一个商品表格中,使用取值范围约束可以确保商品的价格只能在一定的价格区间内。
15.什么是数据字典
数据字典是一个记录数据库或信息系统中各种数据元素(如表、列、字段等)定义和描述的文档,它通常包括数据元素的名称、数据类型、长度、格式、取值范围、约束条件、含义等信息。数据字典可以被用于帮助开发人员更好地理解数据结构和流程,也可以被用于支持数据管理、数据质量控制、数据安全等方面的工作。
sql代码
1.定义表
以下是一个简单的SQL代码示例,用于定义一个名为"Employees"的表,其中包含有关雇员的基本信息。
CREATE TABLE Employees (
Id INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Title VARCHAR(50),
HireDate DATE,
Salary DECIMAL(10,2)
);
这将创建一个具有6个列的表,分别是Id、FirstName、LastName、Title、HireDate和Salary。其中,Id列被定义为主键,意味着每个行都必须具有唯一的值。其他列的数据类型分别为VARCHAR、DATE和DECIMAL。
2.按条件删除数据,按条件修改数据,插入数据
删除数据:
DELETE FROM table_name WHERE condition;
修改数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
其中,table_name
为表名,condition
为筛选条件,column1
, column2
, ...
为列名,value1
, value2
, ...
为对应的值。注意在使用时需要替换相应的字段名和值。
3.多表连接查询,条件查询,指定查询结果,排序,查询经过计算的值,求和,求平均值
多表连接查询:
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.table1_id;
条件查询:
SELECT *
FROM table
WHERE column = value;
指定查询结果:
SELECT column1, column2
FROM table;
排序:
SELECT *
FROM table
ORDER BY column DESC;
查询经过计算的值:
SELECT column1 + column2 AS new_column
FROM table;
求和:
SELECT SUM(column)
FROM table;
求平均值:
SELECT AVG(column)
FROM table;
4.创建视图
要创建视图,可以使用以下SQL代码:
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中view_name是你想要给这个视图命名的名称,column1、column2等是你想要从table_name表中选择的列的名称,而condition是可选的条件约束,它将限制返回的行数。
举个例子,如果你想要从一个名为customers的表中选择所有姓氏为Smith的顾客的信息并将其存储在一个名为smith_customers的视图中,可以使用以下代码:
CREATE VIEW smith_customers AS
SELECT *
FROM customers
WHERE last_name = 'Smith';
通过这种方式,你现在可以像对待任何其他表一样来查询和操作这个名为smith_customers的视图。
5.创建触发器
下面是创建触发器的 SQL 代码示例:
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的 SQL 语句
END;
其中,trigger_name
为触发器名称,table_name
为要监视的表名。BEFORE INSERT
表示触发器将在插入数据之前执行,可以在这个位置使用 AFTER
关键字改变执行时机。FOR EACH ROW
表示对于每一行数据都会执行触发器。
注意,触发器可以有多种类型:BEFORE INSERT
、AFTER INSERT
、BEFORE UPDATE
、AFTER UPDATE
、BEFORE DELETE
和 AFTER DELETE
。不同类型的触发器具有不同的功能和执行时机。同时,在 BEGIN
和 END
之间编写实际要执行的 SQL 语句。
6.创建存储过程
以下是一个创建存储过程的基本SQL代码:
CREATE PROCEDURE procedure_name
@parameter1 datatype,
@parameter2 datatype
AS
BEGIN
/* 存储过程主体 */
END
其中,“procedure_name”是你想要命名的存储过程的名称。“@parameter1”和“@parameter2”是你希望存储过程使用的输入参数的名称和数据类型。在存储过程主体中,你可以编写一系列SQL语句来执行所需的操作。