SQL语言概述
- (1)DDL语句引导词 Create Alter Drop
(2)DML语句引导词:Insert, Delete, Update, Select
(3)DCL语句引导词:Grant(授权), Revoke(收回授权) - 交互式SQL→嵌入式SQL→动态SQL
利用SQL建立数据库
- 学生选课数据库
- 建立数据库
(1)定义数据库和表
1)create database 数据库名;
create database SCT;
2)create table 表名(列名 数据类型 [Primary key|Unique]【Not null】[,列名,数据类型…】
primary key:主键,每个表只有一个
Unique:候选键
not null:非空约束
create table student(S# char[8] not null,Sname char(10) , Ssex char(2), Sage integer, D# char(2), Sclass char(6));
create table course(C# char[3], Cname char(12), Chours integer, Credit float(1), T# char(3));
(2)向表中追加元素
1)追加元组Insert
insert into 表名【(列名【,列名】…】
values (值【,值】,…)
insert into student
values (‘9803030101’,‘张三’,‘男’,20,‘03’,‘980303’)
*insert into course
values(‘001’,‘数据库’,40,6,‘001’)
insert into course(Cname, C#,Credit,Chours,T#)
values(‘数据库’,‘001’,6,40,‘001’)*
利用SQL语言进行查询
- 单表查询 Select-From-Where
Select 列名
From 表名
【Where 检索条件】;
检索学生标中的所有信息:
Select *
From Student;
检索学生表中所有学生 的姓名&年龄:
Select Sname,Sage
From Student;
检索学生表中年龄小于19周岁的学生的年龄及姓名:
Select Sage, Sname
From Student
Where Sage<19;
- 检索条件的书写:与选择运算con条件写法一样,只是用and or not表示
检索教师表中工资少于1500或大于2000且是03系的教师姓名:
Select Tname
From Teacher
Where (Salary<1500 or Salary>2000) and D#=‘03’;
求或者学过001课程,或者学过002课程的学生学号
Select S#
From SC
Where c#=‘001’ or c#=‘002’;
- 结果唯一性问题
选课表中检索成绩大于80分的所有学号
Select S#
From SC
Where Score>80
//有重复元组出现
Select DISTINCT S#:防止重复元素,结果唯一性
- Select-From-Where 结果排序
Select
From
Where
order by 列名 [asc|desc]
默认为升序排列
按学号由小到大的顺序显示学生的学号和姓名:
Select S#, Sname
From Student
order by S# asc;
检索002号课大于80分的同学学号并且按成绩从高到低显示: