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