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 @   Eric-Shen  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示