设为首页 收藏本站
查看: 588|回复: 0

[经验分享] Oracle字段的增删改查

[复制链接]

尚未签到

发表于 2016-7-29 11:02:59 | 显示全部楼层 |阅读模式
  --创建表
--cteate table 表名(
         --字段名 数据类型 约束,
         --字段名 数据类型 约束
--)
Create table stu(
  Sid number(10),
  Sname varchar2(10)
) tablespace tt;
--以上 tablespace不是必须的。默认不写,则创建在登录的用户所在的表空间上
 select * from all_tables where owner='SCOTT'

  --使用子查询创建表
create table myemp as select * from emp;                 创建一张与emp表 结构和数据完全相同的表

create table myemp as select * from emp where deptno=10;   创建一张只有部分结果的新表 
create table myemp as select * from emp where 1=2;              创建一张只有emp表的结构,但是不含任何结果的空表

  
  --添加字段
--alter table 表名 add 新列字段名 数据类型;
Alter table stu add age number(3); 
                                                                                                                 
--修改字段
--alter table 表名 modify 字段名 新的数据类型
Alter table stu modify Sage number(10);
--alter table 表名 rename column 原来的名字 to 新的名字;
alter table stu rename column age to Sage;
  
--删除字段
--alter table 表名 drop column 列名
Alter table stu drop column Sage;
  
  --清空表中数据 delete ,回滚
--清空表中数据
Truncate table student;  
--则表示所删除的数据不可恢复了.所以速度很快

  --删除表
Drop table student;
  --重命名表
Rename student to student1;
  
  -- 插入数据
INSERT INTO person(pid,name) VALUES (11,'张三');
 
--PRIMARY KEY:主键约束
--不能重复,不能为空
--例如:身份证号不能为空。 
 
--UNIQUE:唯一约束,值不能重复(空值除外)
--人员中有电话号码,电话号码不能重复。 
 
--CHECK:条件约束,插入的数据必须满足某些条件
--人员有年龄,年龄的取值只能是0~150岁之间
DROP TABLE person ;
CREATE TABLE person
(
 pid  NUMBER PRIMARY KEY NOT NULL ,                                                                                                                                                                                                                                                                                          
 name VARCHAR(30)  NOT NULL ,
 tel  VARCHAR(50)  NOT NULL UNIQUE ,
 age  NUMBER   CHECK(age BETWEEN 0 AND 150)
) ;
-- 插入数据
INSERT INTO person(pid,name,tel,age) VALUES (11,'张三','1234567',30);
-- 年龄的输入错误
INSERT INTO person(pid,name,tel,age) VALUES (12,'李四','2345678',-100);
 
--Foreign Key:外键 
                                                                                                                        
 
alter 命令为表添加约束
--、 为两个表添加主键:
--· person表 pid为主键:
   ALTER TABLE person ADD CONSTRAINT person_pid_pk PRIMARY KEY(pid) ;
--为person表中的 tel添加唯一约束:
  ALTER TABLE person ADD CONSTRAINT person_tel_uk UNIQUE(tel) ;
--为person表中的 age添加检查约束:
  ALTER TABLE person ADD CONSTRAINT person_age_ck CHECK(age BETWEEN 0 AND 150) ;
--为book表中的 pid添加与 person的主-外键约束,要求带级联删除
  ALTER  TABLE  book  ADD  CONSTRAINT  person_book_pid_fk  FOREIGN  KEY  (pid)
  REFERENCES person(pid) ON DELETE CASCADE ;
--删除约束:
 ALTER TABLE book DROP CONSTRAINT person_book_pid_fk ;
alter table student drop unique(tel);
--启用约束
ALTER TABLE book enable CONSTRAINT person_book_pid_fk ;
--禁用约束
ALTER TABLE book disable CONSTRAINT person_book_pid_fk ;
  
  --视图:是一个封装了各种复杂查询的语句,就称为视图。
--CREATE VIEW  视图名字(字段) AS  子查询
create view empv_all as select * from scott.emp;
   
  --创建序列
Create sequence myseq
Start with 1  
Increment by 1  
Order
cache 20 --设置是否在内存里缓冲
Nocycle;
--NextVal,CurrVal
Select myseq.nextval from dual;
Select myseq.currval from dual;
--(必须先有 nextval,才能有currval)
  
--查询完之后就已经自增 1了
  create table t1 (
  id int
      
)
select * from t1;
Insert into t1 values(myseq.nextval)  --这时候已经是2了
 
--Cycle,Cache
--而用了 nocycle,就可以确保当该序列用于多张表的时候,ID 是唯一的
 
--用 cycle时,用法如下:
create sequence myseq2 start with 1 increment by 1 cycle maxvalue 3
nocache ;
  Select myseq2.nextval from dual;
Select myseq2.currval from dual;
--这样到3之后,要会重新从1开始  
--如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里
--面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉
--(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止
--这种情况
 
--不能改变当前值,但是可以改变增量
Alter sequence myseq increment by 3;
  
--同义词
--在任何一个用户下,都可以直接访问 dual,而不需要加上前缀的用户名如:scott.emp
Select * from dual;
 
--为什么?因为同义词的存在  
--Dual其实是sys用户下的一张表
select table_name from user_tables where lower(table_name) = 'dual';  
--作用:
--很方便的操作不同用户下的对象
--能使两个应用程序使用不同的名字指向同一张表
--使用不同的用户指向同一张表的。
  Create synonym dept for soctt.dept;--(这样创建的同义词是私有的,只有创建者才能用)
Drop synonym dept;
Create public synonym dept for soctt.dept;--(这样创建的同义词才是公有的)
Drop public synonym dept;
   
  --建立索引
create index emp_ix on emp(ename);

 
 
 
  
  
  
  
  
  
  
  
  

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251125-1-1.html 上篇帖子: oracle 并发读取数据方案比较 下篇帖子: Oracle存储过程和程序包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表