欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » 关系数据库基础教程 » 正文

SQL的数据定义

创建时间:2012年05月31日 22:27  阅读次数:(4513)
分享到:
本章讲解以下四部分:
1,SQL模式的创建和撤消
2,基本数据类型
3,基本表的创建、修改和撤消
4,索引的创建和撤消

SQL模式的创建和撤消


SQL模式的创建可用CREATE  SCHEMA语句定义,其基本句法如下:
CREATE  SCHEMA〈模式名〉AUTHORIZATION〈用户名〉

DROP语句的句法如下:
DROP  SCHEMA〈模式名〉[CASCADE│RESTRICT]

其方式有两种:
1,CASCADE (级联式)方式。执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤销。
2,RESTRICT (约束式)方式。执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤销SQL模式,否则,拒绝执行DROP语句。

现在我们已不采用“SQL模式”这个名词,一般都是创建数据库“CREATE DATABASE”和删除数据库“DROP DATABASE”

基本数据类型


SQL提供的主要数据类型(也称为“域类型”)有:
(1)数值型
(2)字符串型
(3) 位串型
(4) 时间型

基本表的创建、修改和撤消


必须先建立数据库后,才可以在库里建立基本表。对基本表结构的操作有创建、修改的撤销三种操作。
基本表的创建
创建基本表,可用“CREATE TABLE”语句实现。
CREATE TABLE 基本表名
(列名 类型,
……
完整性约束,
……)
完整性约束主要有三种子句:主键子句(PRIMARY KEY)、外键子句(FOREIGN KEY)和检查子句(CHECK)。
 
示例:教学数据库中有三个基本表:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)

基本表S(S#,SNAME,AGE,SEX)可用下列语句创建:
CREATE  TABLE  S
(S# CHAR(4)  NOT  NULL,
SNAME  CHAR(8)  NOT  NULL,
AGE  SMALLINT,
SEX  CHAR(1),
PRIMARY  KEY(S#));

基本表C可以用下列语句或直接在SQLSERVER2000的企业管理器中实现。
CREATE  TABLE C
(C#  CHAR(4),
CNAME  CHAR(10)  NOT NULL,
TEACHER  CHAR(8),
PRIMARY  KEY(C#))

基本表SC可以用以下语句创建
CREATE TABLE SC
(S#   CHAR(4),
C#   CHAR(4),
GRADE   SMALLINT,
PRIMARY   KEY(S#,C#),
FOREIGN   KEY(S#) REFERENCES S(S#),
FOREIGN   KEY(C#) REFERENCES C(C#),
CHECK(GRADE BETWEEN 0 AND 100))


基本表结构的修改
增加新的列用“ALTER … ADD …”语句,其句法如下:
ALTER  TABLE  <基本表名 >  ADD  <列名 > <类型 > 

删除原有的列用“ALTER … DROP …”语句,句法如下:
ALTER  TABLE  <基本表名 >  DROP  <列名 >[CASCADE│RESTRICT]
此处CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。

修改原有列的类型、宽度用“ALTER‥‥ MODIFY‥‥” 语句,句法如下:
ALTER TABLE <基本表名 > MODIFY <列名 > <类型 >

例3.2  在基本表S中增加一个地址(ADDRESS)列,可用下列语句:
ALTER TABLE S ADD ADDRESS VARCHAR(30);
应注意,新增加的列不能定义为“NOT NULL”。基本表在增加一 列后,原有元组在新增加的列上的值都被定义为空值(NULL)。

例3.3 在基本表S中删除年龄(AGE)列,并且把引用该列的所有视图和约束也一起删除,可用下列语句:
ALTER  TABLE  S  DROP  AGE  CASCADE;

例3.4 在基本表S中S# 的长度修改为6,可用下列语句:
ALTER  TABLE  S  MODIFY  S#  CHAR(6);

基本表的撤消
撤消语句的句法如下:
DROP  TABLE  <基本表名 >[CASCADE│RESTRICT]
此处的CASCADE、RESTRICT的语义同前面句法中的语义一样。

索引的创建和撤消


索引是建立在表的列上的一种数据库现象,为表中的数据提供逻辑关系,从而提高数据的访问速度。如果不建立索引,则当查询数据时sqlserver会读取每一行每一列的数据才能找出目标行。索引就象目录一样,可用简明的信息指出数据所在位置。但索引的功能仅限于查询的时候起作用。
经验:表中大多数索引是建立在主键上的,索引可以是一个字段,也可以多个字段组成索引

索引的创建
创建索引可用“CREATE INDEX”语句实现。其句法如下:
CREATE [UNIQUE] INDEX  <索引名 > ON  <基本表名 >(列名表) 
对基本表S建立一个索引:
CREATE INDEX INDEX_S ON S(S#)
如果要求列S#的值在基本表S中不重复,那么需在INDEX前加上保留字UNIQUE
CREATE UNIQUE  INDEX INDEX_S ON S(S#)

索引的撤消
当索引不需要时,可以用“DROP  INDEX”语句撤消,其句法如下:
DROP  INDEX  <索引名 >
例:撤销索引INDEX_S
DROP  INDEX  INDEX_S
经验:sqlserver中撤销索引时前面要在索引名前加上表名,oracle不需要带表名。=
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 96+10=? 的结果(结果是:106)
结  果: