前端之家收集整理的这篇文章主要介绍了
笔记_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;
/
SELECT table_name FROM user_tables;
select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; 查看你能管理的所有用户!
select * from user_users; 查看当前用户信息 !
a.sql的书写规范是个广义的、经验性的、约定俗成的东西,在此基础上,每个公司都会有相关的文档。
它包括:命名规范、大小写规范、注释规范、换行规范、缩进规范等等。绝壁是个蛋疼却显水准的地方,尤其当你重构前人设计的数据库时;如果自己规范总变,几个月后再看自己写的表名都不认得了。
b.最合理的sql大小写规则:关键字(语法)大写,表名、字段名小写。
这样的好处是,阅读起来很规整。
c.Oracle对用户名、表名、字段名都大小写不敏感(除非建表时加引号),并且解析和存储都按大写。
e.最不可取的大小写方案:首字母大写。
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有出入。
例子:往emp表增加列test_num,NUMBER(2)类型。
将test_num列的类型改为NUMBER(3)。
这两条DDL语句须按sql*plus的写法,没有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。
ALTER TABLE——约束]
补充的是,CONSTRAINT有3个属性deferrable、deferred、validated,平时不太用;比如deferrable deferred联合使用可以控制在commit之前约束数据完整的约束都不起作用,只有commit后才报错。总之记住,CONSTRAINT是否启用、何时启用可以手动控制。
例子:新建了两个空表t_class和t_stu用于练习约束(主外键,CHECK,UNIQE,NOT NULL).
注意到t_class表是组合主键(cno,sno)。
跟以上四个约束不同,NOT NULL可以直接对列用ALTER COLUMN MODIFY添加/修改。
Oracle
主键自增:
一个序列+一个、
--序列
CREATE SEQUENCE sq_article_id
MINVALUE 1 MAXVALUE 9999999999999999999999999999
CREATE OR REPLACE TRIGGER AUTOINCREMENT_TRIGGER_article _id
INSERT ON article FOR EACH ROW WHEN (new.id is null)
select sq_article_id.nextval into: new.id from dual;
ALTER TRIGGER AUTOINCREMENT_TRIGGER_article _id ENABLE;
补1:plsql developer查看序列、触发器代码:
比如当前最大id是13241,但是由于某些原因(
删除?)
查询当前序列值SELECT xx_sequence.corrval FROM DUAL结果是18111,则希望将当前序列值改回为13241.