Oracle_DAY 01操作语句
Oracle_DAY 01操作语句
SQL>进入oracle的操作环境
查询数据——DB——二维表
二维表是数据库存储数据的基本单元
表中存储数据的基本单元是一行
表名——二维表的标示
表头——表的数据描述
根据表名查看表结构——desc 表名
Name
------------------
ID 员工编号
LAST_NAME 姓
FIRST_NAME 名
USERID #用户说明
START_DATE 入职日期
COMMENTS 员工备注
MANAGER_ID 领导的员工编号
TITLE 职位
DEPT_ID 部门编号
SALARY 月薪
COMMISSION_PCT 提成
查询
选择:所有列都选中,部分行选中
投影:部分列选中,全部的行选中
表连接:数据来自于多张表,表和表之间建立连接关系
查询:
A.from字句
1.从表中查询一个字段的数据
select 字段 from 表;
select salary from s_emp;
搭建环境:sql脚本
<1>把脚本上传对应的服务器;<2>运行脚本:@路径/脚本名
2.查询多个字段
把first_name salary列出来
select first_name, salary from s_emp;
3.把表中所有的字段的值列出来
select id, first_name ...;
*号可以代表所有的字段名
select * from s_emp;
4.字段的数易做图算
算每个人的年薪
select salary*12 from s_emp;
可以用小括号改变的优先级
12*salary+100
12*(salary+100)
1/2
0.5
select 1/2 from dual;
5.字段的别名
紧跟在字段名后
select first_name name, 12*salary yearsal from s_emp;
别名中有特殊字符
空格
select first_name name, 12*salary "year sal" from s_emp;
6.sql如何表达字符串
sql中的字符串
'a'
'' ' '
'hello world'
=
判断相等
7.字符串连接 ---oracle独特的 ||
first_name last_name salary
select first_name, last_name, salary from s_emp;
select first_name || last_name, salary from s_emp;
在first_name和last_name加一个下划线
select first_name || last_name, salary from s_emp;
在first_name和last_name加一个单引号
select first_name || ''' || last_name, salary from s_emp;
翻译不了单引号---转义单引号
select first_name || '''' || last_name, salary from s_emp;
两个单引号表达一个单引号
在fitst_name和last_name之间拼接一个双引号
select first_name || '''''' || last_name from s_emp;
8.NULL值的处理
月薪*12*(1+提成/100)
select salary*12, salary*(1+commission_pct/100)*12 from s_emp;
NULL值和任何值做运算都是NULL
NULL值处理函数:nvl(参数1,参数2)
参数1:要处理的值或者字段
参数2:如果参数1为NULL则返回参数2的值
如果参数1不为NULL则返回参数1的值
注意:参数1和参数2必须有相同的类型
select salary*12, salary*nvl((1+commission_pct/100)*12, 0) from s_emp;//logic error
NULL要尽早处理
select salary*12, salary*(1+nvl(commission_pct, 0)/100)*12 yearsal from s_emp;
把first_name,manager_id,如果manager_id为NULL则显示-1
select first_name, nvl(manager_id, -1) from s_emp;
9.排重显示
显示所有的工资
select salary from s_emp;
不同的工资---disinct
select distinct salary from s_emp;
select distinct title from s_emp;
多重字段的排重
select distinct salary, id from s_emp;
select first_name, last_name, title from s_emp;
select dinstinct last_name, title from s_emp;