| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

oracle资料

落***嗯

贡献于2018-07-03

字数:32398

 SQLPlus
Q进入sqlplus?
A 运行中输入sqlplus

Q连接?
A scotttiger

查询emp表:
SELECT*FROM emp

排版?
SET LINESIZE300设置行显示数
SET PAGESIZE30设置页显示记录数

Sqlplus中输入方便(修改行)没输入方法?
@e:文件名
找应文件运行

户?
Conn systemmanager
查前户?
SHOW user
查户信息?
SELECT*FROM SCOTTEMP
*连接户时输入密码显示

查前户表?
SELECT tname FROM tab
知道标表结构?
DESC emp
字段类型?
 NUMBER(4)数字类型长度4
‚ VARCHAR2(10)字符串类型长度10
ƒ DATE: 时间类型
④ NUMBER(72):数字类型7位中数占2位

解锁账号密码:
ALTER USER scott ACCOUNT UNLOCK
CONN scott
输入新口令两遍


1 课程名称:sql语句
章容:
简单查询
限定查询
单行函数
2 需表
讲解中需scott户表namescott表?
EMPBONUSDEPTSALGRADE

EMP雇员表
编号
字段
类型
备注
1
EMPNO
NUMBER(4)
雇员编号
2
ENAME
VARCHAR(10)
雇员名称
3



4



5



6



什sql?
SQL(Structured Query Language)

3简单查询
语法格式:
SELECT*|字段 FROM 表名称
范例:查询全部
SELECT*FROM emp

范例:查询雇员编号姓名工作
SELECT empnoenamejob FROM emp
范例:查询时候列起名
SELECT empno 编号ename 姓名job 工作 FROM emp
范例:查询工作(DISTINCT)
SELECT DISTINCT job FROM emp
范例:求查询出雇员编号姓名求格式:(||’’)
编号:7369雇员姓名:SMITH工作室:CLERK
SELECT 编号:’||empno||雇员姓名:’||ename||工作室:’||job
FROM emp
范例:运四运算求出雇员姓名年薪
SELECT enamesal*12 年薪 FROM emp

4 限定查询

语法格式:

范例:查询出工资1500雇员信息
SELECT * FROM emp WHERE sal >1500
范例:查询没奖金雇员
SELECT * FROM emp WHERE comm IS NULL
查询奖金雇员?
SELECT * FROM emp WHERE comm IS NOT NULL
范例:1求查出基工资1500时领取奖金雇员
2commNULL两条件需时满足AND
SELECT*FROM emp WHERE sal>1500 AND comm IS NOT NULL
范例:查出基工资1500者领取奖金雇员信息(者OR链接)
SELECT*FROM emp WHERE sal>1500 OR comm IS NOT NULL
范例:求查出基工资1500时领取奖金雇员信息
SELECT*FROM emp WHERE sal<1500 AND comm IS NULL
范例:基工资15003000全部雇员信息(BETWEENAND)
SELECT*FROM emp WHERE sal>1500 AND sal<3000
语法格式
SELECT*FROM 表名称 WHERE 字段 BETWEEN 值 AND 值


述办法稍微麻烦BETWEENAND解决
SELECT*FROM emp WHERE sal BETWEEN 1500 AND 3000
述结果表明betweenand包含值

范例:查询出1981年雇佣全部雇员信息
SELECT*FROM emp WHERE hiredate BETWEEN 11 月 81’AND 3112月 81’
范例:查出姓名Smith雇员信息
SELECT*FROM emp WHERE ename smith’
结:SQL语法区分写数容严格区分写

范例:查询雇员编号736974997521(IN)
SELECT*FROM emp WHERE empno7369 OR empno7499 OR empno7521
述麻烦IN解决
SELECT*FROM emp WHERE empno IN(736974997521)
范例:查询ALLENKING雇员信息
果指定查询范围中指定额外容影响程序运行
SELECT*FROM emp WHERE ename IN(ALLEN’’KING’’dddddff’)

LIKE生活中like查询
通配符:
:匹配意长度容
_:匹配长度容
范例:查询出雇员姓名中第二字母包含M雇员信息
果没关键字会样?
SELECT*FROM emp WHERE ename LIKE _M’
范例:查询出雇佣1981雇员信息
SELECT*FROM emp WHERE hirdate LIKE 81’
范例:查询出工资中包含6雇员信息
SELECT*FROM emp WHERE sal LIKE 6’
SQL语句中判断运算符?
> < <>

5 结果进行排序(ORDER BY字句)
语法格式:
SELECT {DISTINCT}*|字段1字段2
FROM 表名
WHERE 条件(s) AND|OR条件(s)

ORDER BY 字段名称 ASC|DESC
范例:求工资低高排序
SELECT*FROM emp ORDER BY sal
SELECT*FORM emp ORDER BY sal ASC
结:默认排序方式升序排列
范例:求工资高底排列
SELECT*FROM emp ORDER BY sal DESC
范例:求查询出10部门雇员信息查询信息工资高低排序果工资相等古铜日期早晚排序
*解析
SELECT*
FROM emp
WHERE deptno10
ORDER BY sal DESChirdate ASC


6 单行函数
数库系统中数库间区函数支持函数完成系列操作功
61字符函数
介绍:
范例:写字母变写字母(UPPER)
SELCET UPPER(hello’)FROM dual
范例:查询时没考虑名字写保证查询?
SELECT*FORM emp WHERE enameUPPER(simth’)

范例:写字母变成写字母(LOWER)
SELECT LOWER(HELLO’)FROM dual
范例:单词第字母编程写INITCAP
SELECT INITCAP(HELLO’)FROM dual

范例:雇员表中雇员姓名变开头字母写
SELECT INITCAP(ename)FROM emp
范例:字符串||连接外CONCAT()函数进行连接操作
SELECT CONCAT(enamesal)FROM emp
CONCAT连接字符串没||
范例:字符串进行操作进行字符串截取求出长度进行指定容换
*字符串截取:substr()
*字符串长度 :length()
*容换:replace()
SELECT SUBSTR(hello’03)字符串截取
replace(hello’’i’’o’)容换
Length(hello)字符串长度
提示:substr中01开始效果样

范例:求显示雇员姓名姓名三字符
SELECT enamesubstr(enamelength(name)23)FROM emp

62数值函数
包含:
*四舍五入:ROUND()
*截取数位:TRUNC()
*取模(取余):MOD()
范例:四舍五入操作
SELECT RPUND(31415926)FROM dual
范例:保留两位数
SELECT ROUND(314159262)FROM dual
直接整数进行四舍五入进位
SELECT ROUND(12160982)FROM dual
范例:验证TRUNC()函数
SELECT TRUNC(1216098)FROM dual
结:发现round具四舍五入功直接舍

范例:通TRUNC()指定数点保留位数
SELECT TRUNC(12160981)FROM dual
范例:负数表示位数
SELECT TRUNC(12160982)FROM dual
范例:MOD()函数进行取余操作
SELECT MOD(12160981)FROM dual


63日期函数
Oracle中提供日期操作相关函数包括加减日期等等日企进行加减时候规律:
*日期数字日期
*日期+数字日期
*日期日期数字(天数)
范例:显示10部门雇员进入公司星期数
*分析:果求出进入公司天数必须知道现时间
SELECT SYSDATE FROM dual
*求出星期数:前日期雇日期天数7星期数
SELECT (SYSDATEHIREDATE)7 FROMemp
Oracle中提供日期函数支持:
*MONTHS_BETWEEN()求定日期范围月数
*ADD_MONTHS()指定日期加制定月数求出日期
*NEXT_DAY()星期天日期
*LAST_DAY()求定日期改约天日期
范例:验证MONTHS_BETWEEN()员工已雇佣少月
SELECT MONTHS_BETWEEN(SYSDATEhiredate) FROM emp
陈旭查询中包含数点课ROUND()进行四舍五入操作
SELECT ROUND(MONTHS_BETWEEN(SYSDATEhiredate)) FROM emp
范例:验证ADD_MONTHS()函数
SELECT ADD_MONTHS(SYSDAE3) FROM emp
范例:验证NEXT_DAY()函数(周)
*函数求出定日期数
SELECT NEXT_DAY(SYSDATE’星期五’) FROM dual
范例:验证LAST_DAY()函数
*求出月天
SELECT LAST_DAY(SYSDATE) FROM dual
64转换函数
转换函数种:
*TO_CHAR()转换成字符串
*TO_NUMBER()转换成数字
*TO_DATE转换成日期
范例:查询雇员编号姓名雇日期
SELECT empnoenamehirdate FROM emp
TO_CHAR()现求年月日进行分开时TO_CHAR()函数进行拆分拆分时候必须知道拆分通配符:
*年:yyyy:表示4位份值
*月:mm:表示2位月份
*日:dd:表示2位日期值
SELECT empnoenameTO_CHAR(hiredate’YYYY’)年
TO_CHAR(hiredate’MM’)月
TO_CHAR(hirdate’DD’)日
FROM emp
to_char()函数进行日期显示转换功
*oracle中默认日期格式:235月87
*中国喜欢日期格式:1999222
SELECT TO_CHAR(hiredate’YYYYMMDD’)FROM emp
SELECT TO_CHAR(hiredate’’FMYYYYMMDD’)FROM emp
运行结果发现(fm):日期值19前面会0补齐fm
to_char()函数日企数字

范例:查询全部雇员编号姓名工资数字钟加入符号分割太长数字
*通配符:9表示数字
SELECT empnoenameTO_CHAR(sal’9999999’)FROM emp

果时希数字明确表示出取余两种符号:
*:表示美元符号
*L表示语言钱符号
SELECT empnoenameTO_CHAR(sal’9999999’)FROM emp
SELECT empnoenameTO_CHAR(sal’L9999999’)FROM emp
TO_NUMBER()字符串变数字种函数
SELECT TO_NUMBER(99’)+1 FROM emp
吧字符串变数字进行数字加法操作

TO_DATE():函数讲字符串变DATE类型数
范例:2016216字符串现变DATE类型
SELECT TO_DATE(2016216’’YYYYMMDD’) FROM dual


65通函数
介绍种:
NVL()NULL
DECODE()相SWITCH
范例:求求出雇员年薪
求出年薪时候应该加奖金格式(sal+comm)*12
SELECT (sal+comm)*12 FORM emp
NVLcommNULL时NULL加数NULLNVL吧NUMBER类型NULL转换指定数字
SELLECT NVL(comm10)FROM emp
DECODE函数DECODE()类似SWITCH CASE CASE 语句
语法:
DECODE(值值1容1值2容2’默认值’)
范例:验证DECODE()函数
SELECT DECODE(31’AAA’2’BBBBB’3’CCCCC’)FROM dual
运行结果程序容景行更改显示结果变
直接emp表函数例:现求:
*雇员工作
CLERK业务员
SALESMAN售货员
PRESIDENT总裁
MANAGER理
ANALYST:分析员
范例:求查询出雇员编号姓名雇佣日期工作工作换成信息
SELECT DECODE(job’clerk’’业务员’’SALESMAN’’售货员’’业’)FROM emp

8练
1查询部门30 雇员信息
2列出业务员(CLERK)姓名编号部门编号
3找出奖金高薪金员工
4找出奖金高薪金40员工
5找出部门10中理(MANAGER)部门20中业务员(CLERK)详细资料
6找出部门10中理(MANAGER)部门20中业务员(CLERK)理办事员气薪金等2000员工详细资料
7找出收取佣金员工工作
8找出收取佣金收取佣金低100员工
9找出月倒数第3天受雇员工
10找出早30年前受雇员工
11首字母写方式显示员工姓名

12显示正5字符员工姓名
13显示带R员工姓名
14显示员工姓名前三字符
15显示员工姓名a换A
16显示满30年服务年限员工姓名受雇日期
17显示员工详细资料姓名排序
18显示员工姓名受雇日期根服务年限老员工排前面
19显示员工姓名工资奖金工作降序排序工作相薪金升序排序
20显示员工姓名加入公司年份月份受雇日期月排序月份相早年份员工排前面
21显示月30天情况员工日薪金忽略余数
22找出(年份)2月首批员工
23员工显示器加入公司天数
24显示名字字段位置包含A员工姓名
25年月日方式显示员工服务年限
第二讲:
预讲知识点:
1表查询SQL:1999语法表查询支持
2分组统计统计函数
3字查询结合表查询分组统计做复杂查询
4数库更新操作
5食物处理数库死锁
1 表查询
11表查询基语法
前查询时张表果张表称表查询表查询语法:
SELECT{DISTINCT}*|查询列 1名1查询 2名2
FROM 表名称 1 名1表名称2 名2
{WHERE 条件(s)}

{ORDER BY 排序字段 ASC|DESC排序字段ASC|DESC}
范例:面表查询事查询empdept表
SELECT*FROM emp dept
发现:出现56条数emp表14条数dept表4条数
56条记录emp表14条记录*dept表4条记录果表数越name笛卡尔积会越开发中简易表查询
想掉笛卡尔积必须字段进行关联操作
emp表中存deptno字段dept表中存deptno字段发现emp表中deptno取值范围dept表deptno’规定范围中
Emp中deptnodept中deptno属关联字段
表查询中加入where语句消笛卡尔积

范例:修改前查询操作(关联操作)
SELECT*FROM empdept WHERE empdeptnodeptdeptno
SELECT*FROM emp edept d WHERE edeptnoddeptno
果表名长话表起表名

范例:求查询出雇员编号雇员姓名部门编号部门名称部门位置
SELECT eempnoeenameddeptnoddnamedloc
FROM emp edept d
WHERE edeptnoddeptno
范例:求查询出雇员姓名工资雇员直接级领导姓名
SELECT eenameejobmename
FROM emp eemp m
WHERE emgrmempno

emp表中mgr表示领导编号果现想查询雇员级领导必须emp表身相关联

范例:体基础进步扩展时需领导部门列出
SELECT eenameejobmenameddname
FROM emp eemp mdept d
WHERE emgrmempno AND ddeptnoedeptno
思考:
现求查询出雇员姓名工资部门名称工资公司等级(salgrade)领导姓名工资公司等级
*先确定工资公司等级
*判断查询张表查询条件查询字段
SELECT eenameesalddnamesgrademenameggrade
FROM emp edept dsalgrade semp msalgrade g
WHERE edeptnoddeptno AND esal BETWEEN slosal AND shisal
AND NVL(emgreempno)mempno AND msal BETWEEN glosal AND ghisal

时完成第步:雇员姓名工资部门名称工资公司等级(salgrade)
分解:领导姓名工资公司等级

12 左右连接(重点)
现dept表中存四条数:
empdept表关联查询查询字段:雇员编号姓名部门编号名称址
SELECT eempnoeenameddeptnoddnamedloc
FROM emp edept d
WHERE edeptnoedeptno
发现:查询14行数中emp表数全部查询出发现dept表中编号40部门没查询出原emp表中没40部门员工
SELECT eempnoeenameddeptnoddnamedloc
FROM emp edept d
WHERE edeptno(+)ddeptno
发现时40部门应出现时右链接开发较
*(+)左边表示右连接
*(+)右边表示左连接

范例:查询雇员编号姓名领导编号姓名
SELECT eempnoeenamemempnomename
FROM emp eemp m
WHERE emgrmempno(+)
13 SQL1999语法SQL支持(解)
SQL语法格式
SELECT table 1columntable 2column
FROM table1[CROSS JOIN table2]|
[NATURAL JOIN table2]|
[JOIN table2 USING (column_name)]
[JOIN table2 ON(table1column_nametable2column_name)]
[LEFT|RIGHT|FULL OUTER JOIN table2 ON(table1column_nametable2column_name)]
范例:交叉连接(CROSS JOIN)产生笛卡尔积
SELECT*FROM emp CROSS JOIN dept
查询出56行记录已产生笛卡尔积

范例:然连接(NATURAL JOIN):动进行关联字段匹配
SELECT*FORM emp NATURAL JOIN dept
范例:USING居:直接关联操作系列
SELECT*FROM emp JOIN dept USING(deptno)
范例:ON字句:户子字句编写连接条件
SELECT*FROM emp e JOIN dept d ON(edeptnoddeptno)
范例:做链接(左外连接)链接(右外连接):LEFT JOINRIGHT JOIN
SELECT*FROM emp e RIGHT OUTER JOIN dept d
ON(deptnoddeptno)
2 组函数分组统计(重点)
分组:例吧男生分组 女生分组
果想求出组均身高均年龄等需分组函数
21 组函数
SQL 中常组函数:
*COUNT()求出全部记录数
*MAX():求出组中值
*MIN():求出值
*AVG():求出均值
*SUM():求
范例:COUNT()函数
SELECT COUNT(*)FROM emp
范例:MAX()MIN()般数字应
*求出雇员中高工资
SELECT MAX(sal)FROM emp
*求出雇员中低工资
SELECT MIN (sal)FROM emp
范例:求均值
*求出20部门中总工资(sum)
SELECT SUM(sal)FROM emp WHERE deptno20
*求出员工均工资(avg)
SELECT AVG(sal)FROM emp

22分组统计
想分组统计首先应该固定语法GROUP BY进行分组时SQL语法格式:
SELECT{DISTINCT}*|查询列1 名1查询2 名2
FROM 表名1 名1表名称2 名2
{WHERE 条件(s)}
{GROUP BY分组条件}
{ORDER BY排序字段 ASC|DESC排序字段ASC|DESC}
范例:求出部门雇员数量肯定应该部门编号(deptno)划分
SELECT deptnoCOUNT(emptno)
FROM emp
GROUP BY deptno
范例:求出部门部门编号均工资
SELECT deptnoAVG(sal)
FROM emp
GROUP BY deptno
注意点:观察代码
SELECT deptnoempnoCOUNT(empno)

FROM emp
Group by deptno
代码正确执行原:
*程序中存GROUP BY制定分组条件样条件起查询出
*果适分组话单独分组函数
*非分组字段查询

范例:部门分组显示部门名称部门员工数
SELECT ddnameCOUNT(eempno)
FROM emp edept d
WHERE edeptnoddeptno
GROUP BY ddname
范例:求显示出均工资2000部门编号均工资
*条件:AVG(sal)>2000
SELECT deptnoAVG(sal)
FROM emp
WHERE AVG(sal)>2000
GROUP BY deptno
代码报错原分组函数分组中允许WHERE中出现果现假设制定分组条件通第二种条件指令:HAVING时SQL语法格式:
SELECT{DISTINCT}*|查询1 名1查询2 名2
FROM表名称1 名1表名称2 名2
{WHERE 条件(s)}
{GROUP BY 分组条件{HAVING 分组条件}}
{ORDER BY 排序字段ASC|DESC排序字段ASC|DESC}

范例:HAVING 完成操作
SELECT deptnoAVG(sal)
FROM emp
GROUP BY deptno HAVING AVG(sal)>2000
范例:显示非销售员工作名称事统工作雇员工资综合满足事意工作雇员月工资合计55000输出结果月工资合计升序排列:
1显示全部非销售员:job<>’SALESMAN’
2工作分组事求出工资综合
SELECT jobSUM(sal)
FROM emp
WHERE job<>’SALSMAN’
GROUP BY job HAVING SUM(sal)>5000
ORDER BY SUM(sal)ASC
分组简单原:
*列存重复容菜考虑分组
注意:
*分组函数嵌套组函数嵌套时候出现分组条件查询语句
范例:求出均高部门工资
错误代码:

23 子查询
子查询查询部包括外查询次查询称子查询子查询格式:
SELECT{DISTINCT}*|查询列1 名1查询列2 名2
FROM 表名称1 名1表名称2 名 2
(SELECT {DISTINCT}*|查询列1 名1查询列2 名2
FROM 表名称1 名1表名称2 名 2
{WHERE 条件(s)}
{GROUP BY 分组条件 {HAVING 分组条件}}
{ORDER BY 排序字段ASC|DESC排序字段ASC|DESC}
)名
{WHERE 条件(s)
(SELECT {DISTINCT}*|查询列1 名1查询列2 名2
FROM 表名称1 名1表名称2 名 2
{WHERE 条件(s)}
{GROUP BY 分组条件 {HAVING 分组条件}}
{ORDER BY 排序字段ASC|DESC排序字段ASC|DESC}


}
{GROUP BY分组条件{HAVING 分组条件}}
{ORDER BY 排序字段 ASC|DESC排序字段ASC|DESC}
范例:求查询出7654工资搞全部雇员信息
*首先知道7654雇员工资少
*结果作续查询工资sal表示符合条件
SELECT*FROM emp where sal>(select sal from emp where empno7654)
子查询必须()中编写

子查询操作中分三类:
*单列子查询:返回结果列单列出现率高
*单行子查询:返回列条完整记录
*行子查询:返回条记录
范例:求查询出工资7654高时7788事相工作全部雇员信息
*查询出7654工资
*查询出7788工资
*综合两条件查询
Select*from emp
Where sal>(select sal from emp where empno7654) and job(select job from emp where empno7788)
范例:求查询出工资低雇员详细信息
*低工资
*低工资条件查询低工资相等
Select*from emp where sal(select min(sal) from emp)

思考题:
求查询出:部门名称部门员工数部门局工资部门低收入雇员姓名
解析:
程序需关联两张表
select rsdnrsctrsageename 低
from emp e
(select ddname dncount(eempno) ctavg(esal) agmin(esal) mn
from emp edept d
where edeptnoddeptno
group by ddname)rs
where esalrsmn
问题分三步走:
1果想求出部门员工数量评价工资肯定分组统计deptnoi进行分组
2果想查出部门名称需dept表进行关联
3求出低收入雇员姓名
Select ddnameCOUNT(eempno)
From emp edept d
Where edeptnoddeptno
Group by ddname
果时部门中时存两工资低雇员程序会出现错误
子查询中存三种查询操作符号:
*IN
*ANY
*ALL
IN操作符制定查询范围
范例:求出部门低工资雇员信息
*部门低工资返回值肯定锁时IN制定操作
范围
Select * from emp e
Where sal IN (select min(sal)from emp group by deptno)
ANY操作:完成题
*ANY效果等IN
Select * from emp e
Where sal ANY (select min(sal)from emp group by deptno)
*>ANY值
*>ANY值
ALL操作:
*>值
*>值
子查询讲进行列子查询子查询中时返回喝查询列
Select *
From emp
Where(salNVL(comm1))in(select salNVL(comm1)from emp where deptno20)
3 数库更新操作
数库操作分两种:
*数库查询操作:select
*数库更新操作:insert(增加)update(修改更新)delectable(删)
时保证原始emp表信息进行增加修改删操作前先表赋值份:
Create table test as(select*from emp)
*语句讲emp表机结构数完整复制出

31添加数
添加数语法:
Insert into 表名称[(字段名称1字段名称2)]values(值1值2)
范例:test表中添加条新纪录
*标准做法插入条数(推荐)
Insert into test(empnoenamejobmgrhiredatesalcommdeptno)values(1111’老王’查水表7369sysdate1000null20)
创建完成面进行查询操作观察记录否已myemp表中:
必须次提醒:
*数字加’字符串必须加
简略写法(推荐)现添加字段容处写字段名称值数量序数表中致
Insert into test values(1111’老王’查水表7369sysdate1000null20)
范例:现求插入新雇员雇员展示没领导没奖金
*第种做法:明确写出插入字段
Insert into test(empnoenamejobhiredatesaldeptno) values(444’哦哦’’查水表’sysdate100020)
查询结果发现新插入数里面没领导没奖金
*第二种做法:果插入没明确写出字段名称话null表示具体容
Insert into test(empnoenamejobmgrhirdatesalcommdeptno)values(5555’老王’’查水表’nullsysdate1000null20)
前插入数时候日期格式表中固定种格式果现样日期20160116日期格式name现八折中格式日期插入进呢?
Insert into test(empnoenamejobmgrhiredatesalcommdeptno)values(6666老王’’查水表’7369’16月16’1000null20)
Insert into test(empnoenamejobmgrhiredatesalcommdeptno)values(6666老王’’查水表’7369TO_DATE(’20161010’’yyyymmdd’)1000null20)
32修改数
SQL语法中UPDATE语句完成数修改功语句语法:
修改全部:UPDATE 表名称 SET 修改字段 新值修改字段
般开发角度讲修改操作般加入修改条件
范例:现test表中雇员佣金修改1000修改全部
Update test set comm1000
范例:编号3333雇员工资修改5000指定更新条件
Update test set sal5000 where empno3333
范例:编号3333雇员领导编号取消
Update set mgrbull where empno3333
注意:工作中更新时需写更新条件拒绝批量更新
范例:736988997788领导奖金取消
Update test set mgrnullcommnull where empno in(736988997788)
33 删数
SQL语句中delete命令删记录语法格式:
删全部:delete from表名称
删局部:delete from表名称where删条件
范例:删编号3333雇员信息
Delete from test where empno3333
范例:删编号333344445555雇员信息
Delete from test where empno in(333344445555)

范例:删全部领取奖金雇员
Delete from test where comm is nto null
范例:删表全部容
*删时知道删条件表示删表中全部记录
Delete from test
删全部做法开发中建议
4 事物处理
范例:创建值包含雇员10时表
Create table emp10 as select*from emp where deptno10
删条数次查询前窗口发现数已删
开sqlplus窗口查询发现数然存没删oracle 中事物处理概念
事务处理:谓事务处理保证数操作完整性操作时成功时失败
Oracle中连接数库窗口(sqlplus)连接实际会数库连接建立session:连接数库户表示创建session
session数库进行修改会立刻反应数库真实数语序回滚session提交操作数库真正作出修改
数库操作中提供两命令完成事务处理:
*提交事务:commit
*事务回滚:rollback
果事务已提交法回滚
Oracle中关事务处理会存种死锁概念
session果更新数库中记录session法立更新等方提交允许更新

1列出少员工部门
2列出薪金SMITH员工
3列出员工姓名直接级姓名
4累出受雇日期早直接级员工编号姓名部门名称
5列出部门名称部门员工信息时列出没员工部门
6列出CLERK(办事员)姓名部门名称部门数
7列出低工资1500种工作事工作全部雇员数
8列出部门SALES(销售部)工作员工姓名假设知道销售部部门编号
9列出工资高公司均工资员工部门级领导公司工资等级
10列出SCOTT事相工作员工部门名称
11列出工资等部门30中员工工资员工姓名工资
12工资高部门30工作员工列出员工姓名工资部门名称
13列出部门工作员工数量均工资均服务期限
14列出员工姓名部门名称工资
15列出部门详细信息部门数
16列出种工作低工资事工作雇员姓名
17列出部门MANAGER(理)低工资
18列出员工年工资年薪低高排序
19查出某员工级求出中工资超3000
20求出部门名称中带’S’ 字符部门员工工资合计部门数
21职日期超30年加薪10



第三讲:
课程知识点梳理:
1 表查询:张表进行查询称表查询表查询时候表制定名方式简化列编写表查询中会产生笛卡尔积两张表总数相结果果想消笛卡尔积需通关联条件
2 分组统计统计函数:
*统计函数:COUNT()AVG()SUM()MAX()MIN()
*统计函数必须出现分组统计中谓分组指列中存重复容GROUP BY方式进行分组统计
*果加入分组条件编写HAVING子句统计函数作条件haunted职HAVING中出现WHERE中出现
*分组时候定注意查询时候够出现分组函数分组条件
*分组函数运行嵌套嵌套查询字段包括分组字段
3 子查询
*查询中继续包含外查询称子查询
*子查询出现意位置:SELECT FROM WHERE
*子查询结合分组统计表关联完成复杂查询功
4 数库更新操作
*复制表:CREATE TABLE 表名称 AS(子查询)
*数增加:INSERT INTO表名称(字段)VALUES(值)
+字符串加’数字加
+果插入日期时候固定日期格式编写TO_DATE函数进行转换指定格式yyyymmdd
+果表中列增加话INSERT语句时候免写字段
*数修改:UPDATE表名称SET字段值WHERE条件
+更新新数时候般加条件果加条件表示更新全部
*数删:DELETE FROM表名称WHERE删条件
5 事务处理
*操作全部成功全部失败
*Oracle中连接数库表表示sessionsession修改会立刻反映数库真实容二十等户提交户通commit提交者rollback进行回滚操作
*Oracle中会出现死锁情况回想等方提交
2 创建理表
Oracle中前empdeptsalgrade系统建表nameSQL语法中样支持表创建语句想创建表首先应该解Oracle中常集中数类型
21常数类型
常数类型前emp表中已出现三种:NUMBER\VARCHAR\DATE
No
数类型
描述
1
VARCHARVARCHAR2
表示字符串长度限制255
2
NUMBER
NUMBER(n):表示整数数字长度nINT
NUMBER(mn):表示数数字数长度n整数长度mnFLOAT
3
DATE
表示日期类型日期标准日期格式进进行存放
4
CLOB
象表示文数般存放4G文
5
BLOB
象表示二进制数存放4G例:存放电影歌曲图片
22标建立
标建立标准语法进行表建立会指定约束name处先出表建立简单语法
表建立语法:
CREATE TABLE表名称(

字段名称1 字段类型DEFAULT默认值
字段名称2 字段类型DEFAULT默认值

字段名称n 字段类型DEFAULT默认值

前学赋值表语法:
CREATE TABLE表名称AS(子查询)
*表结构表数起复制:SELECT*FROM emp
*复制表结构复制表容:加入成立条件条件例12
范例:复制表结构
CREATE TABLE testEmp AS(SELECT*FROM emp WHERE 12)
现假设创建张表person表表中字段类型等示:
No
字段名称
字段类型
描述
1
pid
VARCHAR2(18)
表示员编号
2
name
VARCHAR2(200)
表示员姓名
3
age
NUMBER(3)
表示员年龄
4
birthday
DATE
表示员生日
5
sex
VARCHAR2(3)
表示员性默认男
范例:创建表
CREATE TABLE person(
Pid varchar2(18)
Name varchar2(200)

Age number(3)
Birthday date
Sex varchar(3) DEFAULT’男’

范例:想表中增加数
INSERT INTO person(pidnameagebirthday)values(111张三’18sysdate)
果现希表中增加address(varchar2(200))字段表先删重建
23表删
表删语法:
DROP TABLE 表名称
范例:删person表
DROP TABLE person
然次创建新表添加进需字段
果现假设表中已存量记录删话理想做法SQL中提供修改表结构命令增加列修改列
24表修改(解)
SQL语法操作中提供ALTER命令通ALTER命令增加新列
ALTER TABLE表名称 ADD(字段名称 字段类型(长度)DEFAULT 值)
范例:早Person表增加address列
ALTER TABLE person ADD(address VARCHAR2(50))
修改表结构语法:
ALTER TABLE 表名称MODIFY(字段名称 字段类型(长度)DEFAULT(值)
修改表结构时候果数库中应字段里长数法表长度缩例:现name字段中存长度20字符字母原name容纳20容时字段长度修改10肯定法实现

范例修改person中name字段name长度修改50默认值名氏
ALTER TABLE person MODIFY(name varchar2(50)
表中插入数果插入bane值name默认值
开发中般少修改表结构里点IBM DB2数库中没ALTER TABLE 指令建表时定考虑位
25表重命名(解)
Orcale中提供RENAME命令表重命名语句Oracle中
语法格式:
RENAME表名称TO新名称
范例:person表重新命名tperson
REBANE person TO tperson
26截断表(解)
前讲果现讲person表中条数DELETE语句删通rollback进行回滚果现假设想清空张表数时需回滚立刻释放资源需阶截断表(TRUNCATE)语法
TRUNCATE TABLE 表名称
范例:截断tperson表
TRUNCATE TABLE tperson
27思考题
现张国家表里面国家名称字段国家中国美国巴西荷兰现求通查询实现战功
分析:运笛卡尔积战
1创建表
Create table country(countryName varchar2(20))
2插入数
Insert into country(countryName)values(中国’)
3查询
Select*from country ccountry o where ccountry<>ocouuntry
3约束
31约束分类(重点)
实际中约束分五种:
l 键约束:键表示唯表示身空
例:身份证编号唯重复空
l 唯约束:表中值运行建立键约束列果希出现重复值话唯约束
l 检查约束:检查列容否合法
例:年龄0150
例:性男女
l 非空约束:姓名样字段里面空
l 外键约束:两张表中进行约束操作

32 键约束(primary key)(重点)
键般id身已默认容空键约束建立表时候指定:
范例:建立person表pid增加键约束
create table person(
pid varchar2(18) primary key
name varchar2(200)
age number(3)
birthday date

sex varchar2(3) default '男'
)
范例:插入数中插入键重复代码插入两次
insert into person(pidnameagebirthdaysex)
values('111''张三'28to_date('19790213''yyyymmdd')'女')
insert into person(pidnameagebirthdaysex)
values('111''李四'30to_date('19770516''yyyymmdd')'男')
错误信息

错误信息出编号形式实际编号表示约束名称
范例:数键空

错误信息明确指出scott户person表pid字段允许空
约束属系统动分配约束名称通constraint制定约束名称
范例:person中pid指定名称

Person_pid_pk:表示前建立数库表时候指定约束名称
23 非空约束(not null)(重点)
非空约束表示字段容空:插入数时候必须插入容
drop table person
create table person(
pid varchar2(18)
name varchar2(200) not null
age number(3) not null
birthday date
sex varchar2(3) default '男'
constraint person_pid_pk primary key(pid)
)
范例:插入空数

24 唯约束(unique)(重点)
表示字段中容唯列允许重复
假设:现姓名允许出现重名情况

drop table person
create table person(
pid varchar2(18)
name varchar2(200) unique
age number(3)
birthday date
sex varchar2(3) default '男'
constraint person_pid_pk primary key(pid)
)
第二
drop table person
create table person(
pid varchar2(18)
name varchar2(200)

age number(3)
birthday date
sex varchar2(3) default '男'
constraint person_pid_pk primary key(pid)
constraint person_name_uk unique(name)
)
范例:表中插入数数插入两条

25 检查约束(check)(重点)
检查判断列中插入容否合法
范例:年龄取值范围性取值范围
drop table person
create table person(
pid varchar2(18)
name varchar2(200) not null
age number(3)not null check(age between 0 and 150)
birthday date
sex varchar2(3) default '男'check(sex in('男''女''中'))
constraint person_pid_pk primary key(pid)
constraint person_name_uk unique(name)
)

范例:插入错误年龄性

两条错误信息中约束错误采动命名形式check中手工命名形式:
drop table person
create table person(
pid varchar2(18)
name varchar2(200) not null
age number(3)not null
birthday date
sex varchar2(3) default '男'
constraint person_pid_pk primary key(pid)
constraint person_name_uk unique(name)
constraint person_age_ck check(age between 0 and 150)
constraint person_sex_ck check(sex in('男''女''中'))
)
次插入错误数:

26 外键约束(foreign key)(重点)
前讲全部约束针张表约束外键约束针两张表约束
什需外键约束
范例:求完成程序书属
l 书身应该张表书中必然字段表示属
drop table person
create table person(
pid varchar2(18)
name varchar2(200) not null
age number(3)not null
birthday date
sex varchar2(3) default '男'
constraint person_pid_pk primary key(pid)
constraint person_name_uk unique(name)
constraint person_age_ck check(age between 0 and 150)
constraint person_sex_ck check(sex in('男''女''中'))
)

drop table book
create table book(
bid number primary key not null
bname varchar2(30)
bprice number(52)
pid varchar2(18)
constraint person_book_pid_fk foreign key(pid) references person(pid)
)
时执行数插入操作

时保证两张表数完整性会出现找应数情况
外键关联时候注意点:
l 子表中设置外键父表中必须键
l 删时应该先删子表删
DROP TABLE person
DROP TABLE book

说明现根法删父表应存关联关系
DROP TABLE book
DROP TABLE person
强制性删
Drop table person cascade constraint
约束直接删种做法般
回顾:
前学emp表dept表实际两张表外键关联
范例:现想emp表中增加50部门部门编号
l dept表中身存50部门编号

时提示没找父项关键字法插入成功
外键关联中级联删情况
l 现数库中数例
l 先person表book表分插入数
insert into person(pidnameagebirthdaysex)
values('111''1111'11to_date('19710213''yyyymmdd')'男')
insert into book(bidbnamebpricepid)values(4321'九阳神功'40111)
删表中编号111数时员现book表中存书

子表中存项关联法删时果先完成删操作话必须book表中应数删掉
果希表中数删时动删掉中应子表记录级联删操作
CREATE TABLE book(
bid NUMBER PRIMARY KEY NOT NULL
bname VARCHAR(30)
bprice NUMBER(52)
pid VARCHAR2(18)
CONSTRAINT person_book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) ON DELETE CASCADE
)
37修改约束
语法
ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(约束字段)
关约束类型命名定统
l Primary key:键字段_pk
l Unique字段_uk
l Check:字段_ck
l Foreign key父字段_子字段_fk
添加该约束

增加外键约束
ALTER TABLE book ADD CONSTRAINT person_book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) ON DELETE CASCADE

删约束条件
ALTER TABLE 表名称 DROP CONSTRAINT 约束名称
范例:删person表中agesex约束
Alter table person drop constraint person_name_uk
Alter table person drop constraint person_age_ck

4ROWNUM
RUWNUM表示行号实际列列伪列列张表中出现
例1:查询雇员表加入rownum
SELECT ROWNUMenameempno FROM emp
显示前五条记录
SELECT ROWNUM enameempno FROM emp WHERE ROWNUM<5
查询出中间510条记录
SELECT *
FROM (SELECT ROWNUM rempnojobsalhiredate FROM emp WHERE ROWNUM<10) temp WHERE tempr>5
5 集合操作(重点)
Oracle中提供三种类型集合操作(UNION)交(INTERSECT)差(MINUS)
*UNION:查询结果组合查询结果中没重复容
*UNION ALL查询结果组合刀查询中包含重复值
*INTERSECT返回查询结果中相部分
*MINUS:返回两查询结果差集
更观察查询结果面复制emp表20部门雇员信息取出
CREATE TABLE emp20 AS SELECT*FROM emp WHERE deptno20
51验证UNION
返回两集合容包括重复容:
Select*from emp20
Union
Select*from emp

52验证UNION ALL
返回两查询重复容
SELECT*FROM emp
UNION ALL
SELECT*FROM emp20

53验证INTERSECT
两张表中20部门容重复返回20部门数
SELECT*FROM emp
INSERSECT
SELECT*FROM emp20

54验证MINUS
两张表中重复容查询出
SELECT*FROM emp
MINUS

SELECT*FROM emp20
1 知识点
11章容知识点回顾
1 表建立:CREATE TABLE表名称
*Oracle中数类型:
+VARCHAR2(长度):表示字符串长度限制
+NUMBER()表示数字表示整数数
+DATE:表示日期格式日期指定格式编写
+CLOB存储文兑现海量文字
+BLOB:存储二进制数例:电影音乐图片
2 复制表:CREATE TABLE 表名称AS子查询
3 般表建立修改果非修改 ALTE TABLE指令
*ALTER TABLE表操作功:
+增加列:ALTER TABLE 表名称ADD(字段名称 字段类型 DEFAULT默认值)
+修改列:ALTER TABLE 表名称MODIFY(字段名称 字段类型 DEFAULT默认值)
+删列:ALTER TABLE 表名称DROP(COLUMN 字段名称)
4 约束:约束保证数库中数完整性(5约束)
5 SQL中约束分5种:
*单表约束:
+PRIMARY KEY实例表般建立键表示唯编号
+NOT NULL列容允许插入空值
+UNIQUE表示列容允许重复
+CHECK:表示列容设置时限制
*关联表约束:
+FOREIGN KEY:表示子表取值父表中值相关联
+删时候应该先删子表删父表
+果现想直接删父表采Oracle强制手段:
DROP TABLE表名称CASCADE CONSTRAINT
级联删:ON DELETE CASCADE父表中容删子表应容删掉
*约束身修改建议修改约束
+增加约束:ALTER TABLE ADD CONSTRAINT 约束名称 约束类型(约束字段)
+删约束:ALTER TABLE DROP CONSTRAINT 约束名称
+果建立约束时候没定约束名称系统会动分配约束名称名称删时候较麻烦建立表时候采CONSTRAINT语句指定约束名字
6 ROWNUM伪列:记录中存列户表示行编号实际中通列结合子查询完成表中部分数显示
7 集合操作:交差
12章容
1 掌握视图作定义
2 掌握序列:SEQUENCE
3 掌握PowerDesigner设置工具
4 解义词解户理解嵌套表变数组
5 理解数库设置方式
2 具体容
21视图(重点)
视图功:视图实际封装复杂查询语句
创建视图语法:
CREATE VIEW视图名称AS子查询
*实际时子查询表示条非常复杂语句
范例:创建视图视图包含全部20部门雇员信息(empnoename)
CREATE VIEW emp20 AS SELECT*FROM emp WHERE deptno20
视图创建查找表样直接视图进行查询操作
范例:查询视图
SELECT*FROM emp20
时通视图找20部门数发现视图包装需查询语句时果需视图包含字段信息:job
CREATE VIEW emp20 AS SELECT empnoenamejob FROM emp WHERE deptno20
错误信息:
ORA22955:名称已现兑现
执行语句发现出现错误提示证明视图法重名时删重建视图
删视图语法:
DROP VIEW 视图名称
范例:删emp20视图
DROP VIEW emp20
需述添加信息重新执行创建视图语句
果代码样写肯定麻烦果想修改视图肯定删视图Oracle中方便户修改视图提供换命令时完整视图创建语法:
CREATE OR REPLACE VIEW 视图名称AS子查询
语法更改视图时候先删执行系统会户动进行删重建功
CREATE OR REPLACE VIEW emp20 AS SELECT empnoenamejob FROM emp WHERE deptno20

视图封装复杂查询现查询返回部门名称部门数均工资低工资雇员姓名
CREATE VIEW temp1 AS(
SELECT ddnametempagtempcteename
FROM emp edept d
(SELECT MIN(sal) miAVG(sal) agCOUNT(eempno)ct
FROM emp e
GROUP BY deptno)temp
WHERE edeptnoddeptno AND tempmiesal)
果开发中次写长SQL语句肯定方便时应该建立成视图方便户查询操作
SELECT*FROM temp1
然直接查询视图面结果
范例:创建包含20部门雇员视图
CREATE VIEW emp20 AS SELECT*FROM emp WHERE deptno20
面进行更新视图操作视图中应该包含真数程中创建视图实际存创建条件条件deptno20果现视图中7369部门编号修改30
范例:修改视图中7369部门编号
UPDATE emp20 SET deptno30 WHERE empno7369
时已存提示视图正常进行更新重新查询视图会发现视图中已没7369雇员
发现emp表中7369雇员肯编号已修改30样明显合适创建视图时候条件旦修改条件破坏创建视图时候SQL中提供两重参数:
*WITH CHECK OPTION更新师徒创建条件
范例:视图创建中参数
CREATE VIEW emp20
AS
SELECT*FROM emp
WHERE deptno20
WITH CHECK OPTION
时现视图进行更新操作观察问题:
UPDATE emp20 SET deptno30 WHERE empno7369
错误信息:
ORA01402:视图WITH CHECK OPTION where子句违规
创建条件更新字段呢?例:现7369雇员姓名修改
范例:修改视图中7369雇员名称
UPDATE emp20 SET ename’smith’ WHERE empno7369
发现修改视图身作查询应该运行更改时第二参数:
*WITH READ ONLY:创建视图读
范例:创建读视图
DROP VIEW emp20
CREATE VIEW emp20
AS
SELECT*FROM emp
WHERE deptno20
WITH READ ONLY
范例:次执行更新操作更新雇员姓名
UPDATE emp20 SET ename’smith’ WHERE empno7369

错误信息:
ORA42399:法读视图执行DML操作
22 序列(重点)
数库系统中存动增长列果现想oracle中完成增长功序列完成动增长操作需户手工处理
序列创建格式
CREATE SEQUENCE sequence
[INCREMENT BY n][START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CAXHE n |NOCACHE}]
范例:创建myseq序列验证动增长操作
Create sequence myseq
序列创建动增长应该户处理序列中提供两种操作:
l nextVal:取序列容
l cueeVal:取序列前容
范例:建立张验证序列操作
create table mytest(
next number
curr number
)
面表中添加数添加数时候需手工序列
insert into mytest values(myseqnextValmyseqcurrVal)

面代码执行5次观察序列变化

结果中发现nextval容进行动增长操作currval取出前操作序列结果
说现种序列次增长幅度1修改序列增长幅度
参数:
l 次增长幅度:increment by 长度
范例:重新建立序列
CREATE SEQUENCE myseq increment by 2
次插入数测试:先截断表插入数
Insert into mytest values(myseqnextValmyseqcurrVal)
发现次数字次2
默认情况序列1开始start with指定开始位置
Create sequence myseq
Start with 10
次插入数测试:先截断表插入数
Drop sequence myseq
Insert into mytest values(myseqnextValmyseqcurrVal)
序列开始位置10直接10开始进行序列计算
面创建序列取值固定13579循环序列
Create sequence mysq
Maxvalue 10 increment by 1 start with 1
Cache 2 cycle

Create sequence myseq 创建序列 序列名称
Maxvalue 10 increment by 2 start with 1 值 值 次增长21开始
Cache2 cycle缓存2 遇值返回
截断表插入数发现序列容开始循环操作
实际序列常create sequence 序列名称


23 义词(解)
前直存样种查询语句:
Select sysdate from dual
前直强调dual张虚拟表然虚拟表时表底里定义呢?
查询 systemmanager syschange_on_install表
Conn systemmanager
Conn syschange_on_install as sysdba
sys户存表表sysscott户直接通表名称访问正常情况果访问户表需户名表名称
创建义词语法:
Create synonym 义词名称 for 户名表名称
范例:scottemp定义emp义词
Create synonym emp for scottemp
果删义词语法:
Drop synonym 义词名称
范例:删emp义词
Drop synonym emp
特性适oracle数库


24户理
oracle中户进行建立授权操作
创建户语法:
Create user户名 identified by 密码
范例:
Create user test identified by test23
果想创建户首先应该理员进行登录
创建户开启新sqlplus窗口户进行登录出现错误提示:

提示test户没创建session操作权限没session权限意味着法登陆果户授权格式
Grant create 权限1权限2···to 户
范例:创建session全权限test户
Grant create session to test
test户进行连接连接数库表示创建session
户连接数库面进行建表操作
范例:建立tab表
Create table tt(
Id number primary key not null
Name varchar2(30)
)
错误信息:

实际新户权限分赋予果出现假设想权限赋予户权限定义成组角色
语法:
Grant 权限 to 户名
oracle中提供两角色:connectresource直接两角色赋予test户
Grant connectresource to test
突然天test理员超级理员汇报 忘记密码时修改户密码格式
Alter user 户 identified by 密码
范例:test户密码改hello
Alter user test identified by hello

般系统中存户第次登陆时候修改密码想完成功手工密码失效格式:
Alter user 户名 password expire
范例:
Alter user test password expire
户锁住密码格式
Alter user 户名 account lock
范例:test户锁住
Alter user test account lock
解锁户语法
Alter user 户名 account unlock
范例:test解锁
Alter user test account unlock
现test户访问scott表否?

错误信息:

果现想访问户表需授予表访问权限
范例:scott户emp表查询删权限test户
Grant selectdelete on scottemp to test
然权限授予户回收权限回收权限revoke语法语法:
Revoke deleteselect on 表名称 from户
范例:回收户selectdelete权限
Revoke deleteselect on sottemp from test
25数库备份恢复(解)
数库运行期间需断进行备份玩意假设系统弄崩溃备份中恢复中数
Oracle安装完成两命令进行数备份恢复:
*数库备份:exp
*数库恢复:imp
D盘建立date文件文件夹中保存备份文件果备份需命令方式进d\date文件夹中
备份完成检查备份效果数库中数全部删imp命令备份文件恢复
清回收站:
PURGE recydebin
26数库设计范式(解)
数库范式实际非常重实际开发果真全部范式做优查询语句会变复杂
ORACLE中scott户全部表实际已体现种设计思路雇员部门关系
261第范式
例:现假设数库创建脚
*Person表pidnameinfo字段
CREATE TABLE person(
Pid VARCHAR2(18)
Name varchar2(50)
Info varchar2(200)
)
插入测试数:
Insert into person(pidnameinfo)values(111’张三’性男爱:xx址:厦)
实际员信息部分组成:
*生日:1983年11月23日
*省事:背景
*区:西城区
*详细信息
字段分数库创建脚修改:
Create table person(
Pid varchar2(18)
Name varchar2(50)
Sex varchar2(3)
Hobby varchar2(30)
Address varchar2(200)
)
表address拆分成省市区具体址
数表中字段拆分
262第二范式
第范式求非常简单保证列意义果操作第范式会存问题:
现建立张学生课表:学号(stuno)姓名(stuname)年龄(stuage)课程名称(cname)成绩(grade)学分(credit)
Create table student(
Stuno varchar2(20)
Stuname varchar2(20)
Stuage number
Cname varchar2(30)
Grade number(52)
Credit number(31)
)


数库脚符合第范式求果现第范式设计话会存问题:
Insert into student(stunostunamestuagecnamegradecredit)values(111’张三’28java888)
Insert into student(stunostunamestuagecnamegradecredit)values(111’张三’28oracle888)
Insert into student(stunostunamestuagecnamegradecredit)values(222’李四’28java888)
数库创建脚发现课程信息冗余存问题:
*果门课程没学生选择课程学校彻底消失
*课程身应该包含课程编号果设计课程编号肯定重复
*果更改课程信息考虑许条记录
第二范式修改数库脚:
*学生应该实体表信息
Create table student(
Stuno varchar(20) primary key not null
Stuname varchar2(20)
Stuage number
)
*课程应该实体标信息
Create table course(
Cno varchar(20) primary key not null
Cname varchar2(20)
Credit number(31)
)

*学生选课:学生选门课程门课程会学生参加学生课程成绩样应该建立张关系表表示出概念
Create table selectcourse(
Stuno varchar2(20)
Cno varchar2(20)
Grade number(53)
Constraint student_selectcourse_stuno_fk foreign key(stuno) references student(stuno)
Constraint course_selectcourse_cno_fk foreign key(cno) references course(cno)
)
设计解决问题:
*学生选课时候课程信息会消失
*根新课程时候直接更新课程表
*关联关系关系表中体现
263第三范式
实际开发中第三范式频率高
例现求设计张学生表包含学号姓名年龄院校学院址学院电话时肯定第范式现果第二范式:
Create table student(
Stuno varchar2(20) primary key not null
Stuname varchar2(20)
Stuage number
)
Create table college(
Cno varchar2(20)primary key not null

Cname varchar2(20)
Address varchar2(20)
Telephone varchar2(20)
)
Create table selectcollege(
Stuno varchar2(20)
Cno varchar2(20)
约束
)
设计学生学院时课学院时会学生时做法:学院包含学生学生属学院实际加设计完全类似部门雇员表设计结构
Create table college(
Cno varchar(20) primary key not null
Cname varchar2(20)
Address varchar2(200)
Telephone varchar2(20)
)
Create table student(
Stuno varchar2(20) primary key not null
Stuname varchar2(20)
Stuage number
Cno varchar2(20)
Constraint college_student_cno_fk foreign key)(cno) references college(cno)
)
明显关系设计
三范式算参考数库唯原:

数库表关联查询越少越SQL语句复杂度越低越

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 香币 [ 分享文档获得香币 ]

购买文档

相关文档

oracle学习心得

oracle学习心得第一篇:oracle学习心得一、sql server的理解sql server服务器就像一栋大楼,大楼里的机房就像服务器的数据库,机房里的电脑如同数据库里的表1、 登录用户可以登录服务器——可以进大楼2、 登录用户成为数据库用户才能进指定的数据库——进入大楼的人给了某个机房的钥匙才能进入机房3、 登录用户有权限使用表——进入机房的人有电脑的密码才能

李***玉 11年前 上传702   0

oracle实验报告

《Oracle数据库设计与 实现》 总结报告 成绩:-------------- 学号:-------------- 姓名:---------------- 班级:----

文***品 2年前 上传508   0

Oracle常用命令大全

一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit

对***你 4年前 上传846   0

SQL中调用ORACLE存储过程

SQL Server 调用Oracle的存储过程 收藏 原文如下:通过SQL  Linked  Server 执行Oracle 存储过程小结1 举例我们可以通过下面的方法在SQL Server中通过Linked Server 来执行Oracle 存储过程。(1)  Oracle PackagePACKAGE Test_PACKAGE AS       TYPE t_t is TAB

天***猩 1个月前 上传95   0

Oracle中国大变阵

Oracle中国大变阵刚开始对杨文胜来讲还真是有点不习惯,以前是自己亲自打单,尽管遇到的困难很多,费的周折很大,但是作为身处一线的销售经理很有挑战性,很刺激。从1992年踏入Oracle中国公司的那一天起,他就在做直销,直接面对客户打交道。进入外企第一年,他的感觉是“搞不清东南西北,反正是跟在老板后面去打单。”到了第二年他才感到渐渐地进入了状态。那时,杨文胜主要负责全国金融行业的客户。“我去

w***x 11年前 上传455   0

Oracle数据库考试试题

  Oracle数据库考试试题(A卷) 一、单选题(共30小题,每题2分,总计60分)datacompass (1)SQL语言进行查询的主要语句是( ) A)USE B)DECLARE C)SET D)UPDATE E)SELECT (2)能将SELECT 语句返回的所有行合并到一个结果集中的关键字是( ) A)intersect B)minus C)c

n***y 11年前 上传12763   0

数据库面试题(SQL+ORACLE)

数据库基础(面试常见题)一、数据库基础1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等数据操纵:Select ,insert

j***n 9年前 上传552   0

Oracle 10g课后练习 软件0905

Oracle 10g 课后习题 第一章Oracle 10g简介 1.简述数据库系统的组成 答:数据库系统由数据库、操作系统、数据库管理系统、应用开发工具、应用程序、数据库管理员和用户等组成。 2.简述Oracle 10g的发展历史。 答:1979年,Oracle公司推出了世界上第一个基于SQL标准的关系数据库管理系统Oracle1,再不久,推出了Oracle2。 1980年左右,Or

零***2 10年前 上传9182   0

Oracle2014课程设计题with answer

 Oracle课程设计报告 姓 名 班级学号 指导教师 20XX年X月X 日 《Oracle课程设计》大纲 一、课程设计目的和要求 1. 掌握数据库的设计和管理方法,巩固SQL Se

文***品 5年前 上传1400   0

某移动公司oracle数据库调整及优化心得

某移动公司oracle数据库调整心得   经过三次oracle数据库调整, 针对DS4800存储上的hdisk2磁盘IO使用率经常在100%的情况已经有部分改善。调整前hdisk2磁盘在数据库业务高峰期时(上午10点,下午2-3点,5-6点时间段)IO使用率长时间保持在100%,并且CPU的使用率也经常达到90%以上,CPU的wait数保持在20-30%。调整后,在每次数据库业务高峰期时hd

t***e 5年前 上传920   0

Oracle电子商务套件构建ERP系统应用案例-ERP解决方案

Oracle电子商务套件构建ERP系统应用案例-ERP解决方案  综述  为了进一步提升企业的财务管理水平,缩短与国际一流水平电信企业的差距,中国联合通信有限公司(以下简称中国联通)积极地推进企业管理信息建设,并在山东与浙江两省进行了ERP项目试点实施工程。在集团决策层的大力支持和全体员工、各业务部门的积极配合下,仅用了不到半年的时间,以Oracle电子商务套件(Oracle E-B

l***o 10年前 上传729   0

Oracle工程管理协同系统应用案例-管理系统解决方案

Oracle工程管理协同系统应用案例-管理系统解决方案  内蒙古大唐托克托发电有限责任公司于1995年11月在呼和浩特市组建成立。从“十五”开始,由于电网的输送能力限制,电力供需矛盾日益突出,为配合国家“西部大开发”、“西电东送战略”,托电公司投入巨资,用于国家“十五”期间重点建设的托电工程,托电工程共分四期进行,每期建2×600MW发电机组,其中第一期两台机组于2003年先后投入生产,概算

g***4 11年前 上传600   0

51CTO下载-Oracle_DB常用经典sql查询

oracle常用经典SQL查询 常用SQL查询:   1、查看表空间的名称及大小   select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_na

q***r 5年前 上传883   0

Oracle电子行业资源管理系统应用案例-管理系统解决方案

Oracle电子行业资源管理系统应用案例-管理系统解决方案  广东省电信有限公司惠州市分公司下辖惠阳市、惠东县、博罗县、龙门县及大亚湾经济技术开发区电信局。主要经营惠州市范围内的国内固定电信网络与设施业务,基于固定电信网络的国际、国内话音、数据、图象及多媒体通信与信息服务,以及电信主管部门批准经营的其他电信业务。至 2004 年 12 月底,全市共有员工 3000 人。   挑战

8***5 8年前 上传830   0

oracle电子商务套件特别版-白皮书

Oracle电子商务套件特别版产品白皮书版本:2.0目 录Oracle电子商务套件特别版概述 3Oracle总帐管理 (Oracle General Ledger) 5Oracle 应收款管理(Oracle Receivable) 8Oracle 应付款管理(Oracle Pay

素***冰 9年前 上传482   0

Oracle_APEX_学习心得体会

APEX 简介这一部分主要使读者熟悉 APEX 的基本概念、环境和使用。本部分介绍了APEX 主要特性,三个组件(应用程序构建器、SQL 工作室、实用工具)和四类用户。本部分回答了以下问题:什么是 APEX? 用 APEX可以做什么?何时使用 APEX?(所有贴出来的例子均可在http://apex.oracle.com登录jjl/jjl.soft@gmail.com/jjl.soft查看)什么是APEX?刚刚来到上海,叫我们研究学习一个APEX的东西,一听很新鲜,画面也比form好看,因为是在浏览器看,当时第一反应就是浏览器,那这个是个什么架构,数据会慢嘛 ?结果一看官方文档发现

b***n 6年前 上传1362   0

Oracle ERP系统湘潭钢铁应用案例-ERP解决方案

Oracle ERP系统湘潭钢铁应用案例-ERP解决方案  综述   湘潭钢铁集团有限公司(以下简称湘钢)利用 Oracle ERP 11i 和 Oracle 数据库成功部署企业级 ERP 系统,范围涉及集团公司管理机关、 8 个钢铁主流程单位以及渣钢回收公司。现在,这些单位的所有数据都可以直接从 ERP 系统中实时查询和调出,实现了企业资金流、物流和信息流三流的真正合一,实现了采购

杰***青 11年前 上传564   0

「精品」Oracle汽车供应商解决方案

Oracle 汽车供给商解决方案目录Oracle 完整的应用解决方案改变您的业务方式 3加强产品开发的国际合作 4新产品开发前景 4Oracle Product Development Exchange 4优化产品开发周期 4管理产品开发本钱 5利用全球需求管理满足不断变化的客户需求 6支持全球电子交易 6管理新兴的技术 6自动化的客户方案管理

郭***林 2年前 上传361   0

Oracle数据库海南联通业务系统应用案例-业务系统应用解决方案

Oracle数据库海南联通业务系统应用案例-业务系统应用解决方案  随着中国加入 WTO 和电信行业体制改革的深化,电信行业面临着越来越激烈的竞争。为适应国际化竞争,国内的电信运营商需要将业务的重点从初期只注重网络基础设施建设,转移到有效地运营网络和开展服务上来,最大限度地利用现有网络。这就对运营商的服务内容、服务方式、服务质量、经营管理和服务意识提出了严峻的挑战。而借助先进的信息技术产品全

k***1 10年前 上传585   0

Oracle ERP信息系统国华电力应用案例-信息系统解决方案

Oracle ERP信息系统国华电力应用案例-信息系统解决方案  北京国华电力有限责任公司(以下简称国华电力)是神华集团控股的子公司,成立于1999年3月,注册资本43.7亿元,主要从事电力项目的投资、开发和经营管理。目前,公司全资或控股营运的发电机组装机容量696万千瓦,在建项目540万千瓦,参股项目348万千瓦,控制资产总值388亿元人民币。公司拥有全资、控股、参股的发电企业20多家,已

x***1 9年前 上传658   0

oracle数据库期末考试试题及答案

    期 末 考 试 卷(卷) 课程名称:  ORACLE数据库       考试方式:开卷( )闭卷(√) **学院 (郭)   题号 一 二 三 四 五 六     总分 统分人签名 得分                     考生注意事项:1、本试卷共 4 页,请查看试卷中是否有缺页。             2、考试

f***6 5年前 上传1694   0

华夏银行ORACLE RAC方案介绍

Oracle 10.2 for AIX软件安装手册安装前的准备工作:1、 添加组和用户 # mkgroup dba # mkgroup oinstall # mkuser –g oinstall –G dba –s /bin/bash –d /export/home/oracle -m oracle # passwd oracle

静***雅 2年前 上传279   0

Radware为Oracle用户供应用交付方案-CRM解决方案

Radware为Oracle用户供应用交付方案-CRM解决方案  中国。北京,2009年7月27日。全球集成应用解决方案提供商Radware (NASDAQ: RDWA)宣布:Radware智能应用交付控制器AppDirector已获得Oracle Siebel客户关系管理软件(CRM)8.0的集成许可认证。该集成认证是由Oracle针对合作伙伴进行架构应用集成所发起。用户可借助这种一体化集

y***1 9年前 上传414   0

Oracle ERP系统北京康宁光缆应用案例-ERP解决方案

Oracle ERP系统北京康宁光缆应用案例-ERP解决方案  综述  致力于成为中国光缆行业最具实力和影响力的北京康宁光缆有限公司(以下简称“北京康宁光缆”),通过部署Oracle ERP系统,并借助Oracle完整的产品线和ERP系统架构的灵活性,成功开发出了在光纤企业控制成本方面发挥着决定性作用的选纤系统,从而形成了畅通、完整的数据信息流,并全面实现了包括库存、生产、销售、采购

c***7 8年前 上传466   0

IT企业Oracle项目组个人工作总结

2010年IT企业Oracle项目组及2011年工作计划 2010年过去了,我是在今年(2010年)的11月份进入本公司Oracle项目组的。通过我在公司近两个月的工作和学习,我感到我许多方面的能力又进一步得到了提升,并且使我感受到我个人的职涯规划和公司的发展前景是一致的。 我进入公司后在**宏碁维修部实习,在实习期间学到了笔记本电脑常见问题的判断及维修,同时也了解到了售后服务部门的基本业务

l***b 13年前 上传14047   0