利用SQL语言建立数据库
一.学生选课数据库
学生选课数据库就是5个表集合成的
学生:学号,姓名,性别,年龄,系别,班级
Student(S# char(8),Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6))
院系:系别,系名,系主任
Dept(D# char(2),Dname char(10),Dean char(10))
课程:课程,课号,教师编号,学时,学分
Course(C# char(3),Cname char(12),Chours integer,Credit float(1),T# char(3))
教师:教师编号,教师姓名,所属院系,工资
Teacher(T# char(3),Tname char(10),D# char(2),Salary float(2))
选课:学号,课号,成绩
SC(S# char(8),C# char(3),Score float(1))
二.建立数据库的步骤
1.使用DDL语言定义数据库和表(Table)
(1)创建数据库——Create DateBase
(2)定义关系模式——Create Table
(3)定义完整性约束
(4)定义外模式和 E-C映像
(5)定义物理存储参数
(6)上述各种定义的撤销与修正
DDL通常由DBA来使用,也有经DBA授权后由应用程序员来使用
2.Create DateBase
(1)对于数据库的理解
数据库是若干具有相互关联关系的 Table/Relation 的集合
数据库可以看做是一个集中存放若干 Table 的大型文件
(2)Create DateBase的简单语法格式
create database 数据库名;
Example:create database SCT;
(3)Create Table的简单语法格式
Create table 表名(列名 数据类型 [Primary key | Unique] [Not null] [,列名 数据类型 [Not null] , ...);
注:【】中的内容可以省略;“ | ”表示二选一;定义一个Table至少要有一列
1)Primary key:主键约束,每个表只能创建一个主键约束
2)Unique:唯一性约束,可以有多个唯一性约束(候选键)
3)Not null:非空约束,若选择了它,则该列不允许出现空值
4)数据类型
char(n):固定长度字符串
varchar(n):可变长度字符串
int:有些地方也写作integer
numeric(p,q):固定精度数字,小数点左边 p 位,右边 q 位
real:浮点数,小数点后保留 n 位,也可写作 float
date:日期
time:时间
(4)创建数据库举例
定义学生表Student:Create Table Student ( S# char(8) not null,Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6));
定义课程表Course:Create Table Course( C# char(3) ,Cname char(12),Chours integer,Credit float(1),T# char(3));
3.使用DML语言向表中追加元组
(1)DML:Date Manipulation Language
(2)向 table 中追加新的元组:Insert
(3)修改 Table 中某些元组中的某些属性值:Update
(4)删除 Table 中的某些元组:Delete
(5)对 Table 中的数据进行各种条件的检索:Select
4.向表中追加元组
(1)insert into 的简单语法形式
insert into 表名 [ ( 列名 ) [,列名 ] ...]
values ( 值 [,值 ],... );
(2)对 insert into 语句的理解
1)values 后面值的排列,须与 into 子句后面的列名排列一致
2)若表名后的所有列名省略,则 values 后的值的排列,须与该表存储中的列名排列一致
(3)举例
1)追加学生表中的元组(两种格式)
Insert into Student
Values ( '98030101', '张三', '男', 20, '03', '980301' );
Insert into Student ( S#, Sname, Ssex, Sage, D#, Sclass )
Values ( '98030102', '李四', '女', 20, '03', '980301' );
2)追加课程表中的元组
所有列名省略时,值须与定义或存储的列名顺序一致
Insert into Course
Values ( '001', '数据库', 40, 6, '001' );
列名未省略时,值须与 Insert into 语句中的列名顺序一致
Insert into Course ( Cname, C#, Credit, Chours, T# )
Values ( '数据库', '001', 6, 40, '001' )