SQL语言——数据定义语言

数据定义语言

DDL(Data Definition Language):SQL提供的定义数据库、表、索引等数据库对象的语言

数据库定义
create database 数据库名;  #创建数据库,接下来就可以在其中定义table了
drop databse 数据库名; #撤销数据库

表定义
#创建基本表
create table <表名>
	(<列名><数据类型>[<列级完整性约束条件>]
  [,<列名><数据类型>[<列级完整性约束条件>]]……
  [,<表级完整性约束条件>]);

<表名>:所要定义的基本表的名字
<列名>:组成该表的各个属性
<列级完整性约束条件>:涉及相应属性列的完整性约束条件
<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

#删除基本表
drop table <表名>;

#修改基本表
alter table <表名>
	[ADD<新列名><数据类型>[完整性约束]]
  [DROP<完整性约束名><列名>]
  [MODIFY<列名><数据类型>];

常用的完整性约束

  1. 主码约束:primary key
  2. 唯一性约束:unique(不能取相同值但允许多个空值)
  3. 非空值约束:not null
  4. 参照完整性约束:foreign key <列名> references <表名> (<列名>)
  5. 用户定义完整性约束:check(<约束条件表达式>)
  6. default 缺省值约束:default<缺省值>;

SQL中的数据类型

  • SMALLINT 半字长二进制整数
  • INTERGER/INT 全字长二进制整数
  • DECIMAL 压缩十进制数
  • FLOAT 双字长浮点数
  • CHARTER/CHAR(n) 长度为n的定长字符串
  • VARCHAR(n) 最大长度为n的变长字符串
  • GRAPHIC(n) 长度为n的定长图形字符串
  • VARGRAPHIC(n) 最大长度为n的变长图形字符串
  • DATE 日期型,格式为yyyy-mm-dd
  • TIME 时间型,格式为hh.mm.ss
  • TIMESTAMP 日期加时间

例子
1.建立一个学生表Student,它由学号Sno,姓名Sname,性别Sname,年龄Sage,所在系Sdept五个属性构成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。

create table Student(
	Sno char(5) not  null unique,(not  null unique可以替换为primary key)
  Sname char(20) unique,
  Ssex char(1),
  Sage int,
  Sdept char(15)
);

2.建立一个学生选课表SC,它由学号Sno,课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。

create table SC(
	Sno char(5),
  Cno char(3),
  Grade int,
  primary key(Sno,Cno),
  foreign key (Sno) refernces S(Sno),
  foreign key (Cno) refernces C(Cno)
);

3.向Student表增加入学时间列,其数据类型为日期型

alter table student add Scome date;

4.将年龄的数据类型改为半字长整数

alter table student modify Sage SMALLINT;

5.删除学生姓名必须取唯一值的约束

alter table Student DROP unique(Sname);
索引定义

SQL语言——数据定义语言_第1张图片

#创建索引
create [unique] [cluster] index <索引名> on <表名>(<列名>[<次序>][,<列名>[<次序>]]……);

<次序>:索引值的排列次序,升序:ASC,降序:DESC.缺省值:ASC

#删除索引
drop index <索引名>;

例子
1.为学生-课程数据库中的Student,Course,SC三个表建立索引,其中Student表按照学号升序建立唯一索引,Course表按课程号建唯一索引,SC表按学号升序和课程号降序建立唯一索引。

create unique index Stusno on Student(Sno);
create unique index Coucno on Course(Cno);
create unique index Scno on SC(Sno ASC, Cno DESC);

2.在Student 表中的Sname列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放

create cluster index  Stuname on Student(Sname);

你可能感兴趣的:(数据库系统,sql,oracle,数据库)