确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。
5、如果创建一个数据库其SQL语句是什么? 参考答案:
CREATE DATABASE 数据库名称
6、存储过程的含义是什么?创建存储过程的SQL语句是什么? 参考答案:
存储过程(Stored Procedure)是一组预先编译好的,以一种可执行的形式永久地存储在数据中的SQL代码,在master数据库中存储了一些SQL Server事先定义好的系统存储过程,通常以sp_xxxx做为存储过程的名字。当用户创建数据库时,也会自动生成一些事先定义好的存储过程,通常以dt_xxxx做为名字。
创建存储过程的SQL语句是: (1)语句格式:
CREATE PROC[EDURE] <存储过程名> AS
创建一个存储过程,
事务(Transaction)是并发控制的基本单位,它反映了现实世界中需要以一个完整的单位提交的一项工作。SQL Server通过事务机制,将逻辑相关的一组操作捆绑在一起,以便服务器保持数据的完整性。它是SQL复杂程序设计必不可少的内容。
事务需要用户根据实际业务规则定义,有一定的难度,但其原理比较简单。举例说,如果我们正在使用UPDATE语句同时对学生表、成绩表中的学号”20030001”改为”20040001”。这个任务需要两条UPDATE语句组成,即:
UPDATE 学生表 SET 学号=?20040001? WHERE 学号=?20030001? UPDATE 成绩表 SET 学号=?20040001? WHERE 学号=?20030001?
如果在执行完第一个语句后,计算机突然断电,而第二条语句还没来得急执行,数据出现了不一致怎么办?这时候就需要用到SQL的事务控制功能了。
如果使用了SQL Server的事务控制机制,以上两个问题均可获得很了的解决。在使用事务的情况下,SQL Server可以保证,要么所有的记录要么全部处理,要么一行也不处理。如果修改了全部记录的一半时服务器出错了,SQL Server会返回到以前未执行UPDATE操作前的位置,清除它已经修改过的数据,这就是事务处理的作用。
8、SQL Server有哪些数据类型,它们的主要用途是什么? 参考答案:
SQL Server提供了数值型、字符型、日期型、二进制型、位型、双字节型等6大类数据类型。 数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。
9、假设某教学管理数据库有以下三张表,请写出下列问题的SQL语句: 学生(学号,姓名,年龄,性别) 课程(课程号,课程名,任课教师) 成绩(学号,课程号,成绩)
(1)如何在SQL Server上创建这三张表; 参考答案: 学生表:
create table 学生表 ( 学号 char (8) primary Key, 姓名 char(8), 年龄 int, 性别 bit) 课程表:
create table 课程表 ( 课程号 char (7) primary Key, 课程名 char(20), 任课教师 char (8)) 成绩表:
create table 成绩表 ( 学号 char (8), 课程号 char (7), 成绩 Numeric (4,2))
(2)查询刘峰教师所授课程号,课程名; 参考答案:
Select课程号, 课程名 from课程表 where任课教师=? 刘峰? (3)查询年龄大于20岁的所有男同学的学号、姓名; 参考答案:
Select 学号, 姓名 from 学生表 where 性别=1 and 年龄>20 (4)查询至少选修了两门课程(含两门)的学生学号; 参考答案:
select 学号 from 成绩 group by 学号 having count(学号)>=2
(5)查询王文芳同学选修的所有课程的课程号; 参考答案:
Select 课程号 from 成绩表, 学生表
Where学生表.姓名=? 王文芳? and 学生表.学号=成绩表.学号 (6)查询王文芳同学不学的课程的课程号; 参考答案:
select 课程号 from 成绩表
where 课程号 not in (select 课程号 from 学生表,成绩表 where 学生表.姓名='王文芳' and 学生表.学号=成绩表.学号) (7)查询所有上刘峰老师课程的学生学号; 参考答案:
Select 学号 from 成绩表,课程表,学生表
Where 课程表.任课教师='刘世峰' and 课程表.课程号=成绩表.课程号 and 课程表.学号=成绩表.学号
(8)查询所有选修“数据库原理”的学生的学号; 参考答案:
Select 学号 from 成绩表,课程表
where 课程表.课程名='数据库技术' and 课程表.课程号=成绩表.课程号
(9)向学生表中插入一条记录(?2003001?,?吴红?,21,?女?);(1表示女,0表示男) 参考答案:
insert into 学生表 values ('2003001','吴红','21',1) (10)删除三张表中所有学号为20020001的学生信息; 参考答案:
Delete from学生表 where 学号=? >20020001?
Delete from学生表 where 学号=? 20020001? (11)把学号为20030002的学生的年龄改为22岁; 参考答案:
Update 学生表 set 年龄=?22? where学号=?20030002?
第三章 思考与练习题 一、选择题
1.设一个关系为R,如果它的每个属性都是不可再分的,则称这个关系是符合( A )。 A、第一范式 B、第二范式 C、第三范式 D、BNC范式
2.在第一个关系中出现,在第二个关系中不出现的记录组成的关系称为两个关系的( C )。 A、交 B、并 C、差 D、笛卡儿积 二、简答题
1.设关系模式R有N个属性,在模式R上可能成立的函数依赖有多少个? 参考答案:
函数依赖有N×(N-1)个
2.设有关系模式R(职工号,职工名,项目号,项目名,工资),假设一个职工可参加多个项目,在每个项目中各领一份工资。那么请回答以下问题:
(1)请写出这个关系模式的函数依赖和主关键字;
函数依赖包括:职工号→职工名,项目号→项目名,(职工号,项目号)→工资 主键为(职工号,项目号)
(2)这个关系符合第几范式,为什么?
这个关系符合第一范式,因为它的每个属性都不可再分。 (3)请举例说明,这个关系存在哪些问题;
这个关系没有达到第二范式,可能出现数据冗余和操作异常。
例如,某个职工参与了多个项目的工作,他的职工号、职工名会重复多次存储。同样,如果一个项目有多名职工参加,项目号和项目名也会重复我次存储。另外,如果现在增加了一个新的项目,但暂时还没有安排职工参加,那么由于主键是(职工号,项目号),这个项目的信息可能无法插入。
(4)请把这个关系模式分解成3NF,并说明理由。 修改后的各个关系如下: 职工关系=(职工号,职工名) 项目关系=(项目号,项目名)
职工选择项目关系=(职工号,项目号,工资)
(注:此处的工资是指职工参加某个项目得到的劳动报酬) 3.关系完整性的主要内容是什么?为什么要保证关系的完整性? 参考答案:
关系完整性就是关系模型中数据的正确性、一致性和有效性。关系完整性又包括实体完整性、参照完整性和用户定义的完整性三个方面。
只有保证了关系的完整性,才能使数据库中的数据正确、一致和有效。 4.SQL Server中进行关系完整性的主要方法是什么,请写出相应的SQL语句。 参考答案:
1)SQL Server通过约束机制来实现数据库完整性保护。主要包括:Primary Key约束、Foreign Key约束、Default约束、Unique约束、Check约束等。
Primary Key约束: 学号 char (8) NOT NULL PRIMARY KEY(学号) Foreign Key约束: 学号 char (8) NOT NULL REFERENCES 学生表(学号) Default约束:
成绩 numeric(9,2) DEFAULT 0.00 Unique约束:
学号 char (8) NOT NULL UNIOQUE(学号) Check约束:
年龄 int CHECK (年龄)17 and 年龄<25)