SQL——DDL、DML、DQL、DCL、TCL

 

 



1.创建表空间

create tablespace test_ts datafile 'D:\develop\dmdbms\data\DAMENG\test_ts.DBF' size 128 autoextend on cache=normal;
--autoextend on 表示开启自拓展;autoextend off表示关闭自拓展;
--cache表示选择一个数据缓冲区,可以从normal和keep中选择;

2.创建用户并指定表空间

create user test identified by "Test123456" default tablespace test_ts;

3.登录指定用户,并创建表
(3.1)conn test/Test12345@IP:PORT
(3.2)

添加约束的三种办法,
第一:列级约束(方便但无法指定约束名)
第二:表级约束(可以起约束名但约束名容易冲突)
第三:表定义外定义约束

create table test.tt1 ( id
int not null unique, --列级约束   name char(10),   sex char(5) not null unique,   primary key(id) )storage (on test_ts);
alter table
"TEST"."TT1" add constraint "unique_constraint_name" unique(name); --表定义外定义约束 alter table "TEST"."TT1" drop constraint "unique_constraint_name" ; alter table TEST.TT1 alter column col1 int not null;

create TABLE SYSDBA.T_TAB4(
ID INT ,
PHONE INT,
NAME CHAR(10) DEFAULT 'AAAAA',
FKVALUE INT ,
FKVALUE2 INT,
PRIMARY KEY(ID), 
FOREIGN KEY(FKVALUE) REFERENCES SYSDBA.T_COPY(ID), --表级约束
CONSTRAINT CHECK_SYSDBA_TTAB4_ID CHECK(ID >2),   
CONSTRAINT CHECKNOTNULL_PHONE_ CHECK(PHONE IS NOT NULL),      
CONSTRAINT UNIQUE_SYSDBA_TTAB4_NAME UNIQUE(NAME),
--CONSTRAINT PRIMARY_ID PRIMARY KEY(ID),
CONSTRAINT REFERENCES_SYSDBA_TTAB4_FKVALUE2 FOREIGN KEY(FKVALUE2) REFERENCES SYSDBA.T_COPY(ID)
);

4.增删改查

declare
  i int :=1;
begin
  repeat
    insert into test.tt1 values(i,'aaa'||cast(i as char(10)),'');
    i=i+1;
  until i=10;
end;
commit;
delete test.tt1 where id = 2;
update test.tt1 set name='bbb' where id =3;
select * from test.tt1 ;

注意:1.||和contact()函数一样做字符串拼接的;
2.由于字符串拼接时需要数据类型保持一致,所以需要用cast函数将变量i转换为char类型;

 

 


 

DDL数据定义语言

create 对象 对象名

DROP TABLE XXX CASCADE  #从父表中删除或更新对应的行,同时自动的删除或更新子表中匹配的行。(主键与外键)
DROP TABLE XXX SET NULL #从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效
DROP TABLE XXX RESTRICT #拒绝删除或者更新父表

 

alter  

 

(用户、模式、角色         表、视图、索引、序列、同义词、触发器、上下文、存储过程、存储函数)

 

DML数据操作语言

insert into 表名()  values();

delete 表名  where;

update 表名 set 列名=xxx where;

DQL数据查询语句

select * from 表名 where;

DCL数据控制语言

grant   角色    to 用户名;
grant   select on 用户名A.对象名  to  用户B;  #这样b用户就可以select用户A的对象
grant update on 用户名A.对象名 to 用户B; #这样b用户就可以update用户A的对象
 
revoke xxx FROM 用户名;

 批量赋予权限:

declare
begin
        for a in
        (
            select owner, table_name from dba_tables where owner = 'b用户'
        )
        loop
                EXECUTE IMMEDIATE 'grant all on '||a.owner||'.'||a.table_name||' to c用户';
        end loop; 
end;

 

 

 

 

 

TCL事务控制语言

  • commit
  • savepoint  sp1
  • rollback
  • rollback savepoint to sp1

 

posted @ 2021-03-04 13:21  Eric-Shen  阅读(103)  评论(0编辑  收藏  举报