sql实例教程+课件-第4章-表和视图.ppt
《sql实例教程+课件-第4章-表和视图.ppt》由会员分享,可在线阅读,更多相关《sql实例教程+课件-第4章-表和视图.ppt(122页珍藏版)》请在三一办公上搜索。
1、第4章 表和视图,4.1 表的创建和操作4.2 数据完整性和约束条件4.3 修改表结构4.4 分区表简介4.5 视图创建和操作4.6 阶段训练4.7 练 习,第4章 表和视图4.1 表的创建和操作,4.1 表的创建和操作,表由记录(行row)和字段(列column)构成,是数据库中存储数据的结构。要进行数据的存储和管理,首先要在数据库中创建表,即表的字段(列)结构。有了正确的结构,就可以用数据操作命令,插入、删除表中记录或对记录进行修改。比如,要进行图书管理,就需要创建图书和出版社等表,这里给出用于示范和训练的图书和出版社表的结构和内容,如表4-1、表4-2所示。,4.1 表的创建和操作表由记
2、录(行row)和字段(列co,表4-1 图书表,表4-1 图书表,表4-2 出版社表,表4-2 出版社表,4.1.1 表的创建1创建表的语法表的创建需要CREATE TABLE 系统权限,表的基本创建语法如下:CREATE TABLE 表名(列名 数据类型(宽度)DEFAULT 表达式COLUMN CONSTRAINT,.TABLE CONSTRAINTTABLE_PARTITION_CLAUSE);,4.1.1 表的创建,由此可见,创建表最主要的是要说明表名、列名、列的数据类型和宽度,多列之间用“,”分隔。可以是用中文或英文作为表名和列名。表名最大长度为30个字符。在同一个用户下,表不能重名
3、,但不同用户表的名称可以相重。另外,表的名称不能使用Oracle的保留字。在一张表中最多可以包含2000列。该语法中的其他部分根据需要添加,作用如下:DEFAULT 表达式:用来定义列的默认值。COLUMN CONSTRAINT:用来定义列级的约束条件。TABLE CONSTRAINT:用来定义表级的约束条件。TABLE_PARTITION_CLAUSE:定义表的分区子句。,由此可见,创建表最主要的是要说明表名、列名、列的数据类型,【训练1】 创建图书和出版社表。步骤1:创建出版社表,输入并执行以下命令:CREATE TABLE 出版社(编号 VARCHAR2(2),出版社名称 VARCHAR
4、2(30),地址 VARCHAR2(30),联系电话 VARCHAR2(20);执行结果:表已创建。,【训练1】 创建图书和出版社表。,步骤2:创建图书表,输入并执行以下命令:CREATE TABLE 图书(图书编号 VARCHAR2(5),图书名称 VARCHAR2(30),出版社编号 VARCHAR2(2),作者 VARCHAR2(10),出版日期 DATE,数量 NUMBER(3),单价 NUMBER(7,2);执行结果:表已创建。,步骤2:创建图书表,输入并执行以下命令:,步骤3:使用DESCRIBE显示图书表的结构,输入并执行以下命令:DESCRIBE 图书执行结果为:名称 是否为空
5、? 类型 - - - 图书编号 VARCHAR2(5) 图书名称 VARCHAR2(30) 出版社编号 VARCHAR2(2) 作者 VARCHAR2(10) 出版日期 DATE 数量 NUMBER(3) 单价 NUMBER(7,2),步骤3:使用DESCRIBE显示图书表的结构,输入并执行,说明:在以上训练中,列名和数据类型之间用空格分隔,数据类型后的括号中为宽度(日期类型除外)。对于有小数的数字型,前一个参数为总宽度,后一个参数为小数位。用逗号分隔各列定义,但最后一列定义后不要加逗号。2通过子查询创建表如果要创建一个同已有的表结构相同或部分相同的表,可以采用以下的语法:CREATE TAB
6、LE 表名(列名.) AS SQL查询语句;该语法既可以复制表的结构,也可以复制表的内容,并可以为新表命名新的列名。新的列名在表名后的括号中给出,如果省略将采用原来表的列名。复制的内容由查询语句的WHERE条件决定。,说明:在以上训练中,列名和数据类型之间用空格分隔,数,【训练2】 通过子查询创建新的图书表。步骤1:完全复制图书表到“图书1”,输入并执行以下命令:CREATE TABLE 图书1 AS SELECT *FROM 图书;执行结果:表已创建。步骤2:创建新的图书表“图书2”,只包含书名和单价,输入并执行以下命令:CREATE TABLE 图书2(书名,单价) AS SELECT 图
7、书名称,单价 FROM 图书;执行结果:表已创建。,【训练2】 通过子查询创建新的图书表。,步骤3:创建新的图书表“图书3”,只包含书名和单价,不复制内容,输入并执行以下命令:CREATE TABLE 图书3(书名,单价) AS SELECT 图书名称,单价 FROM 图书 WHERE 1=2;执行结果:表已创建。说明:“图书1”表的内容和结构同“图书”表完全一致,相当于表的复制。,步骤3:创建新的图书表“图书3”,只包含书名和单价,不复,“图书2”表只包含“图书”表的两列 “图书名称”和“单价”,并且对字段重新进行了命名,“图书2”表的“书名”对应“图书”表的“图书名称”,“图书2”表的“单
8、价”对应“图书”表的“单价”。“图书3”表同“图书2”表的结构一样,但表的内容为空。因为WHERE条件始终为假,没有满足条件的记录,所以没有复制表的内容。3设置列的默认值可以在创建表的同时指定列的默认值,这样在插入数据时,如果不插入相应的列,则该列取默认值,默认值由DEFAULT部分说明。,“图书2”表只包含“图书”表的两列 “图书名称”和,【训练3】 创建表时设置默认值。步骤1:创建表时,设置表的默认值。CREATE TABLE 图书4(图书编号 VARCHAR2(5) DEFAULT NULL,图书名称 VARCHAR2(30) DEFAULT 未知,出版社编号 VARCHAR2(2) D
9、EFAULT NULL,出版日期 DATE DEFAULT 01-1月-1900,作者 VARCHAR2(10) DEFAULT NULL,数量 NUMBER(3) DEFAULT 0,单价 NUMBER(7,2) DEFAULT NULL,借出数量 NUMBER(3) DEFAULT 0);执行结果:表已创建。,【训练3】 创建表时设置默认值。,步骤2:插入数据。INSERT INTO 图书4(图书编号) VALUES(A0001);执行结果:已创建 1 行。步骤2:查询插入结果。SELECT * FROM 图书4;,步骤2:插入数据。,执行结果:图书 图书名称 出版日期 作者 数量 单价
10、借出数量 - - - - - -A0001 未知 01-1月-00 0 0 0 说明:本训练中,只插入图书编号,其他部分取的是默认值。图书名称默认为“未知”,出版日期默认为1900年1月1日,数量默认为0,出版社编号、作者和单价的默认值为NULL。,执行结果:,【练习1】创建图书出借信息表,设置适当的默认值,并插入数据。结构如下:名称 是否为空? 类型 - - - 图书编号 VARCHAR2(10) 借书人 VARCHAR2(10) 借书日期 DATE 归还日期 DATE,【练习1】创建图书出借信息表,设置适当的默认值,并插入数,4删除已创建的表删除表的语法如下:DROP TABLE 表名CA
11、SCADE CONSTRAINTS;表的删除者必须是表的创建者或具有DROP ANY TABLE权限。CASCADE CONSTRAINTS表示当要删除的表被其他表参照时,删除参照此表的约束条件。有关内容请参考下一节。,4删除已创建的表,【训练4】 删除“图书1”表。DROP TABLE 图书1; 执行结果:表已丢弃。【练习2】删除“图书2”、“图书3”和“图书4”表。,【训练4】 删除“图书1”表。,4.1.2 表的操作1表的重命名语法如下:RENAME 旧表名 TO 新表名;只有表的拥有者,才能修改表名。【训练1】 修改“图书”表为“图书5”表:RENAME 图书 TO 图书5;执行结果:
12、表已重命名。,4.1.2 表的操作,2清空表清空表的语法为:TRUNCATE TABLE 表名;清空表可删除表的全部数据并释放占用的存储空间。有关训练请参照DELETE语句部分,注意两者的区别。3添加注释(1) 为表添加注释的语法为:COMMENT ON TABLE 表名 IS .;该语法为表添加注释字符串。如IS后的字符串为空,则清除表注释。,2清空表,【训练2】 为emp表添加注释:“公司雇员列表”。COMMENT ON TABLE emp IS 公司雇员列表;执行结果:注释已创建。(2) 为列添加注释的语法为:COMMENT ON COLUMN 表名.列名 IS .该语法为列添加注释字符
13、串。如IS后的字符串为空,则清除列注释。,【训练2】 为emp表添加注释:“公司雇员列表”。,【训练3】 为emp表的deptno列添加注释:“部门编号”。COMMENT ON COLUMN emp.deptno IS 部门编号;执行结果:注释已创建。【练习1】清除emp表的注释。4.1.3 查看表使用以下语法可查看表的结构:DESCRIBE 表名;DESCRIBE可以简写为DESC。可以通过对数据字典USER_OBJECTS的查询,显示当前模式用户的所有表。,【训练3】 为emp表的deptno列添加注释:“部门,【训练1】 显示当前用户的所有表。SELECT object_name FRO
14、M user_objects WHERE object_type=TABLE;执行结果:OBJECT_NAME-BONUSDEPTEMPSALGRADE出版社图书,【训练1】 显示当前用户的所有表。,4.2 数据完整性和约束条件,4.2.1 数据完整性约束 表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。,4.2 数据完整性和约束条件 4.2.1 数据完整性约,完整性包括数据完整性和参照完整性,数据完整性定义表数据的约
15、束条件,参照完整性定义数据之间的约束条件。数据完整性由主键(PRIMARY KEY)、非空(NOT NULL)、惟一(UNIQUE)和检查(CHECK)约束条件定义,参照完整性由外键(FOREIGN KEY)约束条件定义。,完整性包括数据完整性和参照完整性,数,4.2.1 数据完整性约束表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。完整性包括数据完整性和参照完整性,数据完整性定义表数据的约束条件,参照完整性定义数据之
16、间的约束条件。数据完整性由主键(PRIMARY KEY)、非空(NOT NULL)、惟一(UNIQUE)和检查(CHECK)约束条件定义,参照完整性由外键(FOREIGN KEY)约束条件定义。,4.2.1 数据完整性约束,4.2.2 表的五种约束表共有五种约束,它们是主键、非空、惟一、检查和外键。1主键(PRIMARY KEY)主键是表的主要完整性约束条件,主键惟一地标识表的每一行。一般情况下表都要定义主键,而且一个表只能定义一个主键。主键可以包含表的一列或多列,如果包含表的多列,则需要在表级定义。主键包含了主键每一列的非空约束和主键所有列的惟一约束。主键一旦成功定义,系统将自动生成一个B*
17、树惟一索引,用于快速访问主键列。比如图书表中用“图书编号”列作主键,“图书编号”可以惟一地标识图书表的每一行。,4.2.2 表的五种约束,主键约束的语法如下:CONSTRANT 约束名 PRIMARY KEY-列级CONSTRANT 约束名 PRIMARY KEY(列名1,列名2,.)-表级2非空(NOT NULL)非空约束指定某列不能为空,它只能在列级定义。在默认情况下,Oracle允许列的内容为空值。比如“图书名称”列要求必须填写,可以为该列设置非空约束条件。非空约束语法如下:CONSTRANT 约束名 NOT NULL-列级,主键约束的语法如下:,约束分为两级,一个约束条件根据具体情况,
18、可以在列级或表级定义。列级约束:约束表的某一列,出现在表的某列定义之后,约束条件只对该列起作用。表级约束:约束表的一列或多列,如果涉及到多列,则必须在表级定义。表级约束出现在所有列定义之后。,约束分为两级,一个约束条件根据具体情况,可以在列级或表级,4.2.2 表的五种约束表共有五种约束,它们是主键、非空、惟一、检查和外键。1主键(PRIMARY KEY)主键是表的主要完整性约束条件,主键惟一地标识表的每一行。一般情况下表都要定义主键,而且一个表只能定义一个主键。主键可以包含表的一列或多列,如果包含表的多列,则需要在表级定义。主键包含了主键每一列的非空约束和主键所有列的惟一约束。主键一旦成功定
19、义,系统将自动生成一个B*树惟一索引,用于快速访问主键列。比如图书表中用“图书编号”列作主键,“图书编号”可以惟一地标识图书表的每一行。,4.2.2 表的五种约束,主键约束的语法如下:CONSTRANT 约束名 PRIMARY KEY-列级CONSTRANT 约束名 PRIMARY KEY(列名1,列名2,.)-表级,主键约束的语法如下:,2非空(NOT NULL)非空约束指定某列不能为空,它只能在列级定义。在默认情况下,Oracle允许列的内容为空值。比如“图书名称”列要求必须填写,可以为该列设置非空约束条件。非空约束语法如下:CONSTRANT 约束名 NOT NULL-列级3惟一(UNI
20、QUE)惟一约束条件要求表的一列或多列的组合内容必须惟一,即不相重,可以在列级或表级定义。但如果惟一约束包含表的多列,则必须在表级定义。比如出版社表的“联系电话”不应该重复,可以为其定义惟一约束。,2非空(NOT NULL),惟一约束的语法如下:CONSTRANT 约束名 UNIQUE-列级CONSTRANT 约束名 UNIQUE(列名1,列名2,.)-表级,惟一约束的语法如下:,4检查(CHECK)检查约束条件是用来定义表的一列或多列的一个约束条件,使表的每一列的内容必须满足该条件(列的内容为空除外)。在CHECK条件中,可以调用SYSDATE、USER等系统函数。一个列上可以定义多个CHE
21、CK约束条件,一个CHECK约束可以包含一列或多列。如果CHECK约束包含表的多列,则必须在表级定义。比如图书表的“单价”的值必须大于零,就可以设置成CHECK约束条件。,4检查(CHECK),检查约束的语法如下:CONSTRANT 约束名 CHECK(约束条件) -列级,约束条件中只包含本列CONSTRANT 约束名 CHECK(约束条件) -表级,约束条件中包含多列5外键(FOREIGN KEY)指定表的一列或多列的组合作为外键,外键参照指定的主键或惟一键。外键的值可以为NULL,如果不为NULL,就必须是指定主键或惟一键的值之一。外键通常用来约束两个表之间的数据关系,这两个表含有主键或惟
22、一键的称为主表,定义外键的那张表称为子表。如果外键只包含一列,则可以在列级定义;如果包含多列,则必须在表级定义。,检查约束的语法如下:,外键的列的个数、列的数据类型和长度,应该和参照的主键或惟一键一致。比如图书表的“出版社编号”列,可以定义成外键,参照出版社表的“编号”列,但“编号”列必须先定义成为主键或惟一键。如果外键定义成功,则出版社表称为主表,图书表称为子表。在表的创建过程中,应该先创建主表,后创建子表。,外键的列的个数、列的数据类型和长度,应该和参照的主键或惟,外键约束的语法如下:第一种语法,如果子记录存在,则不允许删除主记录:CONSTRANT 约束名 FOREIGN KEY(列名1
23、,列名2,.)REFERENCES 表名(列名1,列名2,.)第二种语法,如果子记录存在,则删除主记录时,级联删除子记录:CONSTRANT 约束名 FOREIGN KEY(列名1,列名2,.)REFERENCES 表名(列名1,列名2,.)on delete cascade,外键约束的语法如下:,第三种语法,如果子记录存在,则删除主记录时,将子记录置成空:CONSTRANT 约束名 FOREIGN KEY(列名1,列名2,.)REFERENCES 表名(列名1,列名2,.)on delete set null其中的表名为要参照的表名。在以上5种约束的语法中,CONSTRANT关键字用来定义约
24、束名,如果省略,则系统自动生成以SYS_开头的惟一约束名。约束名的作用是当发生违反约束条件的操作时,系统会显示违反的约束条件名称,这样用户就可以了解到发生错误的原因。,第三种语法,如果子记录存在,则删除主记录时,将子记,4.2.3 约束条件的创建在表的创建语法中可以定义约束条件:CREATE TABLE 表名(列名 数据类型DEFAULT 表达式COLUMN CONSTRAINT,.TABLE CONSTRAINT);其中,COLUMN CONSTRAINT用来定义列级约束条件;TABLE CONSTRAINT用来定义表级约束条件。,4.2.3 约束条件的创建,【训练1】 创建带有约束条件的出
25、版社表(如果已经存在,先删除):CREATE TABLE 出版社(编号 VARCHAR2(2) CONSTRAINT PK_1 PRIMARY KEY,出版社名称 VARCHAR2(30) NOT NULL ,地址 VARCHAR2(30) DEFAULT 未知,联系电话 VARCHAR2(20);执行结果:表已创建。 说明:出版社表的主键列是“编号”列,主键名为PK_1。“出版社名称”必须填写,地址的默认值为“未知”。,【训练1】 创建带有约束条件的出版社表(如果已经存在,,【训练2】 创建带有约束条件(包括外键)的图书表(如果已经存在,先删除):CREATE TABLE 图书(图书编号 V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 实例教程 课件 视图

链接地址:https://www.31ppt.com/p-1288866.html