select 查询语句

※ 查询语句select

查询语句语法

select [distinct] {column_name|*…}
    from table_name;

执行顺序 from ->select先查询整张表,在基于select对表出现的列筛选
注意:sql语句编写的时候不区分大小写
命令执行之前写入的是sql*plus工具的缓存,缓存只能缓存一条sql语句,再次写入覆盖原有缓存中的内容
“*”表示通配符,代表数据库中的所有列名,

※ 查询表中的所有信息 *

    select   *
    from s_dept;

注意:一般情况下不用*,效率不高

直接写列的名字:
查询部门表的所有信息

select id,name,region_id
    from s_dept;

注意:
1. 如果出现多列需要查询
2. 列与列之间逗号隔开
3. 最后一列后面没有逗号
4. 列的名字顺序没有要求
5. select后面查询的列名将来展示的时候名字都是大写
6. 同时date和字符串类型列名靠左边,number数字类型名字靠右边

※ select 决定了列出现的顺序或对列进行过滤

select name,id,region_id
    from s_dept;

查询员工表中员工的名字及薪水

select last_name,salary
    from s_emp;

※ select后面可以做算术运算(number和date类型)
注意:number + - * /
date + -
1.查询员工的年薪

select last_name,salary*13
    from s_emp;

2.查询员工的年薪(每个月会有200的补助)

select last_name,(salary+200)*13
    from s_emp;

3.查询在过4天是几号

select sysdate+4
    from dual;

注意:+后面整数单位是天
4.查询在过半天是什么时间

select sysdate+12/24
    from dual;

5.查询昨天是几号

select sysdate-1
    from dual;

※ select 后面可以直接算数元素
1)

select 1*12
    from dual;

2)

select 1+1
    from s_emp;

注意:因为select后直接做计算,在s_emp表中有多少行就计算多少次

※ select 查询的列去重操作
1.查询员工信息,名字相同的只保留一个

select distinct last_name
    from s_emp;

注意:distinct只能出现在select后面,distinct如果出现多列,表示多列的组合不能重复

select distinct last_name,first_name
    from s_emp;

select后查询的列内容过长,规定sql*plus界面显示的长度

column column_name format a10;
column column_name clear;//清空设计格式

※ 别名(列名和表名)

1.直接在列名(表名)的后面空格起名字
查询员工的年薪,

select last_name,salary*12 sal
    from s_emp;

结果
LAST_NAME SAL
….
给表起别名(多表区分表中列用的)

select s.last_name,s.salary*12 sal
    from s_emp s;   

2.在列名或表名后面+as +别名

select last_name,salary*12 as sal
    from s_emp;

3,如果别名中有空格或者特殊符号,用双引号引起来
对双引号中的内容原样输出(区分大小写)

select last_name,salary*12 “sal”
    from s_emp;

select last_name,salary*12 “salary is :”
    from s_emp;

※ 录屏

spool 文件名 append
录屏(sql*plus界面)保存到文件中
spool off 关闭录屏

※ 拼接操作||

last_name.first_name

    select last_name,first_name
    from s_emp;

    select后使用||拼接多列,用单引号标记忽略的内容
    select last_name||first_name
    from s_emp;

    select last_name||‘.’||first_name name
    from s_emp;

//输出结果 last_name‘s salary is salary
    如果写单个单引号,自身是自身的转义
    select last_name||’’’s salary is :’||salary
    from s_emp;

※ NULL值

NULL值的处理(NULL既不是字符串空值也不是数字0,在数据库中标记没有数据)null做计算得到结果还是null值

查询员工工资,有提成的要算上提成

select salary+salary*commission_pct/100
    from s_emp;

※ nvl(column_name,出现null替换的值)

select salary+salary*nvl(commission_pct,0)/100
    from s_emp;

注意:
nvl如果第一个参数是时间列,第二个参数也要写时间
如果第一个参数是字符串,第二个参数也要写字符串
如果第一个参数是数字类型,第二个参数也要写数字类型

※ 表示值的时候时间和字符串必须加单引号

select last_name,nvl(start_date,’01-9月-18’)
    from s_emp

※ 查看表结构

describe table_name

等价

desc table_name

注意:查看 列名 非空约束 列的类型

desc s_dept;

※ 基本类型

※ Number数字类型,对应Java中的byte int short long float double
Number数字的有效位没有限制
number(4)有效位4位
number(5,2)小数点前3位有效,小数点后没有限制

※ varchar2字符串类型,最多可写4000个左右字节
varchar2(20),20表示最多能放20个字节,实际长度和使用长度有关
注:varchar字符串类型,最多2000左右字节(oracle建议使用varcher2)

※ 时间类型
date是时间类型,精准度到秒
TimeStamp时间类型,精准到毫秒

※ char字符类型,可以跟Java中时String类型对应
但是char声明多少长度oracle数据库就分配多少长度
假设储存的值小于分配的长度,空格补位
char(6) ->中
一般用于固定值, 男 女 char(3)

注:
clob 存储字符类型 2G
blob 存储的二进制 2G

※ sql*plus工具对文件的操作

※ 将缓存中的sql语句保存到文件中

save filename [append]
start filename
@ filename

※ 执行文件中sql语句

  1. exit 推出sqlplus工具
  2. / 执行缓存区sql语句
  3. list(l)列出缓存区行
  4. clear buffer 清空缓存区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值