oracle笔记5 建表 修改表 删除主键 约束

查看表主键
select a.constraint_name, a.table_name, b.constraint_name
from user_constraints a, user_constraints b
where a.constraint_type = 'R' --R表示外键
and b.constraint_type = 'P' --P表示主键 两个选一个
and a.r_constraint_name = b.constraint_name

配置PL/SQL
Tools-Preference首选项 地址栏中分别写
D:\company\Installation Package\Linux\instantclient_11_2(plsql link)
D:\company\Installation Package\Linux\instantclient_11_2(plsql link)\oci.dll

公司数据库
CBSFLCP72
CBSFLCP72
192.168.66.248/FCUBS

CBSFLCP
CBSFLCP
Database:192.168.66.70/FCUBS

显示oracle系统时间
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;



复制表
如果两个表结构一样
insert into table_name_new select * from table_name_old
如果两个表结构不一样:
insert into y(字段1,字段2) select 字段1,字段2 from x
只复制表结构
create table 用户名.表名 as select * from 用户名.表名 where 1=2

删除users这个表 drop table users;
查看表desc 表名;
查看表插入的数据 select * from users;
查询某项为空或不是为空的人 select * from users where birthday is null/is not null;

建表的几个约束
not null
unique 唯一 不能重复但是可以为空 可以为多个
primary key 只能唯一 最多一个主键
foreign key 外键
check 条件约束
主键被外表引用的不可以直接删除 例emp的主键 被dept表引用 想删除

向表中添加注释
comment on table test is 'hehe';
comment on column test.a is 'hehe';
select * from user_col_comments ;查看有注释的

创建三个表
create table goods (goodsId char(8) primary key,
goodsName varchar2(20),
unitprice number(10,2) check(unitprice>0),
category varchar2(20),
provider varchar2(20))

create table customer(customerId char(8) primary key,
name varchar2(50) not null,
address varchar2(50),
email varchar2(20) unique,
sex char(2) default '男' check (sex in ('男','女')),
cardId char(18)
)

create table purchase (customerId char(8) references customer(customerId),
goodsId char(8) references goods(goodsId),
nums number(10) check (nums between 1 and 30))


删除表中主键被个、另一张表作为外键被引用的表
删除主键 alter table aa1 drop primary key cascade;

有外键的表
create table aa1(
xh number primary key,
xm varchar2(10))

create table aa2(
zj number primary key,
xh number,
foreign key(xh) references aa1(xh)
aa2这张表有外键xh在aa1表中做主键 所以不能直接删除aa1得先删除aa2 或者drop table aa1 cascade

向表中添加主键约束 alter table student add constraint pk_student primary key(studentid);
4、向表中添加外键约束 ALTER TABL

E table_A ADD CONSTRAINT FK_name FOREIGN KEY(id) REFERENCES table_B(id);
一张表中建立联合主键 constraint pk_name primary key(col1,col2)
设置默认值 create table tablename(flag CHAR(1) default’N’);

表级定义 :就是再定义完字段后在最后定义约束 例:constraint 别名 primary key(主键字段名)
列级定义 :就是再字段后面直接加约束 (主键字段名)primary key
他们的最大却别就是表级定义可以给约束自定义取名,而列级定义系统自动分配
?修改表:

约束
查看一个表有哪些约束
select * from USER_CONSTRAINTS where TABLE_NAME='HTP_EMP';
添加约束
alter table customer add constraint addressCheck check(address in ('沈阳','北京'));
ALTER TABLE emp ADD CONSTRAINT k1 FOREIGN KEY(DEPTNO) REFERENCES dept(DEPTNO) on delete set null/on delete cascade;
(删除主表emp的时候相关联的dept表怎么变换 设为空/级联删除)
alter table dept2 add constraint pk_dept primary key(deptno); 添加deptno为主键
删除约束
alter table customer drop constraint addressCheck(约束名);
删除一个带有主键的约束(后面加个cascade) alter table customer drop primary key cascade
? 添加字段(学生所在班级classid)
alter table student add (classId number(2));
? 修改字段的长度
alter table student modify (xm varchar2(12)) ;
? 修改字段的类型(不能有记录的)
alter table student modify (xh varchar2(5));
? 删除一个字段
alter table student drop column sal;
删除表
drop table student;
表的名字修改
rename student to stu;
? 字段如何改名字
1.alter table 表明 rename column 要改的字段 to 改成的字段;
?
2. 或者 先删除再添加
1) alter table student drop column sal;
2) b)alter table student add (salary number(7,2));

添加信息insert into student (xh,xm,sex,birthday,sal) VALUES (1,1,1,to_date('2000-10-10','YYYY-MM-DD'),1) 月
修改 update students set number='2',sal=200 where name='htp';
插入日期格式to_date(2011-2-12,'yyyy-mm-dd')
显示oracle系统时间
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
修改格式日期 alert session set nls_date_format=‘yyyy-mm-dd’;

删除:
1.只删除表中数据 delete from users;可以恢复但是必须在你删除之前写保存点savapoint 名字(htp1):rollback to 字名
2.删除表的结构和数据 drop table users;
例子
查询工资高于500或是班级为10班,同时还要满足xm姓名的前两位是hu
select * from students where (sal>500 or classid=10) and xm like 'hu%'; %写字母前面代表从尾字母开始

把一张表里的数据赋值到另一张表 insert into table2 select * from table1;
按工资从低

到高排序 select * from users order by sal(默认asc); desc是从高到低排序
部门号升序部门的工资降序 select * from users order by num ,sal desc;

RECORD
SELECT INTO语句
游标
触发器
语句级 记录一次
行级触发器

DECLARE 定义变量
TYPE TY_TB_USER IS TABLE OF https://www.360docs.net/doc/1f8618791.html,er_Name%TYPE;
BEGIN

EXCEPTION

END

查询表有多少行数据的程序

declare 声明变量cout
2 cout number;
3 begin
4 select count(*) into cout from twotable; into cout把查出来的number值赋给变量cout
5 dbms_output.put_line(cout);
6 end;
oracle 输出语句dbms_output.put_line('');

:=赋值
declare




ALTER TABLE emp2 ADD CONSTRAINT FK_name FOREIGN KEY(deptno) REFERENCES dept2(deptno);
alter table dept2 add constraint pk_dept primary key(deptno); 添加deptno为主键
alter table emp2 add constraint pk_dept primary key(empno);添加empno为主键






相关文档
最新文档