笔记_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:
             show pagesize;   
         pagesize设置好100,则可以一次显示够多行记录了:
             set pagesize 100;  
        b.设置行的宽度
        查看目前的linesize,默认是80:
             show linesize;  
        设置成100或者更宽都可以:
             set linesize 100;






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

4.表名重命名(RENAME TO xx)
        


>[ 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。( 唯一方法





猜你喜欢

转载自blog.csdn.net/na_simon2900086/article/details/53167465
今日推荐