⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 script_64_没使用shangpin表.txt

📁 orale培训教材包括了所有的sql说明和实例
💻 TXT
📖 第 1 页 / 共 2 页
字号:

---------- sysdate_insert.txt ----------
/*
 * 范例名称:系统变量函数
 * 文件名称:sysdate_insert.txt
 */

INSERT INTO plsql101_purchase VALUES 
     ('Small Widget', 'SH', sysdate,10 );
--以SYSDATE:系统当前时间作为PURCHASE_DATE

INSERT INTO plsql101_purchase VALUES 
     ('Medium Wodget', 'SH', sysdate-14, 15);
--14天以前购买的
INSERT INTO plsql101_purchase VALUES 
     ('Round Snaphoo', 'SH', sysdate-7, 25);
INSERT INTO plsql101_purchase VALUES 
     ('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';



---------- 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));
--插入数据
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);


--显示所有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)-2)
FROM   plsql101_old_item;

SELECT item_desc,
       SUBSTR(item_desc,INSTR(item_desc,',',1) +2,LENGTH(item_desc)-INSTR(item_desc,',',1)-2)
FROM   plsql101_old_item;
--err!此处当是-1.因为INSTR(item_desc,',',1)已经是,的位置。后面只有一个空格。
--这里没现出来是因为是char,length全为最长。如为varchar2会少一个。


--分别取出两段纪录
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 
     ('Square Zinculator', 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 
     ('Square Zinculator', 45, 1, trunc(sysdate));
 
-- 当前日期为标准格式
SELECT * FROM plsql101_product
WHERE  last_stock_date = '当前日期';
 
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -