数据库技术-国防科学技术大学3#¥-第三章 关系数据语言(2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表名
• 当使用ORACLE 来创建一个表的时候,对表的命 名要遵从几个约束: –首先表的名字不得超过255个字符长 –由于ORACLE 对大小写不敏感,所以在写名字 时可以根据需要采用大写或小写的方式,但是 表的第一个字符必须是字母A-Z ,其余的字符 则还可以有下划线# $ @ –在一个数据库中表的名字不应该有重复 –表的名字不可以是ORACLE 的保留字如 SELECT
SQL> CREATE VIEW DEBTS AS SELECT * FROM B如下 SQL> DROP VIEW view_name
•可以删除一个视图而不影响任何一个 真实的表,这也就是为什么将视图称 为虚表的原因
在视图中修改数据
• 可以在数据库的一个或多个表中使用 视图,也可以在SQL和数据库应用程 序中使用虚表 • 在使用CREATE VIEW SELECT 创 建视图以后,可以用INSERT UPDATE 和DELETE 语句来更新、 插入、删除视图中的数据
DROP TABLE 语句
• DROP TABLE 可以从数据库中删除一个指定的表 以及与之相关联的索引和视图 • DROP TABLE 语句的语法格式如下 DROP TABLE Table_Name CASCADE|RESTRICT;
SQL>DROP TABLE NEW_BILLS; Table dropped.
CREATE DATABASE 语句
• 典型的数据库创建语句如下
CREATE DATABASE database_name
• 许多SQL教材中都没有提到它,而是直接进行 了CREATE TABLE 语句 • 建立数据库时必须要考虑的第一件事情就是权 限级别 • 允许指定数据库的默认大小,它通常受硬盘容 量的限制 • 参考所使用的数据库管理系统的说明书来建立 数据库,因为CREATE DATABASE 语句在 不同的解释器之间的差别是很大的
CREATE TABLE 语句
• 建立表的过程比建立数据库的过程更不 标准,它的基本语法如下 CREATE TABLE table_name ( field1 datatype [ NOT NULL ] field2 datatype [ NOT NULL ] field3 datatype [ NOT NULL ]...)
CREATE TABLE NEW_TABLE(FIELD1, …) AS (SELECT FIELD1, FIELD2, FIELD3 FROM OLD_TABLE <WHERE...>
用一个已经存在的表来建表
SQL> CREATE TABLE NEW_BILLS(NAME, AMOUNT, ACCOUNT_ID) AS (SELECT * FROM BILLS WHERE AMOUNT < 50); Table created. • 上边的语句用BILL 表中AMOUNT 小于50 的记录 创建了一个新表 • 在一些数据库系统中你也可以使用下边的语法 INSERT NEW_TABLE SELECT <field1, field2... | *> from OLD_TABLE <WHERE...>
–INSERT 语句 –UPDATE语句 –DELETE 语句
INSERT 语句
• 该语句每次向表中输入一条记录 • 该语句的语法形式如下
INSERT INTO table_name (col1, col2...) VALUES (value1, value2...)
• 该语句的作用是向表中加以一个新的记录, 其数值为指定的数值
SQL> CREATE TABLE TABLENAME 2 (COLUMN1 CHAR NOT NULL, 3 COLUMN2 NUMBER, 4 COLUMN3 DATE) 5 TABLESPACE TABLESPACE NAME 6 STORAGE 7 INITIAL SIZE, 8 NEXT SIZE, 9 MINEXTENTS value, 10 MAXEXTENTS value, 11 PCTINCREASE value); Table created.
关系数据语言SQL之二
数据描述语言DDL
• 我们将学会以下内容 –建立一个数据库以及在其中建表 –表的建立修改与删除 –向数据库中添加数据 –修改数据库中的数据 –删除数据库 –建立关键字段
CREATE DATABASE 语句
• 在任何数据库项目中,管理数据的 第一步工作就是建立数据库 • 根据具体要求和数据库管理系统的 情况,这个工作可以很简单也可以 很复杂 • 许多现代的数据库系统都提供了图 形工具,可以通过鼠标按键来完成 数据库的建立工作
请注意系统没有给出提示,该命令不会问Are you sure? Y/N ,但是删除操作已经执行,表 已经永远地删除
DROP DATABASE 语句
• 一些数据库管理系统也提供了删除数据库DROP DATABASE 的语句,它的使用方法与DROP TABLE 相同,语法如下
DROP DATABASE database_name
使用索引的技巧
• 索引会占用数据库的空间 • 大多数数据库系统不允许对视图创建索 引 • 不要对经常需要更新或修改的字段创建 索引,更新索引的开销 • 不要将索引与表存储在同一个驱动器上, 分开存储会去掉访问的冲突,从而使结 果返回得更快
数据操作语言DML
• 今天我们将讨论三个关于如何对 数据库中的表中的数据进行操作 的三条语句这三条语句是
ALTER TABLE 语句
SQL> ALTER TABLE NEW_BILLS ADD COMMENTS CHAR(80); SQL> ALTER TABLE BILLS
MODIFY NAME CHAR(40);
SQL> ALTER TABLE Goods
DROP Goods_Description CASCADE;
索引
• 当查询没有使用索引的表时,查询通常 是全表搜索后才会得到结果,全表搜索 会让数据库服务程序遍历过表中的所有 记录,然后返回给定条件的记录,这种 方法就好比从图书馆的第一号书架的第 一本书找起,直到找到了所需要的书一 样 • 索引可以让数据库服务程序快速地定位 到表中的确定行
索引
• 在数据库中使用索引,可以让SQL 使用直接访问方式,SQL 采用树形 结构来存储和返回索引数据,用以 指示的数据存储在树的最末端,也 就是叶子,它们被称为结点 • SQL 将从根结点开始,直到找到所 需要的数据
用一个已经存在的表来建表
• CREATE TABLE 是最为通用的建表的方法, 然而在一些数据库管理系统中提供了一种可 供选择的方法:使用已经存在的表中的格式 和数据 • 当你对表进行临时改动,需要将数据选出时 这种方法是很有用的,或者当要创建的表与 已有的表类似并且其内容也类似时,它也非 常有用
索引
• 基本的SQL 索引的语法形式如下
CREATE \[UNIQUE\] INDEX Index_Name ON Table_Name(Column_Name1 \[ASC|DESC\], \[Column_Name2\],…);
注:索引的语法对于不同的数据库系统 差别很大 索引的删除 SQL> DROP INDEX index_name;
CREATE DATABASE 语句
CREATE DATABASE test LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K, 'D:\Oracle\oradata\test\redo02.log' SIZE 2048K MAXLOGFILES 32 MAXLOGMEMBERS 2 DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K MAXDATAFILES 254 MAXINSTANCES 1
CREATE TABLE 语句
SQL>CREATE TABLE BILLS ( 2 NAME CHAR(30) 3 AMOUNT NUMBER 4 ACCOUNT_ID NUMBER); Table created.
• 该语句创建了一个名字叫BILL 的表,在 BILL 表中有三个字段NAME ACCOUNT和ACCOUNT_ID, 其中 NAME 字段为字符类型,可以存储长度 30 的字符串,而AMOUNT和 AMOUNT_ID 则只参存储数字
表的存储与尺寸的调整
• 大多数RDBMS 都设定了表的默认大 小和存储的定位 • 如果没有指定表的大小和存储大小, 它就会采用默认值,可能是非常不合 适的特别对于大型的表来说更是如此 • 默认大小根据解释器和不同而不同 • 下边是一个ORACLE创建表时使用 STORAGE 子句的例子
表的存储与尺寸的调整
ALTER TABLE 语句
ALTER TABLE 语句完成: • 加入一列到已经存在的表中 • 修改已经存在的表中的某一列 • 在已经存在的表结构中删除原有的属性列 ALTER TABLE 语句的语法如下
ALTER TABLE Table_Name 〈 ADD Column_Name Data_Type;| MODIFY Column_Name Data_Type;| DROP Column_Name CASCADE|RESTRICT;〉
ORACLE 所支持的数据类型
空值属性
• 在建立表的时候,大多数数据库管理系统 允许用NOT NULL 来指明字段是否为非空 • 属性NOT NULL 的意思就是在当前表的该 字段中不能有任何记录存在空值,也就是 说,在当前表中的该字段的每一个记录中 都应该确实存在数值
SQL>CREATE TABLE BILLS ( 2 NAME CHAR(30) NOT NULL, 3 AMOUNT NUMBER, 4 ACCOUNT_ID NUMBER NOT NULL);
INSERT 语句
• 表中插入数据时必须遵循以下三条规则
–插入的数值与它所对应的字段必须具有相同 的数据类型 –数据的长度必须小于字段的长度。例如不能 向一个长40 个字符的字段中插入一个长80 个字符的字符串 –插入的数值列表必须与字段的列表相对应;
–灵活性 –效率性 –安全性
创建视图
• CREATE VIEW 和语法如下
CREATE VIEW <view_name> [(column1, column2...)] AS SELECT <table_name column_names> FROM <table_name>
SQL> CREATE VIEW CREDITCARD_DEBTS AS 2 SELECT * FROM DEBTS 3 WHERE ACCOUNT_ID = 4;
• 单文件的数据库系统如ACCESS 是不支持这个命 令的,数据库包含在一个单一的文件中 • 如果想建立一个数据库,你必须用系统提供的菜单 选项,如果想删掉它只需简单地从系统中删掉这个 文件
创建视图
• 视图常常被称为虚表,它是用CREATE VIEW 语 句来建立的 • 当对一组数据建立视图以后,可以像处理另外一个 表一样去处理视图,但是在视图中修改数据时要受 到一些限制; • 当表中的数据改变以后,将会相应的改变视图,视 图并不占用数据库或表的物理空间 • 视图引入的目的
• 例如要对BILLS 表中的ACCOUNT_ID 字段 创建索引 • SQL> SELECT * FROM BILLS
索引举例
索引举例
使用索引的技巧
• 对于小表来说,使用索引对于性能不会有任 何提高 • 当索引列中有极多的不同的数据和空值时, 索引会使性能有极大的提高 • 当查询要返回的数据很少时,索引可以优化 查询,比较好的情况是少于全部数据的25% • 索引可以提高数据的返回速度,但是使得数 据的更新操作变慢,如果要进行大量的更新 操作在执行更新操作时先删除索引,当执行 完更新操作后,只需要简单的恢复索引即可