【Oracle】SQL学习笔记1---基本概念及SELECT语句及提取和排序数据

本文详细介绍了SQL的基本使用方法,包括关键字的使用规范、算术表达式、NULL值处理、字段别名设置、字符串拼接操作、去除重复记录、描述表结构、条件筛选、范围查询、模式匹配、排序等功能。

SQL01

1 SQL注意事项

关键字大小写不敏感。
关键字不能缩写或分行写。
可以多行书写。
回车表新行
在SQL/Plus中每个SQL语句都以;结束 或/结束。

2 column heading default

缺省的heading display: UPPERCASE
数字右边对齐 字符串/日期左对齐

3 arithmetic expression

  + - * /
SELECT name, salary + 300
FROM employees;

结果显示出姓名列和salary列+300

4 Null value

unavailable unassigned unknow inapplicable
is not the same as zero or bankspace
算术表达式中若存在NULL则结果为0
字符串与NULL合并为原字符串本身

5 column alias

给字段名重新命名。
SELECT last_name name, commission_pct comm
FROM employee;
若有空格或想保持大小写则加双引号
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employee;

6 concatenation operator

SELECT last_name || ' ' || job_id AS "Employees"
FROM employees;
把last_name列与job_id连接到Employees列。

7 literal character strings

character number data
必须用单引号括起来。
SELECT last_name || ' is a ' || job_id
AS "Employees Details" ####双引号用于保持空格 单引号用于字面常量字符串
FROM employees;
当字面常量中有'时可以用:
q['literal'] 或者{} <> ()

8 DISTINCT

去掉重复的列.
SELECT DISTINCT department_id
FROM employees;

9 DESCRIBLE

SQL*PLUS命令,可以简写,用desc即可
desc 列名、表名

10 WHERE

  1. 字符串和时间要用单引号引起来
  2. 默认日期格式 dd-mon-yy 日-月-年
    17-FEB-2010
  3. C语言是==判断 而 SQL中 = 是判断,SQL中无赋值概念所以把=保留字判断是否等于。
  4. BETWEEN … AND …
    包括两边的数 BETWEEN 1 AND 3 包括1和3
    可以是字符串:
    WHERE last_name BETWEEN 'King' AND 'Smith';
  5. IN(set)
    manager_id IN (1, 2, 3)
  6. LIKE
    _表示匹配一个字符
    %表示匹配多个字符
    若查询字符串中存在_或者%则必须转义
    ESCAPE 指定转义字符
    WHERE job_id LIKE '%SA_%' ESCAPE '\';
    WHERE job_id LIKE '%SA|_%' ESCAPE '|';
  7. IS NULL
  8. Substitution Variable 替换变量
    相当于C中的宏定义
    • & && 的区别
      & 每遇到&时就提示输入一次。
      &&所有相同的替换变量时只需要输入一次就可以了
    • 避免每次都输入可以用DEFINE命令

DEFINE  employee_num = 123;
SELECT  employee_id, last_name, job_id
FROM    employees
WHERE   employee_id = &employee_num;     --此时就不用再输入了
  • & &&每次输入的时候都会提示old、new,用VERIFY就可以使其不显示。

SQL> set VERFITY
  • 使用 SQL只是简单地把&名字替换成你的输入,所以要输入字符串必须用单引号。

SELECT  employee_id, last_name, job_id
FROM    employees
WHERE   employee_id = &employee_num;
SELECT  employee_id, last_name, job_id
FROM    employees
WHERE   job_id = '&job_title';
  1. ORDER BY
    • 按照指定列排序,默认是升序排序。

SELECT       employee_id, last_name, job_id
FROM         employees
ORDER BY     hire_date;
  • 可以DESC (descent) 来降序排列。

SELECT       employee_id, last_name, job_id
FROM         employees
ORDER BY     hire_date DESC;
  • 按别名排序。

SELECT       employee_id, last_name, salary*12 as annsal;
FROM         employees
ORDER BY     annsal;
  • 用数字来表示SELECT中列

SELECT       employee_id, last_name, job_id
FROM         employees
ORDER BY     3;
  • 按多列排序

SELECT       employee_id, last_name, job_id
FROM         employees
ORDER BY     hire_date, last_name DESC;  --先按hire_date升序排列,再按last_name降序排序
  • 关于NULL值
    默认:升序NULL在最后,降序NULL在最开始。
    可以手动改变规定NULL的位置: NULLS FIRST or NULLS LAST

Author: visaya fan <visayafan[AT]gmail.com or visayafan[AT]163.com>

Date: 2011-10-17 22:17:10

HTML generated by org-mode 6.33x in emacs 23

转载于:https://www.cnblogs.com/visayafan/archive/2011/10/17/2215908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值