oracle数据库学习笔记心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle数据库学习笔记心得
select* |字段表名 from 表名 where 布尔表达式【条件】
externalcandidate 职员相关信息 contractrecruiter 猎头公司
查看表里所有字段 describe[描述] contractrecruiter
select cname,nperecentagecharge from contractrecruiter
不显示原来名字,显示现在名字【用 AS】 select cname as "Recruiter Name",nperecentagecharge contractrecruiter 不显示原来名字,显示现在名字【可不用 AS】 select cname "Recruiter Name",nperecentagecharge contractrecruiter 【双引号是否写】 双引号是为了区分大小写
as
"Hire
Fees"
from
"Hire
Fees"
from
职位表
position
select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position
select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position
显示非重复运行 查询来源地的人数 describe externalcandidate
查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】 select distinct ccity,cstate from externalcandidate
运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate
学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California'
一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1 月-70'
加上第二个条件[符合条件,逻辑与] 加上第二个条件[符合条件,逻辑与]: select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1 月-70' and ntestscore>=80
求反,在 where 后面加上个【not】 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where not dbirthdate>='01-1 月-70' and ntestscore>=80
describe newspaper select *from newspaper 匹配模式的运算符 :like 通配符: 个字符; _ 代表一个字符 通配符: % 代表 1~n 个字符; select *from newspaper where cnewspapername like ' %Texas%' and vcontactperson like 'Jackson %' 'Jackson %'以 Jackson 大头的。 '%Jackson'以 Jackson 结尾的。 select vfirstname,vlastname from 名字第二个字母是“ 名字第二个字母是“a” select vfirstname,vlastname from where vfirstname '_a% ' _a% externalcandidate
externalcandidate
想查名字的最后一个字母是%的人:必须利用转义字符【\】 select vfirstname,vlastname from externalcandidate where vfirstname '%\ % '[前面%代表通配符,而后面%代表就是%本身!] escape '\ '[注明那个字符时作为转义字符用的]
即【空值】或者【null 值】
面试时间 select vfi
rstname,vlastname,dinterviewdate from externalcandidate
where
dinterviewdate is null
//
判断字段上是为空的!
select vfirstname,vlastname,dinterviewdate from externalcandidate where dinterviewdate is not null //判断字段上是不为空的!
select vfirstname,vlastname,vemailid,cphone from externalcandidate where vemailid is null
select vfirstname,vlastname,dbirthdate, ntestscore from externalcandidate order by ntestscore [按 ntestscore 排序,默认是升序;aesc 升序 desc 降序 排序,默认是升序; 降序] 按
select cname ,vaddress from contractrecruiter order by cname desc
先按照日期降序,然后再按照年龄降序 select vfirstname,vlastname,dbirthdate, ntestscore from externalcandidate order by ntestscore desc ,dbirthdate desc
作业: 作业:toy 数据库
第三章: 第三章:
1、字符函数 initcap[ 以 大 写 方 式 显 示 字 符 首 字 母 ],lower[ 转 换 成 小 写 ],upper[ 转 换 成 大 写],ltrim,rtrim contractrecruiter 猎头公司
代码: select upper(CNAME) Name, lower(VADDRESS) Address from contractrecruiter
2、 ABS[绝对值 绝对值] ABS[绝对值]、 CEIL[返回大于这个数的最小整数 返回大于这个数的最小整数] CEIL[返回大于这个数的最小整数]、 FLOOR[截取数值的整数部分 截取数值的整数部分] FLOOR[截取数值的整数部分]、 POWER[求几次方 求几次方] POWER[求几次方]、 MOD[返回第一个参数除以第二个参数的余数 返回第一个参数除以第二个参数的余数] MOD[返回第一个参数除以第二个参数的余数]、 ROUND[四舍五入 四舍五入] ROUND[四舍五入]、 TRUNC[]、 TRUNC[]、 SQRT[]
VFIRSTNAME CPHONE NTESTSCORE 代码: SELECT vfirsTname vFirstname, cphone cPhone, ROUND(ntestscore) Marks FROM externalcandidate where ntestscore>70
3 、数据类型转换 varchar2(40) char(40)
表示可变长度, 表示可变长度,最长为 40 表示固定长度, 表示固定长度,固定为 40
第四章:查询多表中数据 四章:
1.用等值联接显示两个表中数据
A. 内链接】 只有满足联接条件的才显示,不联接的不显示 【内链接】 只有满足联接条件的才显示, :只有满足联接条件的才显示 : 个人表 RecruitmentAgencies 和公司表 ExternalCandidate 句式格式: Join on 句式格式: select vfirstname,cname from externalcandidate join recruitmentagencies on recruitmentagencies.cagencycode=externalcandidate.cagencycode [因为表明太长,所以要给表取一个别名] select vfirstname,cname from externalcandidate e join recruitmentagencies r on r.cagencycode=e.cagencycode where ntestscore>=80 [添加一个 where] 句式格式: Where 句式格式: select vfirstname,cname from externalcandidate e,recruitmentagencies r where e. cagencycode = r.cagencycode and ntestscore>=80 [逻辑与 and]
cpositioncode ――――表 externalcandidate(应聘者 CPOSITI
ONCODE ――――表 position(资料 VDESCRIPTION) select vfirstname , vlastname from externalcandidate e join position p on e
.CPOSITIONCODE =p.CPOSITIONCODE 或者: select vfirstname , vlastname from externalcandidate e , position p where e.CPOSITIONCODE =p.CPOSITIONCODE
2、自然联接【两个表中有且仅有同名的条件】 自然联接【两个表中有且仅有同名的条件】 自然联接 有且仅有: 有且仅有: select vfirstname , vlastname from externalcandidate natural join position 非有且仅有: (不能完成)
select vfirstname , cname from externalcandidate natural join recruitmentagencies
3、交叉连接 4、外联接{只有 join on 句式} select ollegecode, ollegename, ampusrecruitmentcode from college co join campusrecruitment ca on ollegecode=ollegecode 我们一般都用 outer join on left|right|full outer join select ollegecode, ollegename, ampusrecruitmentcode from college co left outer join campusrecruitment ca on ollegecode=ollegecode 这种句式是在 Oracle 在身上用的。 select ollegecode, ollegename, ampusrecruitmentcode from college co, campusrecruitment ca where ollegecode=ollegecode(+) 作业:
第5课
Externalcandidate 表 Monthlysalary 表 Newspaper 表
Newsad 表【投广告】 Recruitmentagencies 推荐公司 一、多行函数: Avg:返回 n 个数据的平均值 select avg(列名) from (表名) select avg(ntestscore) from externalcandidate
where (条件)
Sun:返回 n 个值的总和 select sun(列名) from (表名) select sum(NMONTHLYSALARY ) from Monthlysalary
where (条件)
Max:返回一列中的最大值 select max(列名) from (表名) select max(ntestscore) from externalcandidate
Min:返回这一列的最小值 select min(列名) from (表名) select min(ntestscore) from externalcandidate
Count:显示查询的行数---------[包括 null 值] select count(列名) from (表名) where (条件) select
count(*) from externalcandidate
Stddev:返回一组值得标准偏差 select stddev (列名) from (表名) Variance:返回一组值的方差 select Variance (列名) from (表名) 例题: select max(NPERCENTAGECHARGE ) "Maximum Hiring Changes", min(NPERCENTAGECHARGE ) "Minimum Hiring Changes", avg(NPERCENTAGECHARGE ) "Avarage Hiring Changes" from contractrecruiter where ccity='Alexandria'
二、组合函数
Group by: Select From Where Group by Having 列 1,列 2 表名 条件 杯分组的列名 条件
select from newsad where 例题: select
cnewspapercode "Newspaper Code", count(cnewsadno) "No.of.Advts.Placed" from newsad group by cnewspapercode
select r.CAGENCYCODE , count (ANDIDATECODE ) from recruitmentagencies r left outer join externalcandidate e on r.CAGENCYCODE=e.CAGENCYCODE group by r.CAGENCYCODE Having:后面的条件是对 group by 后的条件 现 在 需 要 对 至 少 三 个 申 请 者 的 职 位 进 行 分 析 。 要
求 报 表 显 示 “ Position Code ” "No.of.Application"列 select CPOSITIONCODe "Position Code", count(ccandidatecode) "No.of.Application" from externalcandidate g
roup by CPOSITIONCODe having count(ccandidatecode)>=3 select CCITY , count(VQUALIFICATION) "MBA" from externalcandidate where VQUALIFICATION='MBA' group by ccity
第 6 章:子查询
1、单行子查询 查询面试者中成绩最高的人的姓名,电话号码等信息! select vfirstname, vlastname, cphone from externalcandidate where ntestscore= ( select max(ntestscore) from externalcandidate )
2、多行子查询 select CNEWSPAPERNAME , vtypeofnewspaper from newspaper where cnewspapercode in ( select cnewspapercode from newsad group by cnewspapercode having count(cnewsadno)>3 )
第 7 章 DDL
1、 以行列形式存储数据------表 按照逻辑次序表示数据或数据字集------视图 自动生成顺序的数值-----序列【每个值都不是重复的】 增强查询性能------索引 为对象分配备选的名字------同义词 2、表----用户表和数据字典 (1)、查看数据库里面的所有用户表:select * from user_table (2)、命名规则:以字母开头 (3)、创建表: create table 表名 ( 字段的定义 1 名称 数据类型【名字+长度】 约束定义【】 默认值, 字段的定义 2 名称 数据类型【名字+长度】 约束定义【】 默认值, ……………… ) 步骤: (1)确定表名 (2)确定表的属性 (3)确定每个属性的数据类型 (4)确定每个属性的长度 (5)设计创建表的语句 create table students ( cstudentcode char(4) not null, vfirstname varchar2(20) not null, vmiddlename varchar2(5),
vlastname varchar2(20), vaddress varchar2(35), ccity char(20), cstate char(20), cphonte char(16) )) 创建好后可以通过 describe students 来查看
(4)、更改表结构:添加列,删除列…… 更改表结构:添加列,删除列…… 更改表结构 alter table 表名 字段定义【添加字段】 add 字段定义【添加字段】 alter table students add ddateofbirth date not null modify 修改列 alter table students modify vmiddlename varchar2(10)
字段名— drop colume 字段名—删除字段名 alter table students drop column ddateofbirth
<原表名 原表名> <现在表名 现在表名> rename <原表名> to <现在表名> (5)、撤销表---删除表 drop table 语句 drop table <表名>
第 8 章 管理表和实施数据完整性 DML
查看表中的约束条件: 查看表中的约束条件: Select*from user_constraints table_name=’’ Where table_name=’’
INSERT() UPDATE DELETE() 1、 添加表中行 <表名>[(字段列表 表名>[(字段列表)] //字段列表默认情况下是全部字段 //字段列表默认情况下是全部字段 insert into <表名>[(字段列表)] values(值列表 ----新一行每个字段的值 新一行每个字段的值) values(值列表 1—----新一行每个字段的值),
----新
一行每个字段的值 新一行每个字段的值) (值列表 2—----新一行每个字段的值), ----新一行每个字段的值 新一行每个字段的值); (值列表 3—----新一
行每个字段的值); 语句是实现永久生效的, ;若不添加 只能是生成预览效果) commit;(commit 语句是实现永久生效的, 若不添加 commit 只能是生成预览效果) ; 值列表与字段列表必须要个数一样,顺序一样! 值列表与字段列表必须要个数一样,顺序一样!
例题: insert into recruitmentagencies values ('0010','Head Hunters','Hill Street','Clevland','Ohio', '44167-5943','(440)345-8872','(440)345-8943',7,1000); commit;
2、 更新表中的行-------一次只能更改一个表中的数据,但是可以更改不唯一的字段 更新表中的行-------一次只能更改一个表中的数据, -------一次只能更改一个表中的数据 <表名 表名> update <表名> 1=新值 2=新值 set 字段 1=新值 1,字段 2=新值 2,………… 布尔表达式{可以不写} where 布尔表达式{可以不写}
例题: update employee set cdepartmentcode=’0009’ where CEMPLOYEECODE=’000015’ 例题: update externalcandidate set NTESTSCORE ='79' where CCANDIDATECODE ='000049'; commit; 3、 删除表中的行 <表名 表名> delect from <表名> where 布尔表达
例题: delete from recruitmentagencies where CAGENCYCODE=’0010’; commit; <表名 表名> 清除表中记录 truncate table <表名> 如果你不写 commit,那么再写一个 rollback 回滚。那么数据又恢复到以前状态。 4、数据完整性 数据完整性 实体完整性: 域完整性: 引用完整性: 用户定义完整性:
5、定义约束
: 【主键约束】 系统随机给你定义一个主键名 主键约束】 create table students ( vstudentcode char(4) primary key, //主键列 vfirstname varchar2(20) not null, vlastname varchar2(20) not null ) 或者:自定义主键名 create table students ( cstudentcode char(4), //主键列 vfirstname varchar2(20), vlastname varchar2(20), constraint 约束】 约束名 【 【自己取, 不能喝数据里面的重复】 primary key(cstudentcode) // constraint pk_students primary key(cstudentcode) ) 】 【外键约束: 外键约束: create table students ( cstudentcode char(4) primary key, //主键列 vfirstname varchar2(20), vlastname varchar2(20), foreign key(cclasscode) references class(cclasscode) //外键约束 ) 【唯一约束[check]: 唯一约束[check]: [check] 】 create table class ( cclasscode char(4), vclassname varchar2(20) not primary key (cclasscode) ) select *from user_constraints where table_name ='CLASS'
null unique,
: 【检查约束】 检查约束】 Not Null 约束: create table students ( cstudentcode char(4) primary key, vfirstname varchar2(20) vlastname varchar2(20) not null, cclasscode char(4), nage number, foreign key(cclasscode) references class(cclasscode), ch
eck(nage between 1 and 150) )
not null,
select *from user_cons_colums
】 【添加约束: 添加约束: alter table 表名 add constraint 约束名 foreign key (约束字段)
reference 参照表明(
约束字段)
[撤销约束:] 撤销约束: 撤销约束 alter table 表名 drop constraint 约束名
】 【禁用和启动约束: 禁用和启动约束: 禁用:alter table 表名 启用:alter table 表名
disable constraint 约束名 enable constraint 约束名
第 9 章 使用事务
transaction 事务 事务:把一串一起执行的操作作为单个逻辑工作单元处理! 事物四个属性: ACID 事物四个属性: 【原子性 Atomicty, , 一致性 Consistency, , 隔离性 Isolation, , 持久性 Durability】 】 事务的开始和终止: 事务的开始和终止: 开始:执行事务里的第一条 DML 语句(非查询语句)开始 终止:(1)接受或拒绝事务所做的变动 commit—递交 rollback----回滚 递交 回滚 (2)当你使用 DDL 语句(如 create)创建数据库对象
(3)当你执行一条 DCL 语句 (4)机器发生故障或系统崩溃,[回滚 rollback] 正常退出----------事务提交 Autocommit 自动提交-------影响事务的原子性! 保存点: 保存点:savepoint Dml1; Dml2; Dml3;
部分回滚,回滚点保存点,节省资源。 部分回滚,回滚点保存点,节省资源。一个事务中可以写多个保存点
……
Dmln; Savepoint sp1; Dml n+1; Dml n+2; 错误点
……
Dml n+n; Rollback sp1;
第 10 章 使用视图
View: : 视图是一个或者多个表(或其他视图)中导出的行或列的子集。 视图是一个或者多个表(或其他视图)中导出的行或列的子集。 视图是一个虚拟表。 视图是一个虚拟表。 视图只是给我们提供了一观察基表数据的窗口。 视图只是给我们提供了一观察基表数据的窗口。
删除视图,并不能改变基表的内容。 删除视图,并不能改变基表的内容。 select vfirstname, vlastname, vqualification, vskill from employee join positionskill on urrentposition =positionskill.cpositioncode join skill on positionskill.cskillcode=skill.cskillcode 】 【创建视图: 创建视图: create view 视图名
as 查询语句
例子: 【例子:DDL】
create view view_employeeskill as select vfirstname,
vlastname, vqualification, vskill from employee join positionskill on urrentposition =positionskill.cpositioncode join skill on positionskill.cskillcode=skill.cskillcode
【查看视图: select *from 查看视图: 】
view_employee
】 【更改视图: 更改视图: create or replace view 新视图名
as 新的查询语句
】 【撤销视图: 撤销视图: drop view 视图名
第 11 章 使用其他数据库对象
序列: 序列: Create sequence 序列名 Increment by 1 Start with 1 【序列第一个值】
序列第一个值】 Maxvalue 10000| nomaxvalue 【递增序列】 递增序列】 Minvalue 1| nomivalue Nocycle Cache 20 下一个值】 序列名.Nextval 【下一个值】 当前值】 【Currval 当前值】 【例题: 】 创建表: Create table company ( N
companyid number, Vcompanyname carchar2(20) Caddress varchar2(50), Primary key (Ncompanyid ) )
not null,
创建序列: Create sequence seq_company Increment by 1 Start with 1 Nomaxvalue Minvalue 1 查看序列: Select *from user_sequences
插入记录: Insert into company Values (seq_company.nextval,’无锡 NIIT’,’无锡新区震泽路 18 号’); Commit;
Insert into company Values (seq_company.nextval,'无锡海辉软件','无锡新区震泽路 18 号'); Commit;
Insert into company Values (seq_company.nextval,'中软国际','无锡新区震泽路 18 号'); Commit;
Insert into company Values (seq_company.nextval,'永中科技','无锡新区震泽路 18 号'); Commit;
Insert
into company
Values (seq_company.nextval,'物联网','无锡新区震泽路 18 号'); Commit;
索引: 索引:index
创建索引: 创建索引:
Create
index 索引名 On 表名(字段列表)
删除索引: 删除索引: Drop index 索引名
同义词:别名 同义词:
创建同义词: 创建同义词: Create 【public】synonym 同义词名 for 数据库对象名 [只有管理员才 public 公共同义词, 私有同义词是任何人都可以创建、 自己使用。 ]
第 12 章 管理用户访问
1、 、 创建账户: create user 创建的用户名 identified 创建账户: 2、赋予用户访问权: grant 权限 to 、赋予用户访问权: 某用户 3、管理员修改密码: 修改密码: alter user 用户 identified by 密码 、管理员修改密码 4、用户自己修改密码: password: 、用户自己修改密码: Old password: 原密码 New password :新密码 新密码 Retype new password:重复输入新密码 重复输入新密码 by 密码
5、撤销用户: 、撤销用户:
drop user 用户名 cascade Cascade 表示:撤销帐号并删除该帐号所创建的所有表 表示:
6、角色:类似于用户组 、角色: