?? script_64.txt
字號:
('Chrome Phoobar', 'SH', sysdate+7, 10);
--7天以后將購買的:什么涵義呢?
---------- sysdate_insert_select.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:sysdate_insert_select.txt
*/
SELECT * FROM plsql101_purchase
WHERE purchase_date
BETWEEN (SYSDATE-30) AND SYSDATE;
--什么涵義呢?
DELETE FROM plsql101_purchase
WHERE SALESPERSON = 'SH';
---------- userenv.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:userenv.txt
*/
Select user from dual;
select userenv('TERMINAL') FROM DUAL;
---------- round.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:round.txt
*/
SELECT product_name, product_price
FROM plsql101_product;
SELECT product_name, ROUND(product_price, 0)
FROM plsql101_product;
SELECT ROUND(1234.5678, 4) FROM DUAL;
SELECT ROUND(1234.5678, 3) FROM DUAL;
SELECT ROUND(1234.5678, 2) FROM DUAL;
SELECT ROUND(1234.5678, 1) FROM DUAL;
SELECT ROUND(1234.5678, 0) FROM DUAL;
SELECT ROUND(1234.5678, -1) FROM DUAL;
SELECT ROUND(1234.5678, -2) FROM DUAL;
SELECT ROUND(1234.5678, -3) FROM DUAL;
--round實用
--商品信息表練習.txt中
--求出各庫存商品的利潤率 = 利潤 / 投資
select itemname ,
(sale_price * (1-tax)-purchase_price ) / (purchase_price)
from sm_itemlist;
--有何不足?利潤率不需要太精確。如何處理?
select itemname ,
round((sale_price * (1-tax)-purchase_price ) / (purchase_price),2)
from sm_itemlist;
---------- TRUNC.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:TRUNC.txt
*/
SELECT TRUNC(1234.5678, 4) FROM DUAL;
SELECT TRUNC(1234.5678, 3) FROM DUAL;
SELECT TRUNC(1234.5678, 2) FROM DUAL;
SELECT TRUNC(1234.5678, 1) FROM DUAL;
SELECT TRUNC(1234.5678, 0) FROM DUAL;
SELECT TRUNC(1234.5678, -1) FROM DUAL;
SELECT TRUNC(1234.5678, -2) FROM DUAL;
SELECT TRUNC(1234.5678, -3) FROM DUAL;
---------- UPPER_LOWER_INITCAP.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:UPPER_LOWER_INITCAP.txt
*/
SELECT UPPER(product_name) FROM plsql101_product;
SELECT LOWER(product_name) FROM plsql101_product;
SELECT INITCAP(product_name) FROM plsql101_product;
SELECT INITCAP('this TEXT hAd UNpredictABLE caSE') FROM DUAL;
--數據準備
drop table shangpin;
--建立商品表
create table shangpin
(name varchar(20), --商品名
price number(8,2),--價格
shuliang number(3),--庫存數量
caigou_date date) --采購日期;
--插入數據,商品名為 廠家,產品
insert into shangpin values ('TCL,電視',100,3,'29-8月 -02');
insert into shangpin values ('三元,豆腐',1,30,'28-8月 -02');
insert into shangpin values ('tcl,電腦',1000,3,'30-8月 -02');
insert into shangpin values ('Tcl,電話',50,3,'29-8月 -02');
insert into shangpin values ('Abb,開關',1,30,'29-7月 -02');
insert into shangpin values ('Abb,電腦',100,30,'29-8月 -02');
--顯示所有TCL的商品。
--一種笨方法
select * from shangpin where
name like '%TCL%'
OR
name like '%Tcl%'
OR
name like '%tcl%'; --如果嚴格,還要加多種排列組合。
select * from shangpin where
upper(name) like '%TCL%';
--顯示所有TCL的商品,并以大寫TCL...顯示
select UPPER(name), price,shuliang
from shangpin where upper(name) like '%TCL%';
--顯示所有TCL的商品,并以大寫Tcl...顯示
select initcap(name), price,shuliang
from shangpin where upper(name) like '%TCL%';
--更新所有TCL產品為標準名稱TCL...
update shangpin set name=UPPER(name)
where UPPER(name) like '%TCL%';
---------- LENGTH.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:LENGTH.txt
*/
SELECT product_name, LENGTH(product_name) NAME_LENGTH
FROM plsql101_product
WHERE LENGTH(product_name) >15
ORDER BY product_name;
SELECT name, LENGTH(name)
FROM shangpin
ORDER BY LENGTH(name);
--注意:如果為中文數據,一個中文一個英文全被認為是1
---------- SUB_STRING.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:SUB_STRING.txt
*/
drop table PLSQL101_OLD_ITEM;
CREATE TABLE plsql101_old_item (
item_id CHAR(20),
item_desc CHAR(25)
)
;
INSERT INTO plsql101_old_item VALUES
('LA-101', 'Can, Small');
INSERT INTO plsql101_old_item VALUES
('LA-102', 'Can, Large');
INSERT INTO plsql101_old_item VALUES
('LA-103', 'Bottle, Small');
INSERT INTO plsql101_old_item VALUES
('LA-104', 'Bottle, Large');
INSERT INTO plsql101_old_item VALUES
('NY-101', 'Box, Small');
INSERT INTO plsql101_old_item VALUES
('NY-102', 'Box, Large');
INSERT INTO plsql101_old_item VALUES
('NY-103', 'Shipping Carton, Small');
INSERT INTO plsql101_old_item VALUES
('NY-104', 'Shipping Carton, Large');
--將一數據分開顯示
SELECT SUBSTR(item_id, 1, 2) , --取第1,2個
SUBSTR(item_id, 4, 3) , --取4,5,6個
item_desc
FROM plsql101_old_item
;
--
INSERT INTO plsql101_old_item VALUES
('NY-10444', 'Shipping Carton, Large');
-----開始
--從第4個起,全取出
SELECT SUBSTR(item_id, 1, 2) MFGR_LOCATION,
SUBSTR(item_id, 4, LENGTH(item_id)) ITEM_NUMBER,
item_desc
FROM plsql101_old_item
;
---------- INSTR.txt ----------
---
---開始
/*
* 范例名稱:系統變量函數
* 文件名稱:INSTR.txt
*/
--解釋:詳見補充3.ppt
SELECT item_desc FROM plsql101_old_item;
--為了將物品的單位,和對它的描述分開
--需要將old_item表的item_desc,從,進行分解,此時必須用INSTR定位逗號
--先定位,
SELECT item_desc,
INSTR(item_desc,',',1)
FROM plsql101_old_item;
--逗號以前的取出,取到逗號前一個
SELECT item_desc,
SUBSTR(item_desc, 1, INSTR(item_desc,',',1)-1)
FROM plsql101_old_item;
--逗號以后的取出,逗號和空格=+2,99為全取出
SELECT item_desc,
SUBSTR(item_desc,INSTR(item_desc,',',1) +2,99)
FROM plsql101_old_item;
--更好的方法
SELECT item_desc,
SUBSTR(item_desc,INSTR(item_desc,',',1) +2,LENGTH(item_desc)-INSTR(item_desc,',',1)-1)
FROM plsql101_old_item;
--此處當是-1.因為INSTR(item_desc,',',1)已經是,的位置。后面只有一個空格。
--LENGTH(item_desc)-INSTR(item_desc,',',1)-1
--分別取出兩段紀錄
SELECT item_desc,
SUBSTR(item_desc, 1,INSTR(item_desc,',',1) -1) ,
SUBSTR(item_desc,INSTR(item_desc,',',1) +2,99)
FROM plsql101_old_item;
--練習要求
drop table shangpin;
--建立商品表
create table shangpin
(name varchar(20),
price number(8,2),
shuliang number(3));
--插入數據,商品名為 廠家,產品
insert into shangpin values ('TCL,電視',100,3);
insert into shangpin values ('三元,豆腐',1,30);
insert into shangpin values ('tcl,電腦',1000,3);
insert into shangpin values ('Tcl,電話',50,3);
insert into shangpin values ('Abb,開關',1,30);
insert into shangpin values ('Abb,電腦',100,30);
--將廠家與產品分別顯示
--將所有含字母的廠家名大寫
---------- TRIM.txt ----------
/*
* 范例名稱:系統變量函數
* 文件名稱:TRIM.txt
*/
select * from plsql101_old_item;
--想將item的名稱和描述連接起來,問題:
--顯示結果含大量空格,分析原因:是 CHAR,VARCHAR2
SELECT 'Item ' ||
item_id ||
' is described as a ' ||
item_desc
FROM plsql101_old_item;
SELECT 'Item ' ||
RTRIM(item_id) ||
' is described as a ' ||
RTRIM(item_desc)
FROM plsql101_old_item;
---------- sysdate_err.txt ----------
/*
* 范例名稱:日期函數
* 文件名稱:sysdate_err.txt
*/
INSERT INTO plsql101_product VALUES
('qqq', 45, 1, SYSDATE);
SELECT * FROM plsql101_product;
-- 當天日期輸入為測試日期
SELECT * FROM plsql101_product
WHERE last_stock_date = '當天日期';
如:
SELECT * FROM plsql101_product
WHERE last_stock_date = '29-11月-01';
SELECT * FROM plsql101_product
WHERE last_stock_date = '28-11月-00';
---------- sysdate_trunc.txt ----------
/*
* 范例名稱:日期函數
* 文件名稱:sysdate_trunc.txt
*/
-- 當前日期為標準格式
SELECT * FROM plsql101_product
WHERE TRUNC(last_stock_date) = '當前日期';
--TRUNC(last_stock_date,0)對不對?
DELETE FROM plsql101_product
WHERE product_name = 'Square Zinculator';
--方法2:在插入時就避免
INSERT INTO plsql101_product VALUES
('wwwww', 45, 1, trunc(sysdate));
-- 當前日期為標準格式
SELECT * FROM plsql101_product
WHERE last_stock_date = '當前日期';
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -