上節回顧:
1、select 基本語法
select * (字段名,字段名...) from 表名;
2、字符串的拼接
|| ' ' || name name
3、非空函數NVL()
NVL(可能會有空值的字段名,值)
4、去除重複行
distinct
5、起別名
空格 + 字段
Oracle Day2
Order By 子句
Order By + 字段名,字段名,....
Order By + list列表值,list列表值,....
ASC 升序 默認
DESC 降序
請用兩種方式:
查詢員工表中所有員工名字及員工工資並按從小到大的順序排列
select first_name , salary from s_emp order by salary;
select first_name , salary from s_emp order by 2;
查詢員工表中所有員工名字及員工工資並按從大到小的順序排列
select first_name , salary from s_emp order by salary desc;
select first_name , salary from s_emp order by 2 desc;
查詢員工表中所有員工名字及員工工資並按名字從大到小的順序排列
select first_name , salary from s_emp order by first_name desc;
select first_name , salary from s_emp order by 1 desc;
查詢員工表中所有員工名字及員工工資並按工資從小到大,名字從大到小的順序排列
select first_name , salary from s_emp order by salary ,first_name desc;
select salary , first_name from s_emp order by 1,2 desc;
where 子句
比較運算符
= > >= < <=
不等於 != <> ^=
查詢員工表中編號爲41的員工(標題爲Stock Clerk)
select * from s_emp where id =41;
select * from s_emp where id >41;
select * from s_emp where id <41;
select * from s_emp where id >=41;
select * from s_emp where id <=41;
select * from s_emp where id !=41;
select * from s_emp where id <>41;
select * from s_emp where id ^=41;
select * from s_emp where title = 'Stock Clerk';
SQL 運算符
BETWEEN ... AND... 查詢*到*之間的記錄
查詢員工表中編號在12到24之間的記錄
select * from s_emp where id between 12 and 24;
select * from s_emp where MANAGER_ID between 3 and 8;
IN(list) 查詢指定個數的記錄
查詢員表中編號爲1,3,8的記錄
select * from s_emp where id in(1,3,8);
模糊查詢
LIKE
通配符:% _
查詢員工表中姓名包含a字母的員工信息
select * from s_emp where first_name like '%a%';
查詢員工表中姓名第二個字母包含a字母的員工信息
select * from s_emp where first_name like '_a%';
IS NULL 是否爲空值
查詢員工表中提成爲空的所有員工信息
select * from s_emp where commission_pct is null;
NOT BETWEEN
查詢員工表中編號不在12到24之間的記錄
select * from s_emp where id not between 12 and 24;
NOT IN
查詢員表中編號不爲1,3,8的記錄
select * from s_emp where id not in(1,3,8);
NOT LIKE
查詢員工表中姓名不包含a字母的員工信息
select * from s_emp where first_name not like '%a%';
IS NOT NULL
查詢員工表中提成不爲空的所有員工信息
select * from s_emp where commission_pct is not null;
邏輯運算符
AND
查詢員工表中id爲11並且工資爲1400的記錄
select * from s_emp where id =11 and salary =1400;
只要有一個條件不符合,查詢不成功
OR
查詢員工表中id爲11或者工資爲1400的記錄
select * from s_emp where id =11 or salary =1400;
只要有一個條件符合,查詢成功
NOT
查詢員工表中id不爲11的記錄
select * from s_emp where not id =11;
邏輯運算符多個混合使用
SELECT * FROM s_emp WHERE salary >= 1000 AND dept_id = 44 OR dept_id = 42 ;
SELECT * FROM s_emp WHERE salary >= 1000 AND (dept_id = 44 OR dept_id = 42);
函數之間的轉換
經常用到的一些單函數大致可分爲幾下幾類
跟字符串相關
跟數字相關
跟日期相關
內置函數
組函數
dual 啞表 ====> 專門用來做測試
LOWER 轉換爲小寫
select lower('ORACLE') from dual;
UPPER 轉換爲大寫
select upper('oracle') from dual;
INITCAP 轉換爲首字母大寫
select initcap('my oracle') from dual;
CONCAT 字符串連接 ||
查詢員工表中員工的姓名(用兩種方式實現)
select first_name || last_name "姓名" from s_emp;
select CONCAT(first_name,last_name) from s_emp;
SUBSTR(原字符串,起始值,返回子串的長度) 返回子串
"my oracle" "oracl"
select SUBSTR('my oracle',4,5) from dual;
LENGTH(字符串) 返回長度
查詢員工表中所有姓名的長度
select first_name , length(first_name) from s_emp;
ROUND 四捨五入
select round(45.923, 2) from dual;
TRUNC 截取
select trunc(45.923, 2) from dual;
日期函數
查看系統日期
select sysdate from dual;
查詢當前時間五天後的日期
select sysdate+5 from dual;
MONTHS_BETWEEN 兩個日期中做計算
select months_between(sysdate,sysdate+30) from dual;
ADD_MONTHS 當前時間增加(按月增加)
select add_months(sysdate,1) from dual;
NEXT_DAY 當前時間的下一個時間
select next_day(sysdate,'星期四') from dual;
LAST_DAY 本月的最後一天
select last_day(sysdate) from dual;
嵌套
select last_day(add_months(sysdate+1,1)) from dual;
TO_CHAR 轉換爲字符串
select to_char(1234) from dual;
轉換爲固定格式
select to_char(123456,'fm$999,999,999') from dual;
TO_NUMBER 轉換爲數字
select to_number(1234) from dual;
TO_DATE 轉換爲日期
04-3月 -90
select to_date(04-3月 -90) from dual;
日期表現形式:
yyyy 2008 四位年
year 英文表示
mm 2位月份
month 英文表示
dy 縮寫
day 英文表示
dd 06 數字表示
mi 分鐘 30
ss 秒 兩位數字表示
hh 小時 兩位小時
rr 年 (新類型)
yy 年 (世紀年)
計算機病毒2000
作業:
1、今天課堂練習;
2、練習題
oracle2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.