分享
 
 
 

PL/SQL学习笔记(五)

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

创建和管理表

对象:

表(TABLE)基本的存储单位,由行和列组成。

表名和列名(使用规则):

必须是字母开头;

必须是1-30的字符长度;

只能包括A-Z,a-z,0-9,_,$,#;

在同一个用户下不能头重名的对象;

不能是ORACLE的保留字;

创建需求

必须有:

CREATE TABLE 权限;

足够的存储空间;

语法:

CREATE TABLE [SCHEMA(方案).]TABLE

(COL DATATYPE [DEFAULT默认值][]);

当前用户所有的表

select table_name from user_tables;

当前用户所有的对象:

desc user_objects

当前用户对象的别名:

select * from cat;

字段类型:

VARCHAR(size) 变长字符串类型

CHAR(size)定长字符串类型

NUMBER(p,s)p位整数,s位小数

DATE

DATETIME 秒级最多可以到小数点后的9位

TIMESTAMP 带有小数秒的日期

TIMESTAMP WITH TIME ZONE 带时区的类型

TIMESTAMP WITH LOCAL TIME ZONE 带时区的并会进行时区转换的类型(同一时间在不 同地区看到的时间)

INTERVAL YEAR TO MONTH 按年和月的间隔存储的类型

INTERVAL ‘123-2’ TEAR(3) TO MONTH

INTERVAL DAY TO SECOND 按天、小时、分和秒的间隔存储的类型

INTERVAL

LONG 变长的长字符串类型

CLOB 字符类型 4GIGABYTES

RAW 二进制类型与CHAR对应

LONG RAW 二进制类型与LONG对应

BLOB

BFILE 以文件的形式存储在操作系统中

ROWID 表中行的唯一地址(行地址)

方案:一个用户所有对象的命名集合。

如果想访问其他用户或方案的表要加上用户或方案作为前缀。

必须指明:

表名称;

列名,列类型和长度;

用户表:

被用户创建和维护的一些表;

包括了用户自己的信息;

数据字典表:

被ORACLE数据库创建和维护的一些表;

包括了数据库的信息;

CTAS(子查询建表):

CREATE TABLE table_name

[(col,coltype,..)]

as subquery(子查询);

创建的表的列的数目匹配子查询的列的数目。

使用子查询的列的名字和默认值定义表。

注:

*、被创建表的字段名要遵循如果没有字段别名和子查询中没设置别名的话,使用子查询中的列名;

如果有别名,使用别名;如果有字段列表([(col,coltype,..)]),在被创建的表中使用字段列表;

*、有字段列表与子查询的列要匹配。

*、当没有字段列表的时候,而在子查询中有表达式的时候一定要在表达式后要加上别名。

*、只会把属性当中的非空属性复制过来,其他的比如约束条件、关联...都不会复制过来。

使用ALTER TABLE 语句可以:

*、在表中增加一个新列

语法:ALTER TABLE table add (col datatype [default],...,....);

新增加的字段一定是放在表的最后。

*、修改表字段的类型和长度

ALTER TABLE table modify (col datatype [default],...,....);

对默认值的修改只会影响到新插入的行。

如果字段下有值的话,类型的修改成功率很小(要修改数据类型,要修改的列必须为空,即没有数据项)。

CHAR类型不能修改长度。

*、删除表字段

ALTER TABLE table DROP COLUMN (COLUMN_NAME_LIST);

9I2版可以修改列名

*、SET UNUSED 设置字段为不可用。

原理:清楚掉字典信息(撤消存储空间),不可恢复。

可以使用 SET UNUSED 选项标记一列或者多列不可用。

使用DROP SET UNUSED 选项删除被被标记为不可用的列。

语法:

ALTER TABLE table SET UNUSED (COLlist多个) 或者 ALTER TABLE table SET UNUSED COLUMN col单个;

ALTER TABLE table DROP UNUSED COLUMNS;

删除表:

删除关联:drop table table_name cascade;

改对象名:

RENAME 对象原名 TO 要改的对象名;

注:

必须是对象的所有者才能进行改名的操作。

截取:

不能回滚;

删除表中所有数据;

释放存储空间;

语法:

TRUNCATE TABLE 表名称;

DELETE 也可以删除所有行,但:

可以回滚。

不释放存储空间。

给表加注释:COMMENT

comment on table table_name is '注释内容';

约束条件:

如果经常用到约束条件的话,最好自己命名。

当定义约束的时候可以将定义的语句作为CREATE TABLE 中的参数的一部分来完成。

表级别约束定义:

CONSTRAINT 约束名 约束条件(字段名)

约束在表上强制了规则。

如果有参照的花,约束防止表的删除。

ORACLE支持的约束条件:

NOT NULL 非空

特点:唯一一个只能在列级定义的约束条件。

UNIQUE唯一

允许有空值(空值不做比较);

特点:当创建约束的时候,系统会自动创建对应其的索引。

PRIMARY KEY 主键

特点:当创建约束的时候,系统会自动创建对应其的索引。

在一个表中只允许一个主键。

FOREIGN KEY 外键

外键参照的一定是主表的主键或唯一键;

保证子表外键字段的值一定是主表中的被参照字段值的真子集;

当主表字段被参照的时候,其值不允许被直接删除。

CONSTRAINT 约束名 FOREIGN KEY (外键字段名) REFERENCES 主表名(主表字段名);

如果在字段列表中定义外键就可以不写 FOREIGN KEY 关键字。

如下格式:CONSTRAINT 约束名 REFERENCES 主表名(主表字段名);

ON DELETE CASCADE 当主表的行被删除的时候,要删除子表中参照主表的行。

ALTER TABLE TABLE_NAME DROP (PK) CASCADE CONSTRAINTS;把作为主键的字段也同时删除了。

ON DELETE SET NULL 当主表的行被删除的时候,转换子表中的参照值为空。

CHECK

定义一个每行都必须满足的条件。

CREATE TABLE table_name

(

....

salary number(10,2),

CONSTRAINT 约束名 CHECK(SALARY>0),

....

);

约束的使用:

约束的命名:给约束命名或者ORACLE服务器将使用SYS_Cn的格式为约束命名。

创建时期:

在创建表的同时或者在建表之后。

定义级别:

可以在表级定义或列级定义。

在数据字典中可以查看约束。

使用ALTER TABLE 语句:

*、添加或者删除约束条件,但是不能修改约束条件。

就算列名上已经有约束条件,还可以继续添加约束条件的。

添加:ALTER TABLE table_name ADD [CONSTRAINT ] 约束名 约束条件(column);

删除:ALTER TABLE table_name drop constraint 约束名;

ALTER TABLE table_name PRIMARY KEY CASCADE;删除主键的时候,不用约束名。

*、启动或禁用约束条件

ALTER TABLE table_name Disable constraint 约束名; 禁用

ALTER TABLE table_name ENABLE constraint 约束名; 启用

*、通过MODIFY添加 NOT NULL 约束条件(因为NOT NULL为列级约束,只能用MODIFY添加)。

ALTER TABLE table_name MODIFY(col type NOT NULL);

查看约束条件:

//desc user_constraints

OWNER 拥有者;

CONSTRAINT_NAME 约束名称

CONSTRAINT_TYPE 约束类型

SEARCH_CONDITION check的条件

select constraint_name, constraint_type,search_condition,status

from user_constraint where table_name='b';

视图 (VIEW) 一个或多个表的数据集的逻辑表示(虚表,不存储数据)。

视图不能提高查询的性能。

分类:

简单

数目:一个

函数:不包含

分组数据:不包含

可以做DML操作

复杂

数目:一个或多个

函数:包含

分组数据:包含

不一定能做DML操作

视图也可以用DESC描述。

创建视图:

CREATE [or replace(修改视图)] [force/noforce] VIEW view_name(col coltype ,.......)

as

subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY[CONSTRAINT constraint]];

USER_VIEWS 关于视图的字典

修改视图:

CREATE OR REPLACE 原视图名 (字段列表)

AS 子查询;

包含:

GROUP BY

DISTINCT

ROWNUM

不能对视图进行删除操作;

包含:

GROUP BY

DISTINCT

ROWNUM

通过表达式定义的列

不能对视图进行修改操作;

包含:

GROUP BY

DISTINCT

ROWNUM

通过表达式定义的列

在视图中没有包含基表中的 NOT NULL 列

不能对视图进行插入操作;

使用视图的原因;

为了限制对数据的访问;

为了使复杂的查询变得简单;

提供了数据的独立性;

提供了对相同数据的不同显示;

使用WITH CHECK OPTION 子句创建视图

创建视图时通过 WITH CHECK OPTION 子句确保执行的DML语句不会引起数据不出现在视图上。

在对视图做DML操作的时候,一定要符合WHERE子句中的条件。

CREATE OR REPLACE VIEW empvu20 as select * from employees

where check option constraint [empvu20_ck];

WITH READ ONLY

不可以进行DML操作;

删除视图:

DROP VIEW view_name;

行内视图:

是一个在SQL语句中使用的带有别名的子查询,该子查询放在FROM之后;

TOP-N:

select [col_list],rownum rank(排名)

from (select [col_list] from table_name order by top-n_col)

where rownum<=n;

序列(SEPUENCE)产生的顺序数字,单向递增或单向递减,且步长相同。

索引(INDEX)用于提高查询性能。

同义词(SYNONYM)对象的别名。

create public synonym e for hr.employees;

user_synonyms;

创建同义词要有权限,访问的时候也需要权限。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有