SQL语句实例学习汇总
表操作
例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下: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 )选用RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)
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小时内删除。
发表评论