博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle的基本语法
阅读量:6411 次
发布时间:2019-06-23

本文共 4987 字,大约阅读时间需要 16 分钟。

hot3.png

1.表和列的命名规则

(1)必须由字母开始,字符长度为1-30个字符,只能包含a-z A-Z 0-9  _ $ #
(2)同一个用户所拥有的对象之间不能重名,不能用oracle服务器的保留字
(3)建议使用描述性的名字为表和其他数据库对象命名
(4)表和列名对大小写不敏感
2.create table语法
create table tbl_name(coll datatype,......) tablespace tablespace_name;
创建表
create table emp(emp_no number not null,emp_name varchar(50),constraint pk_emp primary key(emp_no));
select dbms_metadata.get_ddl('TABLE','EMP') from dual;
查看表结构
3.增加备注
comment on table emp is 'employees table';
comment on column emp.emp_no is 'employees comment';
查看备注
set linesize 400;
col comments for a30;
select * from user_tab_comments where table_name='EMP';
TABLE_NAME               TABLE_TYPE  COMMENTS
------------------------------ ----------- ------------------------------
EMP                   TABLE       employees table
SQL> select * from user_col_comments where table_name='EMP';
TABLE_NAME               COLUMN_NAME              COMMENTS
------------------------------ ------------------------------ ------------------
EMP                   EMP_NO                  employees comment
EMP                   EMP_NAME
4.用子查询创建表
create table a as select owner,object_name,subobject_name from all_objects;
create table tbl_01(owner,object_name,subobject_name) as select owner,object_name,subobject_name from all_objects;
select count(*) from tbl_01;
  COUNT(*)
----------
     71859
5.制定default值
create table tbl_02(emp_no number,emp_name varchar(50) default 'shiwei',create_date date);
insert into tbl_02(emp_no,create_date) values(1,sysdate);
select * from tbl_02;
    EMP_NO EMP_NAME                          CREATE_D
---------- -------------------------------------------------- --------
     1 shiwei                          10:33:14
6.删除表
drop table a;
drop table a purge;
7.rename对象
rename old_name to new_name;
old_name:存在的table view sequence private synonym的名字
8.截断表
truncat table a;
truncat 与delete的区别
truntcat释放表空间
delete只删除表数据
9.sequence序列号
oracle删除序列化:
 DROP SEQUENCE seq_a;
oracle创建序列化:
CREATE SEQUENCE seq_a
            INCREMENT BY 1  -- 每次加几个
            START WITH 1       -- 从1开始计数
            NOMAXVALUE        -- 不设置最大值
            NOCYCLE               -- 一直累加,不循环
            CACHE 10;            -- 缓存存储10个sequence,oracle默认存20个
oracle修改序列化:Alter Sequence  
       .如果想要改变 start值,必须 drop  sequence 再create .
想改变序列化的minvalue必须删除序列化后再重新建立序列化。  
Alter sequence 的例子
        ALTER SEQUENCE seq_a
                                      INCREMENT BY 10
                                      MAXVALUE 10000
                                      CYCLE    -- 到10000后从头开始
                                      NOCACHE ;  
sequence的使用:
SELECT seq_a.nextval FROM dual; --当前值的下一个值,第一次执行为开始值10
SELECT seq_a.currval FROM dual; -- 当前值
注:每一个登录用户都必须先执行seq_a.nextval后,才能执行seq_a.currval,
否则会报ORA-08002: sequence seq_a.CURRVAL is not yet defined in this session错误
//查询sequence
select sequence_name from  user_sequences;
SELECT  * FROM user_sequences ; -- 查询当前用户所有的sequences
SELECT * FROM all_sequences;  --查询所有用户的sequences
create table tbl_03(id number,name varchar(50),primary key(id));
create sequence seq_tbl_03
 minvalue 1
maxvalue 99999
start with 1
increment by 2
cache 20
nocycle;
初始化
select seq_tbl_03.nextval from dual;
insert into tbl_03 values(seq_tbl_03.currval,'guoyf');
insert into tbl_03 values(seq_tbl_03.nextval,'guo');
10.创建同义词synonym
同义词其实在使用一种替换操作,oracle会自动将同义词替换为它所代表的对象名,再对对象进行操作。
如果表和同义词同名,oracle优先操作表。
语法:
create or replace [public] for objects_name;
SQL> create synonym offices for hr.locations;
SQL> select count(*) from offices;
  COUNT(*)
----------
    25
drop synonym offices;
11.约束(constrains)
oracle服务器用约束来防止无效数据输入到表中。
约束做的事情:在插入行数据或者从表中删除行数据时强制遵循规则。
not null
unique
primary key
foreign key:在列和引用表的一个列之间建立,并且强制一个外键关系
check:指定一个必须为真的条件
drop table teacher purge;
create table teacher(
teacher_id number not null primary key,
teacher_name varchar2(50),
ages number(3) check (ages < 200));
drop table stu purge;
drop table student purge;
create table student(
stu_id number not null primary key,
teacher_id number not null,
stu_name varchar2(50),
address varchar2(50),
#constraint uk_name unique(stu_name),
#constraint pk_student primary key(stu_id)
);
alter table student add constraint fk_student_teacher foreign key(teacher_id) references teacher(teacher_id);
删除teacher表中数据时,先删除student表中的数据依赖
添加唯一索引
alter table student add constraint uk_name unique(stu_name);
添加check约束
alter table teacher add constraint check_ages check(ages<200);
查看约束
 select owner,constraint_name,constraint_type,table_name,status from user_constraints;
CREATE TABLE promotions_var1
    ( promo_id         NUMBER(6)
                       CONSTRAINT promo_id_u  UNIQUE --自定义约束名
    , promo_name       VARCHAR2(20)
    , promo_category   VARCHAR2(15)
    , promo_cost       NUMBER(10,2)
    , promo_begin_date DATE
    , promo_end_date   DATE
    ) ;
11.用户管理
创建角色
create role dba_group1;
赋予角色权限
grant create session,create table,create view to dba_group1;
查看角色权限
select * from role_sys_privs where role='DBA_GROUP1';
创建用户
create user test identified by test default tablespace tbs_01;
给用户赋予dba_group1的权限
grant dba_group1 to test;
用户连接
conn test/test
查看用户权限
select * from user_sys_privs ;--为空 因为直接赋予的是角色,不是具体权限
//角色视图
---授予角色的系统权限
SQL> select * from role_sys_privs;
---可由用户访问的角色
SQL> select * from user_role_privs;
---授予用户的系统权限
SQL> select * from user_sys_privs;
12.revoke回收权限
revoke create view from dba_group1;
revoke dba_group1 from test;
create user test identified by test;
grant connect, create view to test;
revoke create view from test;

转载于:https://my.oschina.net/u/1458120/blog/225676

你可能感兴趣的文章
Android实际开发中实用的第三方(开源)框架
查看>>
Why I quit from Qt5 Quick?
查看>>
java线程池的原理学习
查看>>
Git之Eclipse提交项目到Github并实现多人协作
查看>>
阿里云邮免费企业邮箱使用smtp发送邮件失败(SMTP开启、配置问题)
查看>>
我们不再需要 Chrome?
查看>>
调查显示开发者最讨厌 PHP,最爱 Python
查看>>
文档和元素的几何滚动
查看>>
gcd算法
查看>>
Storm
查看>>
图片人脸检测——OpenCV版(二)
查看>>
上部 本地实战
查看>>
在oracle linux下使用yum安装报错:[Errno -1] Metadata file does not match checksum
查看>>
个人对CPU状态的描述
查看>>
小白如何学习Python网络爬虫?
查看>>
Ubuntu18.04更换国内源
查看>>
算法导论——贪心算法
查看>>
JVM笔记10-性能优化之高级特性
查看>>
运维调试记录:C++ compile error: default argument given for parameter
查看>>
Hadoop Yarn上的调度器
查看>>