笔记_DDL+DCL+oracle边用边记

有道云笔记 连接:

http://note.youdao.com/noteshare?id=cc7ca02d8310ed408055db7bcfc4344b


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下可忽略:



总体解释:
sql语言(结构化查询语言)的组成部分包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL(Data Control Language):是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL




1.安装注意的点:
a.OracleXE11,XE指ExpessEdition(精简版);
b.安装过程中的DBA密码;
c.安装后,看看windows服务里oracle相关的服务是否启动;
d.8080端口是Oracle默认的http端口,会与tomcat端口冲突。解决方法是,DBA登陆,运行:
BEGIN
dbms_xdb.sethttpport('8088');
END;
/
2.列出当前用户下所有表名
SELECT table_name FROM user_tables;

3.查询所有用户
 
 
select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; 查看你能管理的所有用户
select * from user_users; 查看当前用户信息 !

4.sql大小写规范
a.sql的书写规范是个广义的、经验性的、约定俗成的东西,在此基础上,每个公司都会有相关的文档。
包括:命名规范、大小写规范、注释规范、换行规范、缩进规范等等。绝壁是个蛋疼却显水准的地方,尤其当你重构前人设计的数据库时;如果自己规范总变,几个月后再看自己写的表名都不认得了。
b.最合理的sql大小写规则:关键字(语法)大写,表名、字段名小写
这样的好处是,阅读起来很规整。
c.Oracle对用户名、表名、字段名都大小写不敏感(除非建表时加引号),并且解析和存储都按大写
e.最不可取的大小写方案:首字母大写。

5.PL/sql美化器文件

6.oracle默认角色
一般创建新用户的过程:
conn system/xxx;
create user scott identified by xxx;
grant connect to scott;
Oracle常用的默认角色有三个:connect(连接,创建会话),resource(资源,创建表等),dba(管理员)。

7.sql*plus显示结果的宽度、数目。
a.查看目前的pagesize,默认是14:
showpagesize;
pagesize设置好100,则可以一次显示够多行记录了:
setpagesize100;
b.设置行的宽度
查看目前的linesize,默认是80:
showlinesize;
设置成100或者更宽都可以:
setlinesize100;






【DDL】:

>[ ALTER TABLE——列]
注意,针对COLUMN操作(ADD、MODIFY)时,sql*plus和标准sql有出入。
1.增加(ADD)修改列类型(MODIFY)
例子:往emp表增加列test_num,NUMBER(2)类型。
将test_num列的类型改为NUMBER(3)。
这两条DDL语句须按sql*plus的写法,没有COLUMN关键字,列名和类型可括号也可不加。

2.删除(DROP COLUMN)
不同于增加列和修改列类型,删除列DROP后有COLUMN关键字。

3.列重命名RENAME COLUMNxxTOxx)
3点注意区别
a.RENAME后有COLUMN,跟DROP COLUMN一样符合标准sql语法;区分于ADD和MODIFY。
b.区分于MODIFY,modify虽有“修改”之意,但是MODIFY修改的是列的数据类型和非空,列名称修改是RENAME COLUMN xx TO xx。
c.区分于下面讲的表名重命名RENAME TO xx。

4.表名重命名RENAME TOxx)


ALTER TABLE——约束]

Oracle约束CONSTRAINT是我们经常使用的一种数据库规则对象。constraint在数据库中的作用就是从静态角度对数据完整性进行维护。
补充的是,CONSTRAINT有3个属性deferrable、deferred、validated,平时不太用;比如deferrable deferred联合使用可以控制在commit之前约束数据完整的约束都不起作用,只有commit后才报错。总之记住,CONSTRAINT是否启用、何时启用可以手动控制。
补充2删除表时,该表的约束、索引也自动删除

例子:新建了两个空表t_class和t_stu用于练习约束(主外键,CHECK,UNIQE,NOT NULL).
1.添加主键约束
注意到t_class表是组合主键(cno,sno)。
2.添加外键约束

3.添加CHECK约束

4.添加UNIQUE约束

5.添加NOT NULL约束
跟以上四个约束不同,NOT NULL可以直接对列用ALTER COLUMN MODIFY添加/修改




Oracle 主键自增
一个序列+一个、
--序列
CREATE SEQUENCE sq_article_id
MINVALUE 1 MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
START WITH 1
NOCACHE
NOORDER
NOCYCLE ;
--触发器(插入空,默认自增)
CREATE OR REPLACE TRIGGER AUTOINCREMENT_TRIGGER_article _id
BEFORE
INSERT ON article FOR EACH ROW WHEN (new.id is null)
begin
select sq_article_id.nextval into: new.id from dual;
end;
/
ALTER TRIGGER AUTOINCREMENT_TRIGGER_article _id ENABLE;
补1:plsql developer查看序列、触发器代码

补2: 修改序列当前值
比如当前最大id是13241,但是由于某些原因(删除?)查询当前序列值SELECT xx_sequence.corrval FROM DUAL结果是18111,则希望将当前序列值改回为13241.
方法删除序列重建,初值为13241。( 唯一方法

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...