数据库技术与应用复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用SQL语句创建数据表&数据操作Insert、Update、Delete 1.利用Transact-SQL语句创建表booksales的代码。
USE test01
GO
CREATE TABLE booksales(
book_id nchar(6) NOT NULL,
sellnum int NOT NULL,
selldate datetime NOT NULL
) ON PRIMARY
2.利用insert语句为表booksales添加数据:
INSERT INTO booksales VALUES ('m00011',7,20/12/2008)
3.利用update语句为表booksales更新数据:
UPDATE booksales SET sellnum =11
WHERE book_id ='m00011'
4.利用delete语句删除表booksales的数据:
DELETE FROM booksales
WHERE book_id ='m00011'
Transact-SQL语句基础1 –数据完整性
1.将teaching数据库中score表的studentno列设置为引用表student的外键。
ALTER TABLE Score
ADD CONSTRAINT FK_score_student FOREIGN KEY (studentno)
REFERENCES student(studentno)
2.将teaching数据库中class表的classname创建UNIQUE约束。
ALTER TABLE class
ADD CONSTRAINT UQ_class UNIQUE(classname)
执行如下插入语句,查看提示信息
INSERT INTO class VALUES(‘090602’, ’计算机0902’, ’计算机学院’, ’马文斐’) 3. 为teaching数据库中student表的birthday列创建CHECK约束,规定学生的年龄在17-25岁之间。
ALTER TABLE student
ADD CONSTRAINT CK_birthday
CHECK(YEAR(GETDATE())-YEAR(birthday)) BETWEEN 17 AND 25 执行如下插入语句,查看提示信息
INSERT INTO student(studentno, sname, sex, birthday, classno)
VALUES (‘0922221328’, ’张源’, ’男’, ’1983-04-05’, ’090501’)
提示:表达式YEAR(GETDATE())-YEAR(birthday)
数据检索1
1)SELECT … FROM …
2)条件WHERE
3)生成新表INTO
4)比较运算符(数值类型、字符串、日期时间,YEAR())
5)模糊查询LIKE
6)逻辑运算符AND OR NOT
7)检索一定范围的值BETWEEN … AND …
8)利用列表值检索IN
9)改变列名AS
10)排序ORDER BY
11)消除重复行DISTINCT
12)输出前n行TOP n TOP n PERCENT
13)分组GROUP BY 筛选HAVING
14)聚合函数
15)附加行汇总值COMPUTE
16)多表连接INNER JOIN
17)使用子查询
1. 查询course表中所有的记录。
SELECT * FROM course
2. 查询student表中女生的人数。
SELECT * FROM student
WHERE sex='女'
3.查询teacher表中每一位教授的教师号、姓名和专业名称。
SELECT teacherno, tname, major FROM teacher
WHERE prof='教授'
4.利用现有的表生成新表,新表中包括学号、课程号和总评成绩。其中:总评
成绩=final*0.8+usually*0.2
SELECT student.studentno, sname, courseno, final*0.8+usually*0.2 AS 总评成绩INTO zongping
FROM student,score
WHERE student.studentno = score.studentno
GO
SELECT * FROM zongping
5.查询student表中所有年龄大于20岁的男生的姓名和年龄。
SELECT sname, Year(GetDate())-Year(birthday) AS age
FROM student
WHERE Year(GetDate())-Year(birthday)>20
GO
6.查询计算机学院教师的专业名称。
SELECT major AS 专业名称
FROM teacher
WHERE department='计算机学院'
GO
7.查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址。
SELECT studentno,sname,Email
FROM student
WHERE Email Like '%%'
GO
8.查询score表中选修’c05109’或’c05103’课程,并且课程期末成绩在90~100分
之间的学号和期末成绩。
SELECT * FROM score
WHERE ((courseno in('c05109','c05103')) and (final between 90 and 100))
9.查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,
同一班级中的学生按入学成绩point降序排列。
SELECT * FROM student
ORDER BY classno ASC, point DESC
10.查询选修’c05109’课程,并且期末成绩在前5名的学生学号、课程号和期末成
绩。(提示:TOP 5)
SELECT TOP 5 studentno,courseno,final
FROM score
WHERE courseno='c05109'
ORDER BY final DESC