表操作
1 对于表的教学管理数据库中的表 STUDENTS select中distinct,可以定义如下:
CREATE TABLE STUDENTS,
(
SNO NUMERIC (6, 0) NOT NULL,
SNAME CHAR (8) NOT NULL,
AGE NUMERIC(3,0),
SEX CHAR(2),
BPLACE CHAR(20),
PRIMARY KEY(SNO)
)
2 对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:
CREATE TABLE ENROLLS
(
SNO NUMERIC(6,0) NOT NULL,
CNO CHAR(4) NOT NULL,
GRADE INT,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO),
FOREIGN KEY(CNO) REFERENCES COURSES(CNO),
CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))
)
例 3 根据表的 STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。
CREATE TABLE GIRL
AS SELECT SNO, SNAME, AGE
FROM STUDENTS
WHERE SEX='女';

4 删除教师表 TEACHER
DROP TABLE TEACHER
5 在教师表中增加住址列。
ALTER TABLE TEACHERS
ADD (ADDR CHAR(50))
6 把 STUDENTS 表中的 BPLACE 列删除,并且把引用 BPLACE 列的所有视图和约束也一起删除。
ALTER TABLE STUDENTS
DROP BPLACE CASCADE
7 补充定义 ENROLLS 表的主关键字。
ALTER TABLE ENROLLS
ADD PRIMARY KEY (SNO,CNO)
视图操作(虚表)
9 建立一个只包括教师号、姓名和年龄的视图 FACULTY ( 在视图定义中不能包含 ORDER BY 子句 )
CREATE VIEW FACULTY
AS SELECT TNO, TNAME, AGE
FROM TEACHERS
10 从学生表、课程表和选课表中产生一个视图 GRADE_TABLE 它包括学生姓名、课程名和成绩。
CREATE VIEW GRADE_TABLE
AS SELECT SNAME,CNAME,GRADE
FROM STUDENTS,COURSES,ENROLLS
WHERE STUDENTS.SNO ENROLLS.SNO AND
COURSES.CNO=ENROLLS.CNO
11 删除视图 GRADE_TABLE
DROP VIEW GRADE_TABLE RESTRICT
索引操作
12 在学生表中按学号建立索引。
CREATE UNIQUE INDEX ST
ON STUDENTS (SNO,ASC)
13 删除按学号所建立的索引。
DROP INDEX ST
数据库模式操作
14 创建一个简易教学数据库的数据库模式 TEACHING_DB ,属主为 ZHANG
CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG
15 删除简易教学数据库模式 TEACHING_DB 。(( 1 )选用 CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除。( 2 )选用 R
ESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)
DROP SCHEMA TEACHING_DB CASCADE
单表操作
16 出 3 个学分的课程号和课程名。
SELECT CNO, CNAME
FROM  COURSES
WHERE   CREDIT 3
17 查询年龄大于 22 岁的学生情况。
SELECT *
FROM STUDENTS
WHERE AGE 22
18 出籍贯为河北的男生的姓名和年龄。
SELECT SNAME, AGE
FROM   STUDENTS
WHERE   BPLACE ' 河北 ' AND SEX ' '
19 出年龄在 20 23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序。 (ASC (升序)或 DESC (降序)声明排序的方式,缺省为升序。 )
SELECT SNO, SNAME, AGE
FROM STUDENTS
WHERE AGE BETWEEN 20 AND 23
ORDER BY AGE
20 出年龄小于 23 岁、籍贯是湖南或湖北的学生的姓名和性别。(条件比较运算符=、< 和逻辑运算符 AND (与),此外还可以使用的运算符有:>(大于)、>=(大于等于)、<=(小于等于)、<>(不等于)、 NOT (非)、 OR (或)等。
谓词 LIKE 只能与字符串联用,常常是 <列名> LIKE pattern” 的格式。特殊字符 “_” “%” 作为通配符。
谓词 IN 表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的 OR (或)的缩写。谓词 NOT IN 表示指定的属性不与后面的集合中的某个值相匹配。
谓词 BETWEEN 包含于 之中 的意思。)
SELECT SNAME, SEX
FROM STUDENTS
WHERE AGE 23 AND BPLACE LIKE' 湖% '
SELECT SNAME, SEX
FROM STUDENTS
WHERE AGE 23 AND BPLACE IN ( ' 湖南 ' ' 湖北 '
22 出学生表中籍贯是空值的学生的姓名和性别。(在 SQL 中不能使用条件:<列名>= NULL 。在 SQL 中只有一个特殊的查询条件允许查询 NULL 值:)
SELECT SNAME, SEX
FROM STUDENTS
WHERE BPLACE IS NULL

多表操作
23 出成绩为 95 分的学生的姓名。(子查询)
SELECT SNAME
FROM   STUDENTS
WHERE   SNO
(SELECT SNO
FROM ENROLLS
WHERE GRADE 95)
24 出成绩在 90 分以上的学生的姓名。
SELECT SNAME
FROM STUDENTS
WHERE SNO IN
(SELECT SNO
FROM ENROLLS
WHERE GRADE 90)
SELECT SNAME
FROM STUDENTS
WHERE SNO ANY
(SELECT SNO
FROM ENROLLS
WHERE GRADE 90)
25 查询全部学生的学生名和所学课程号及成绩。(连接查询)
SELECT SNAME, CNO, GRADE
FROM STUDENTS, ENROLLS
WHERE STUDENTS.SNO ENROLLS.SNO
26 出籍贯为山西或河北,成绩为 90 分以上的学生的姓名、籍贯和成绩。(当构造多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 1 (若有三个表,就有两个连接条件 ) ;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))
SELECT SNAME, BPLACE, GRADE

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。