oracle之学习第一天上

一、SQL SELECT 语句

  • select 语句用于表中选取数据,结果被储存在一个结果表中(称为结果集)
  • select 语法:
select  column_name(列名) from table_name(表名);
select * from column_name(列名);
  • 可以不区分大小写,可换行书写,关键词不能简写或分开跨行书写;
  • 结束必须以分号结尾;

在这里为什么定义为列名、表名,你可以想象数据库类似于excl,一个库里有很多表,数据库里的表类似于excl中的sheft(可重命名),每张表里的类似于一个巨大的表格,列名类似于表格的第一行,数据放在对应的字段之下。为了便于理解,我放一张理想的数据库中的表:
在这里插入图片描述
1.描述表的结构:

desc  emp(表名)

前面的7表示总共允许7个字符长,称为宽度。 后面2是保留小数点后面两位,称为精度。 一般说来,长度要包含精度,但不包含小数点,比如number(7,2)能表示的最大数是99999.99。但是也有少数数据库的长度包含了小数点的。
number(7,2)前面的7表示总共允许7个字符长,称为宽度。 后面2是保留小数点后面两位,称为精度。 一般说来,长度要包含精度,但不包含小数点,比如number(7,2)能表示的最大数是99999.99。但是也有少数数据库的长度包含了小数点的。
VARCHAR2(10)

  1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
  2. CHAR的效率比VARCHAR2的效率稍高。
  3. 目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL
  4. NULL是一个不确定,未赋值,未知的值,不存在,null不等于0或空白,任何数字与null进行运算,结果都为空

2.查看emp表的内容:

select * from emp;

在这里插入图片描述
特性:

  • SQLPLUS字符日期左对齐,数字右对齐;默认标题为大写
select ename,sal,job,hiredate,comm from emp;

在这里插入图片描述

  • 支持运算符;(加减乘除以及括号)
 select ename,sal,sal+1000,sal-1000,sal/2,(sal+1000)*2 from emp;

在这里插入图片描述

  • 支持查看空值;
select * from emp where ename='JONES';

在这里插入图片描述

  • 列别名,列标题,用空格间隔,也可用as增加可读性。可加引号保持原样(在输入时,SQL自动将小写转成大写字母,使用引号可以避免系统将小写转成大写)
    在这里插入图片描述

在这里插入图片描述

  • 连接运算符:
select ename||sal from emp;

在这里插入图片描述

select ename|| ' "s sal is '||sal from emp;

在这里插入图片描述

 select ename||q'['s sal is]'||sal from emp;

在这里插入图片描述
注:q’[]’:指定引号界定符,增加可读性和可用性;

  • 去除重复行
select distinct job from emp;

在这里插入图片描述

二、限制与排序

  • where限制语句
    where子句放在from子句后,字符,日期使用单引号引起来,字符区别大小写,日期格式敏感
    注:引号的使用
    SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号
    语法:
    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
    在这里插入图片描述
    注:
    !=^=<>
    -between…and … 即>= and <=
    in(a,b,c,d…) 即=a or =b or =c
    like是模糊查询,利用%或_
    %表示0或任意长度的任意字符串
    _表示1位任意字符
    is null 过滤为空值
    is not null 过滤非空的

  • 关系运算:
    要求查出基本工资高于1500的所有雇员信息

select * from emp where sal > 1500;

在这里插入图片描述
查询出所有职位是办事员的雇员信息:

select * from emp where job='CLERK';

在这里插入图片描述
查询基本工资在1500-3000的职员所有信息:

select * from emp where sal>=1500 and sal<=3000;
select * from emp where sal between 1500 and 3000;

在这里插入图片描述
查询职位是办事员,或者是销售员的全部信息

select * from emp where job='CLERK' or job='SALEMAN';

在这里插入图片描述
查询职位是办事员,或者是销售员的全部信息,并要求这些雇员的工资大于 1200

select * from emp where (job='CLERK' or job='SALEMAN') and sal>1200;
select * from emp where job='CLERK' OR JOB='SALEMAN' AND SAL>1200;

在这里插入图片描述
查询所有不是办事员的雇员信息

select * from emp where job!='CLERK';
select * from emp where job<>'CLERK';
select * from emp where NOT JOB ='CLERK';

在这里插入图片描述
求反:

select * from emp where not sal between 1500 and 3000;

在这里插入图片描述
判断空值:
空值并不代表0或空字符串
查询所有领取奖金雇员的信息

select * from emp where comm is not null;
select * from emp where not comm is null;

在这里插入图片描述
指定范围的操作:
IN 操作符表示指定一个范围,如果在使用IN 操作符,查询范围存在NULL ,不影响查询;

select * from emp where comm in(300,500,null);

在这里插入图片描述
NOT IN 表示不在指定范围,在使用该操作符过程中,若查询范围存在NULL,则不有任何查询结果

select * from emp where empno not in (7369,7566,null);

在这里插入图片描述

模糊查询

  • %表示0或任意长度的任意字符串
    _表示1位任意字符
    %%表示查询所有信息

查询雇员姓名中以字母 A 开头的全部雇员信息

select * from emp where ename like ‘A%‘;

在这里插入图片描述
查询雇员姓名中第二个字母是 A 的全部雇员信息

select * from emp where ename like '_A%';

在这里插入图片描述
匹配姓名中不含A的职员的所有信息:

select * from emp where ename not like '%A5';

在这里插入图片描述

数据排序

  • ORDER BY 语句用于根据指定的列对结果集进行排序。

    ORDER BY 语句默认按照升序对记录进行排序。

    如果希望按照降序对记录进行排序,可以使用 DESC 关键字。
    可以指定多个排序的字段
    默认升序
    降序需要手工指定
    有需要的时候才进行排序

    查询所有职员信息并按工资排序

   select * from emp  order by sal;

在这里插入图片描述
降序:

select * from emp order by sal desc;

在这里插入图片描述
查询所有雇员信息,按照工资降序排列,工资相同,则按雇佣日期从早到晚排列:

select * from emp order by sal desc,hiredate asc;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值