Oracle的SQL操作

目录

文章目录


第一部分 - Oracle基本操作

1 创建数据表

1.1创建员工表

create table tb_emp1(
       id number(11),
       name  varchar2(25),
       deptId number(11),
       salary number(9,2)
);

1.2 使用主键约束

1.2.1 在定义列的同时创建主键约束

create table tb_emp2(
       id number(11) primary key,
       name  varchar2(25),
       deptId number(11),
       salary number(9,2)
);

1.2.2 在定义列后创建主键约束

create table tb_emp3(
       id number(11),
       name  varchar2(25),
       deptId number(11),
       salary number(9,2),
       primary key(id)
);

1.2.3 创建多字段联合主键约束

create table tb_emp4(
       name  varchar2(25),
       deptId number(11),
       salary number(9,2),
       primary key(name,deptId)
);

1.2.4 用修改表来添加主键约束

create table tb_emp5(
       id number(11),
       name  varchar2(25),
       deptId number(11),
       salary number(9,2)
);
alter table tb_emp5
add constraints pk_id primary key(id);

1.2.5 移除主键约束

alter table tb_emp5
drop constraints pk_id;

1.3 使用外键约束

1.3.1 创建外键约束

create table tb_dept1(
       id number(11) primary key,
       name varchar2(22) not null,
       location varchar2(50)
);

create table tb_emp6(
       id number(11) primary key,
       name varchar2(22),
       deptId number(11),
       salary number(9,2),
       
       constraints fk_emp1_dept1
       foreign key(deptId)
       references tb_dept1(id)
);

1.3.2 用修改表来添加外键约束

create table tb_dept2(
       id number(11) primary key,
       name varchar2(22) not null,
       location varchar2(50)
);
create table tb_emp7(
       id number(11) primary key,
       name varchar2(22),
       deptId number(11),
       salary number(9,2)
);
alter table tb_emp7
add constraints fk_emp7_dept2
foreign key(deptId) references tb_dept2(id)
on delete cascade;

1.3.3 移除外键约束

alter table tb_emp7
drop constraints fk_emp7_dept2;

1.4 使用非空约束

1.4.1 创建非空约束

create table tb_emp8(
       id number(11) primary key,
       name varchar2(25) not null
);

1.4.2 用修改表来添加非空约束

create table tb_emp9(
       id number(11) primary key,
       name varchar2(25) 
);
alter table tb_emp9
modify name not null;

1.4.3 移除删除非空约束

alter table tb_emp9
modify name null;

1.5 使用唯一性约束

1.5.1 创建唯一性约束

create table tb_emp10(
       id number(11) primary key,
       name varchar2(22) unique
);

1.5.2 在定义列后创建唯一性约束

create table tb_emp11(
       id number(11) primary key,
       name varchar2(22),
       constraints sth unique(name)
);

1.5.3 用修改表来添加唯一性约束

create table tb_emp12(
       id number(11) primary key,
       name varchar2(22)
);
alter table tb_emp12
add constraints unq_name unique(name);

1.5.4 移除唯一性约束

alter table tb_emp12
drop constraints unq_name;

1.6 使用默认约束

create table tb_emp13(
       id number(11) primary key,
       name varchar2(22) not null,
       major varchar2(20) default '电子商务'
);

1.7 使用检查约束

1.7.1 创建检查约束

create table tb_emp14(
       id number(11) primary key,
       name varchar2(22) not null,
       sex varchar2(2),
       constraints ck_emp14_sex check (sex='男' or sex='女')
);

1.7.2 用修改表来添加检查约束

create table tb_emp15(
       id number(11) primary key,
       name varchar2(22) not null,
       sex varchar2(2)
);
alter table tb_emp15
add constraints ck_emp15_sex
check(sex='男' or sex='女');

1.7.3 移除检查约束

alter table tb_emp15
drop constraints ck_emp15_sex;

2 修改数据表

2.1 修改表名

create table tb_emp17(
       id number primary key,
       name varchar2(25) not null,
       sex varchar2(2),
       birth date,
       college varchar2(30),
       major varchar2(30),
       email varchar2(50),
       constraints ck_emp17_sex check(sex='男' or sex='女')    
);
alter table tb_emp17
rename to tb_alter;

2.2 修改字段

2.2.1 修改字段的数据类型

alter table tb_alter
modify name varchar2(40);

2.2.2 修改字段名

alter table tb_alter
rename column id to userId;

2.2.3 添加字段

alter table tb_alter
add address varchar2(100);
alter table tb_alter
add QQ varchar2(11);

2.2.4删除字段

alter table tb_alter
drop column email;

3 删除数据表

3.1 删除没有被关联的表

create table tb_emp18(
       id number primary key,
       name varchar2(25) not null
);
drop table tb_emp18;

3.2 删除被其他表关联的表

create table tb_emp19(
       id number primary key,
       name varchar2(22) not null,
       address varchar2(50)
);
create table tb_emp20(
       id number primary key,
       name varchar2(22) not null,
       deptId number,
       constraints fk_emp20_deptId
       foreign key(deptId) references tb_emp19(id)
);
--错误语句
drop table tb_emp19;
--删除失败,提示“表中的唯一/主键被外键引用”
--如果是drop table tb_emp20; 则能成功地删除
--正确语句
alter table tb_emp20
drop constraints fk_emp20_deptId;
drop table tb_emp19;

4 综合

4.1 表结构

4.1.1 offices表结构

字段名数据类型主键外键非空唯一
officeCodenumber(10)
cityvarchar2(50)
addressvarchar2(50)
countyvarchar2(50)
postalCodevarchar2(15)

4.1.2 employees表结构

字段名数据类型主键外键非空唯一
employeeNumbernumber(11)
lastNamevarhcar2(50)
firstNamevarhcar2(50)
mobilevarhcar2(25)
officeCodevarhcar2(10)
jobTitlevarhcar2(50)
birthdate
notevarhcar2(255)
sexvarhcar2(5)

4.2 题目

  1. 创建表offices
  2. 创建表employees
  3. 将表employees的officeCode字段改名为employess_ officeCode
  4. 将表employees的sex字段的数据类型改为varchar2(2),添加非空约束,检查约束
  5. 将表employees的note字段删除
  6. 在表employees中添加favorite_activty,数据类型为varchar2(100)
  7. 将表offices删除
  8. 将表employees改名为employeesInfo

4.3 参考答案

4.3.1 创建表offices

create table offices(
       officeCode number(10) primary key,
       city varchar2(50) not null,
       address varchar2(50),
       county varchar2(50) not null,
       postalCode varchar2(15) unique
);

4.3.2 创建表employees

create table employees(
       employeeNumber number(11) not null unique,
       lastName varchar2(50) not null,
       firstName varchar2(50) not null,
       mobile varchar2(25) unique,
       officeCode number(10) not null,
       jobTitle varchar2(50) not null,
       birth date not null,
       note varchar2(255),
       sex varchar2(5),
       constraints fk_employees_officeCode
       foreign key(officeCode)
       references offices(officeCode)
);

4.3.3 将表employees的officeCode字段改名为eCode

alter table employees
rename column officeCode to eCode;

4.3.4 将表employees的sex字段的数据类型改为varchar2(2),添加非空约束,检查约束

alter table employees
modify sex varchar2(2);

alter table employees
add constraints unique_sex unique(sex);

alter table employees
add constraints ck_sex
check(sex='男' or sex='女');

4.3.5 将表employees的note字段删除

alter table employees
drop column note;

4.3.6 在表employees中添加favorite_activty,数据类型为varchar2(100)

alter table employees
add favorite_activty varchar2(100);

4.3.7 将表offices删除

alter table employees
drop constraints fk_employees_officeCode;
drop table offices;

4.3.8 将表employees改名为employeesInfo

alter table employees
rename to employeesInfo;

第二部分 - Orale 视图操作

1 创建视图

1.1 在单表上创建视图

create table t(
       q number(9),
       p number(9)
);
insert into t
values(3,4);

create view view1 as
select * from t;

1.2 在多表上创建视图

create table t2(
       a number(10) ,
       d number(10) 
);
insert into t2
values(0,12);

create view view2 as
select t.q,t.p,t2.a from t,t2;

1.3 创建视图的视图

create view view3 as
select view1.q,view2. a from view1,view2

2 修改视图

create or replace view view3 as
select * from view1;

3 更新视图

3.1 直接更新

update view3
set  q=9;

3.2 插入记录

insert into view3
values(2,4);

3.3 删除记录

delete from view3
where q=2;

4 删除视图

drop view view2;

5 限制视图

5.1 设置只读

create or replace view view4 as
select * from view3
with read only;

5.2 设置检查

create or replace view view5 as
select * from view3
where p>0
with check option;

第三部分 - Oracle数据操作

1 插入数据

1.1 为表的所有字段插入数据

create table data1(
       id number primary key,
       name varchar2(22) not null,
       age number not null,
       innfo varchar2(100)
);
insert into data1 values(1,'zhangsan',19,'student');

1.2 为表的指定字段插入数据

insert into data1(id,name,age) values(2,'lisi',20);

1.3 同时插入多条记录

insert into data1 values(3,'wangwu',20,'a good boy');
insert into data1 values(4,'chuliu',22,'a good boy');
insert into data1 values(5,'wangwu',18,'a good boy');

1.4 将查询结果插入到表中

create table data2(
       id number primary key,
       name varchar2(22) not null,
       age number not null,
       info varchar2(100)
);
insert into data2
select * from data1
where age>20;

2 更新数据

update data2
set info='his/her age>20'
where age>20;

3 删除数据

delete from data2;

delete from data1
where age<20;

第四部分 - Oracle函数

#1 数学函数
##1.1 绝对值ABS(x)
##1.2 平方根SQRT(x)
##1.3 求余MOD(x,y)
##1.4 向上取整CEIL(x)
##1.5 向下取整FLOOR(x)
##1.6 获取随机数
###1.6.1 返回[0,1]之间的随机数DBMS_RANDOM.RANDOM
###1.6.2 返回[x,y]之间的随机数DBMS_RANDOM.VALUE(x,y)
##1.7 四舍五入
###1.7.1 最接近x的整数ROUND(x)
###1.7.2 保留y位小数位数ROUND(x,y)
###1.7.3 舍到小数点后y位TRUNC(x,y)
##1.8 符号SIGN(x)
##1.9 幂运算
###1.9.1 x的y次方PRWER(x,y)
###1.9.2 e的x次方EXP(x)
##1.10 对数运算
###1.10.1 以x为底y的对数LOG(x,y)
###1.10.2 以e为底x的对数ln(x)
##1.11 三角函数
###1.11.1 正弦函数SIN(x)
###1.11.2 反正弦函数ASIN(x)
###1.11.3 余弦函数COS(x)
###1.11.4 反余弦函数ACOS(x)
###1.11.5 正切函数TAN(x)
###1.11.6 反正切函数ATAN(x)
#2 字符串函数
##2.1 字符串长度LENGTH(str)
##2.2 合并字符串CONCAT(s1,s2)
##2.3 字符串搜索INSTR(s,x)
##2.4字母大小写转换
###2.4.1 全部转换成大写LOWER(str)
###2.4.2 全部转换成小写UPPER(str)
###2.4.3 首字母大写INITCAP(str)
##2.5 获取指定长度的字符串SUBSTR(原字符串,截取的位置,截取的长度)
##2.6 替换字符串REPLACE(原字符串,将要替换的字符串,被替换成的字符串)
##2.7删除字符串首尾字符
###2.7.1 删除字符串s左侧为str的字符串LTRIM(s,str)
###2.7.2 删除字符串s右侧为str的字符串RTRIM(s,str)
###2.7.3 删除字符串s两侧为str的字符串TRIM(str)
##2.8 字符串名称和ID互换
###2.8.1 获取字符串集对应的ID 	NLS_CHARSET_ID(str)
###2.8.2 获取字符串集对应的名称NLS_CHARSET_NAME(str)
#3 日期和时间函数
##3.1 获取系统当前日期 SYSDATE
##3.2 获取系统当前时间 SYSTIMESTAMP
#4 转换函数
##4.1 字符转ASCII码 ASCII(s)

二进制转十进制 BIN_TO_NUM()

--daul:系统表,常用来测试函数
select BIN_TO_NUM(1,1,0) from dual
--输出:6
select BIN_TO_NUM(110) from dual
--输出:错误,参数'110''超出范围

数据类型转换 CAST

select cast(10 as  number(3,1)) from dual
--输出:10.0

数值转换成字符串TO_CHAR

select to_char(098) from dual
--输出:98

转换成格式化日期 TO_DATE

select to_char(sysdate,'yyyy/mm/dd hh:mi:ss') from dual
select to_date('2017-09-08','yyyy-mm-dd') from dual

第五部分 - PL/SQL编程

1 PL/SQL 基本结构

1.1 只包含执行部分

begin
	dbms_output.put_line('PL/SQL的基本单位是块(block)');
end;

--输出:PL/SQL的基本单位是块(block)

1.2 包含声明和执行部分

declare
	number_Avg number;

begin
	number_Avg:=1997;
	dbms_output.put_line(number_Avg);
end;

--输出:1997

1.2 包含声明、执行和异常处理部分

declare
	aNum number;

begin
	aNum:=0;
	aNum:=1/aNum;
	dbms_output.put_line(aNum);

exception
	when ZERO_DIVIDE then
		dbms_output.put_line('0不能作为除数!');
		
end;

/*
	输出:0不能作为除数!
*/

更多参见:
https://user.qzone.qq.com/1395359719/blog/1496132813

第六部分 - 存储过程

https://user.qzone.qq.com/1395359719/blog/1496132891

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值