02_SQL语句

SQL语句

l         内容

1.       scott下的四张表

2.       简单的查询语句

3.       限定查询语句

4.       单行查询语句

l         Scott下面的四张表

1.emp(雇员)表

EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO

----- ---------- --------- ---------- ------------------- ---------- ---------- ----------

 7369 SMITH      CLERK              7902 1980-12-17 00:00:00        800                          20

 7499 ALLEN      SALESMAN      7698 1981-02-20 00:00:00        1600        300         30

 7521 WARD       SALESMAN      7698 1981-02-22 00:00:00        1250        500         30

 7566 JONES      MANAGER        7839 1981-04-02 00:00:00        2975                       20

 7654 MARTIN     SALESMAN    7698 1981-09-28 00:00:00        1250        1400       30

 7698 BLAKE      MANAGER        7839 1981-05-01 00:00:00        2850                       30

 7782 CLARK      MANAGER       7839 1981-06-09 00:00:00         2450                      10

 7788 SCOTT      ANALYST       7566 1987-04-19 00:00:00          3000                      20

 7839 KING       PRESIDENT                 1981-11-17 00:00:00        5000                      10

 7844 TURNER     SALESMAN   7698 1981-09-08 00:00:00          1500          0         30

 7876 ADAMS      CLERK            7788 1987-05-23 00:00:00          1100                      20

 7900 JAMES      CLERK             7698 1981-12-03 00:00:00           950                       30

 7902 FORD       ANALYST         7566 1981-12-03 00:00:00          3000                      20

 7934 MILLER     CLERK            7782 1982-01-23 00:00:00           1300                      10

2.dept(部门表)

DEPTNO  DNAME           LOC

------- -------------- --------

     10   ACCOUNTING     NEW YORK

     20   RESEARCH           DALLAS

     30   SALES                   CHICAGO

     40   OPERATIONS      BOSTON

(3).salgrade(工资等级)

GRADE      LOSAL      HISAL

----- ---------- ----------

    1        700         1200

    2       1201         1400

    3       1401         2000

    4       2001         3000

    5       3001         9999

(4)bonus(奖金) bonus默认是没有内容的

名称                                                  是否为空?   类型

----------------------------------------------------- -------- ------------

ENAME                                                            VARCHAR2(10)

JOB                                                                 VARCHAR2(9)

SAL                                                                  NUMBER

COMM                                                            NUMBER

 

 

l         SQL简介

对于各个数据库而言,重点是掌握SQL语句,因为数据库均是以SQL语句为操作标准的 每个数据库的不同就在于其提供的函数不一样

SQL(Structured Query Language,结构化标准查询语言).SQL通常用于与数据库的通讯 (ANSI)SQL是关系数据库管理系统的标准语言

 

l         SQL的分类

1DML (Date Malipulation Language,数据操作语言) -----用于检索或修改数据

2DDL(Date Definition Language,数据定义语言)-----用于定义数据的结构 例如创建,修改,删除数据库对象

3DCL(Date Control Language,数据控制语言) ----- 用于定义数据库用户的权限

 

()、简单的查询语句

 

SELECT *|具体的列 别名 FROM 表名

1.普通的查询

SELECT ename,empno,job FROM emp; 

2.为查询的列 其别名

SELECT ename 姓名,empno 编号,job 工作 FROM emp 雇员表;

可以为查询的列指定别名,也可以为表指定一个别名

    3.使用distinct 消除重复显示的列

SELECT  DISTINCT  job FROM emp;  因为job有重复的列,在字段前面加 distinct可以取消重复的列

如果要同时查询多列,必须保证每列都有重复字段才能取消

SELECT  DISTINCT  ename ,job FROM emp; 因为ename没有重复,因此任然会显示从父的字段

 

4.查询结果显示格式的处理

要求查询出雇员的编号,姓名,工作 但是显示个好似必须为

编号:7369,姓名:SMITH,工作:CLERK

SELECT ‘编号:’||empno||’,姓名:’||ename||’,工作:’||job FROM emp;

编号:7369= 编号,姓名:SMITH 姓名 ,工作:CLERK

编号:7499= 编号,姓名:ALLEN 姓名 ,工作:SALESMAN

编号:7521= 编号,姓名:WARD 姓名 ,工作:SALESMAN

编号:7566= 编号,姓名:JONES 姓名 ,工作:MANAGER

编号:7654= 编号,姓名:MARTIN 姓名 ,工作:SALESMAN

编号:7698= 编号,姓名:BLAKE 姓名 ,工作:MANAGER

编号:7782= 编号,姓名:CLARK 姓名 ,工作:MANAGER

编号:7788= 编号,姓名:SCOTT 姓名 ,工作:ANALYST

编号:7839= 编号,姓名:KING 姓名 ,工作:PRESIDENT

编号:7844= 编号,姓名:TURNER 姓名 ,工作:SALESMAN

编号:7876= 编号,姓名:ADAMS 姓名 ,工作:CLERK

编号:7900= 编号,姓名:JAMES 姓名 ,工作:CLERK

编号:7902= 编号,姓名:FORD 姓名 ,工作:ANALYST

编号:7934= 编号,姓名:MILLER 姓名 ,工作:CLERK

要想实现此种功能,则可以使用oracle中提供的字符串连接 ||  如果要加入一些显示信息的会 使用 单引号

‘’  括起来

5.       在查询中可以使用四则运算功能 例如:求出每个雇员的年薪 income

SELECT ename,sal*12  income FROM emp;

注:一般为字段取别名时 要回避中文

              Oracle支持 + - * % 的四则运算,所有语句遵循四则运算的先后顺序

 

() 限定查询(where 子句)

SELECT  {DISTINCT} *|具体的列名 别名 FROM 表名 WHERE 条件(s); 条件可以是多个

1. 逻辑判断条件查询 >  , < ,  >=  , <= ,  = , != , <>                 

例:查询出工资大于1500的所有雇员的信息

SELECT * FROM emp WHERE sal>1500;

SQL中要想使用不等于 可以使用 != <>

例:查询编号不是7369的雇员信息

SELECT * FROM emp WHERE empno!=7369;

SELECT 8 FROM emp WHERE empno<>7369;

2. 是否为空条件查询      为空:IS NULL . 不为空:IS NOT NULL; 

例:查询出没有奖金的雇员

SELECT * FROM emp WHERE comm. IS NULL;

 

3.多条件查询  使用AND连接条件表示且的关系   使用OR表示或的关系

例:查询出基本工资大于1500 同时可以领取奖金的雇员

SELECT * FROM  emp WHERE sal>1500 AND comm  IS NOT NULL;

例:查询出工资大于1500 或者可以领取奖金的雇员信息

SELECT * FROM emp WHERE sal>1500 OR  comm  IS NOT NULL;

 

4.指定范围的过滤查询语句: BETWEEN …..  AND  ….. 支持数字和日期的查询

例:查询出基本工资大于1500 小于3000的雇员信息

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000;

注:between  and 语句表示的是一个闭合的区间 [1500,3000]相当于 sal >=1500 AND sal<=3000

例:查询出在1981被雇佣的全部雇员的信息

SELECT * FROM emp WHERE hiredate BETWEEN ‘1981-1-1’ AND ‘1981-12-31’;

日期实际上也是以数字的形式表现出来的

注意日期要加单引号 ‘’

 

5.将多个条件语句作为整体 再对此整体进行操作

例:查询出基本工资大于1500 同时可以领取奖金的雇员信息

SELECT * FROM emp WHERE NOT(sal>1500  AND comm. IS NOT NULL);

可以将条件 (大于1500 可以领取工资)整体取反

上面可以看出 通过括号表示一组条件

 

6.Oracle对大小写是敏感的 查询时必须以适当的大小写形式进行条件的编写

例:查询出雇员姓名是SMITH的雇员信息

SELECT * FROM emp WHERE ename=’SMITH’;  如果此时SMITH写成小写 那么将会出现错误

注:字符串 要加单引号 ‘’ 数字不需要加

 

7.使用 IN 操作符在指定内容中查找  字段 IN (值1,值2,值3…….,

.使用 IN 操作符不在指定内容中查找  字段 NOT  IN (值1,值2,值3…….,

IN支持数字和字符串的查询操作

例:查询出编号是 736974997521的雇员信息

SELECT * FROM emp WHERE empno IN (7369,7499,7521);

例:查询出编号不是736974997521的雇员信息

SELECT * FROM emp WHERE empno NOT IN (7369,7499,7521);

例:查询出除了 SMITH KING的所有雇员信息

SELECT * FROM emp WHERE ename NOT IN (‘SMITH’,’KING’);

注:如果在指定的查询范围中指定了额外的查询内容 并不会影响程序的运行

例:SELECT * FROM emp WHERE ename IN (‘SMITH’,’KING’,’@###$#’);

注:IN 操作符一般用来给定了查询的具体条件时使用

 

 

8.使用LIKE 模糊查询 LIKE支持 数字 字符串 还可以方便地进行日期的查找

使用LIKE 注意通配符

LIKE中有以下两种通配符

       (1).  _  匹配一个长度的内容

       (2).  % 匹配任意长度的内容

例:查询出所有雇员姓名中第二个字符是M的雇员信息

SELECT * FROM emp WHERE ename LIKE ‘_M%’;

例:查询出雇员姓名中包含字母M的雇员信息

SELECT * FROM emo WHERE ename LIKE ‘%M%’;

注:如果使用LIKE是没有指定查询的关键字 则会查询全部

例:SELECT * FROM emp WHERE ename LIKE ‘%%’;

此句将所有的记录均查出来了

 

LIKE可以方便地进行日期的查找

例:查询出所有在1981年被雇佣的员工信息

SELECT * FROM emp WHERE hiredate LIKE ‘%1981%’;

SELECT * FROM emp WHERE hiredate BETWEEN ‘1981-1-1’ AND ‘1981-12-31’;between and (注意日期要加’ ’)

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值