日期:2019/5/16
内容:Oracle 11g Express;
TODO-LIST:
- 索引操作
一、基本操作
-
建表
-
修改列属性
把NUMBER(38)改为NUMBER(3)
-
显示用户scott所有的表
-
显示表内容
二、入门操作
-
定义外码
-
修改记录
三、修改操作
基本格式:UPDATE <table> set <col>=<value> [where condition]
-
把"sinkinben"的COMM修改为ALLEN的COMM
-
把"sinkinben"的(SAL, COMM, DEPTNO)修改为ALLEN的(SAL, COMM, DEPTNO)
解法1:
解法2:
四、查询操作
-
求出生日期
-
大小写输出
-
指定列的别名
-
去重(即Π操作)
-
条件查询
s
-
排序(默认升序)
(先sdept降序,sdept同则sage升序)
五、函数操作
-
查询学生总人数
-
查询选了课的人数(需要去重)
-
计算3号课程的平均分
-
查询3号课程最高分
-
查询201215121的选课的总学分
先看看201215121选了课的信息
总学分
六、分组Group By
-
查询各个课程的选课人数
-
查询选修>=2门课的学号
七、Scott账户练习题
-
计算COMM为null/not null的人数
-
每种职业的平均工资
-
平均工资>=2000的职业
-
找出research部门的empno和ename
where加上条件dept.dname = "RESEARCH"
join解法
-
找各人的上司(MGR的name)
join解法
-
连接示例
内连接:不保留任何悬浮元组。(不写left,right,full,inner则默认是inner)
外连接:分为left,right,full
左外连接
右外连接
-
嵌套查询示例
查找RESEARCH部门的ename
工资最高的ename
-
计算每个人一年的工资(包括月薪*12和佣金comm)
一种错误解法:某些人的comm为null,任何分量+null结果恒为null
解决办法:当comm为null则12*sal+0。
NVL(X,Y)函数:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
-
找SAL前三
- 错误解法1
select sal from emp where rownum between 1 and 3 order by desc;
错误原因:此语句先选出前3行再排序
-
半正确解法:先排序,再选前3,利用select子句
在最大值5000有多个的情况下,需要在第2行加distinct
-
完全正确解法:添加一个SAL=5000的记录,找SAL前三的ENAME
-
找SAL第二的ENAME
基本配置
-
调整显示宽度
-
修改为全英文环境
ALTER SESSION SET NLS_LANGUAGE=american;
-
显示数据库实例名字
select INSTANCE_NAME from v$instance;