笔记_DDL+DCL+oracle边用边记
有道云笔记 连接: http://note.youdao.com/noteshare?id=cc7ca02d8310ed408055db7bcfc4344b
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 以下可忽略:
总体解释:
1.安装注意的点: a.OracleXE11,XE指ExpessEdition(精简版); b.安装过程中的DBA密码; c.安装后,看看windows服务里oracle相关的服务是否启动; d.8080端口是Oracle默认的http端口,会与tomcat端口冲突。解决方法是,DBA登陆,运行: BEGIN 2.列出当前用户下所有表名 SELECT table_name FROM user_tables;dbms_xdb.sethttpport('8088');END;/ 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。( 唯一方法) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |