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

📄 script_62.txt

📁 orale培训教材包括了所有的sql说明和实例
💻 TXT
字号:


---------- chap02_create.txt ----------
/*
 * 范例名称:建立一个表
 * 文件名称:chap02_create.txt
 */
 drop table test_1;
CREATE TABLE test_1 (
     first_name CHAR(15), 
     last_name  CHAR(20)
     )
;



---------- chap02_insert.txt ----------
/*
 * 范例名称:插入记录
 * 文件名称:chap02_insert.txt
 */

INSERT INTO test_1 VALUES ('张', '飞');
INSERT INTO test_1 VALUES ('关', '羽');



---------- chap02_delete.txt ----------
/*
 * 范例名称:删除表
 * 文件名称:chap02_delete.txt
 */


delete from test_1;
select * from test_1;



---------- chap02_命名.txt ----------
/*
 * 范例名称:表和列的命名准则
 * 文件名称:chap02_命名.txt
 */
drop table sm_access;

create table access
(EmpID char(10) ,
access char(8));

ERROR 位于第 1 行:
ORA-00903: 无效表名

create table sm_access
(EmpID char(10) ,
access char(8));
ERROR 位于第 3 行:
ORA-00904: 无效列名

create table sm_access
(EmpID char(10) ,
sm_access char(8));






---------- CreateTable_sm_emp_sex.txt ----------
/*
 * 范例名称:建立sm_emp_sex表
 * 文件名称:CreateTable_sm_emp_sex.txt
 */
 drop table sm_emp_sex;

create table sm_emp_sex
(EmpID char(10) ,
Name   varchar2(10),
salary number(8,2),
TelNo  char(8),
sex  char(2));

insert into SM_EMP_sex values
('000000001','张飞',100,'62613546','男');



---------- chap02_char_vchar.txt ----------
/*
 * 范例名称:建立更复杂的表
 * 文件名称:chap02_char_vchar.txt
 */


CREATE TABLE SM_EMP_sex2 ( 
     name   VARCHAR2(20), 
     sex CHAR(1) 
     )
;

INSERT INTO SM_EMP_sex2 VALUES ('Tom', 'M');
INSERT INTO SM_EMP_sex2 VALUES ('Jane', 'F');
--INSERT INTO SM_EMP_sex2 VALUES ('Jane', '女');会怎样?


SELECT * FROM SM_EMP_sex2;

DROP TABLE SM_EMP_sex2;



---------- chap02_char_number.txt ----------
/*
 * 范例名称:复杂表操作
 * 文件名称:chap02_char_number.txt
 */
 
create table sm_emp_salary(
name varchar3(10),
salary number(4,2));


--大家先预计一下结果

INSERT INTO sm_emp_salary VALUES ('Tom1', 1);
INSERT INTO sm_emp_salary VALUES ('Tom2', 2.5);
INSERT INTO sm_emp_salary VALUES ('Tom3', 50.75);
INSERT INTO sm_emp_salary VALUES ('Tom4', 99.99);

--大家再试试,总结一下
--INSERT INTO sm_emp_salary VALUES
('Tom4', 99.999);
--INSERT INTO sm_emp_salary VALUES
('Tom4', 9.999);
--INSERT INTO sm_emp_salary VALUES 
('Tom4', 9.994);
--INSERT INTO sm_emp_salary VALUES ('Tom4', 100);



--INSERT INTO sm_emp_salary values('Tom1',99.994);结果如何?
--INSERT INTO sm_emp_salary values('Tom1',99.995);结果如何?
--INSERT INTO sm_emp_salary values('Tom1',98.995);结果如何?

SELECT * FROM sm_emp_salary;







--总结:
--小数部分四舍五入,整数不许超长







DROP TABLE sm_emp_salary;



---------- chap02_char_date.txt ----------
/*
 * 范例名称:日期的表操作
 * 文件名称:chap02_char_date.txt
 */

CREATE TABLE sm_emp_date ( 
     name  VARCHAR2(25), 
     birthday date
     )
;
INSERT INTO sm_emp_date VALUES
('Tom1', '05-6月 -02');




drop table plsql101_purchase;

CREATE TABLE plsql101_purchase ( 
     product_name  VARCHAR2(25), 
     product_price NUMBER(4,2),
     purchase_date DATE
     )
;

INSERT INTO plsql101_purchase VALUES 
     ('Product Name 1', 1, '5-11月-00');
--以下不再重复演示
INSERT INTO plsql101_purchase VALUES 
     ('Product Name 2', 2.5, '29-1月-01');
INSERT INTO plsql101_purchase VALUES 
     ('Product Name 3', 50.75, '10-12月-02');
INSERT INTO plsql101_purchase VALUES 
     ('Product Name 4', 99.99, '31-8月-03');

SELECT * FROM plsql101_purchase;



---------- CreateTable_sm_emp_NULL.txt ----------
/*
 * 范例名称:Null字段的表的建立和操作,insert语句
 * 文件名称:CreateTable_sm_emp_NULL.txt
 */
 
--先建立表,再在讲解 insert语句后,测试。
create table sm_emp_null
(EmpID char(10)  NOT NULL,
Name   varchar2(10) NOT NULL,
salary number(8,2) NOT NULL,
TelNo  char(8)  NULL);


--测试表的null字段,insert 语句
insert into sm_emp_null 
(empid,name,salary,telno)
values('000000008','Tom',100,'62652092');
--字段列表值列表完全匹配

insert into sm_emp_null
(EmpID,Name,salary) 
values('000000002','Tom',101);






--insert ok 因为有INSERT INTO TABLE (FIELD LIST)子句,NULL许可的字段可以不写值。
--自动插入null.

insert into sm_emp_null(EmpID,Name) 
values('000000002','Tom');


ERROR 位于第 1 行:
ORA-01400: 无法将 NULL 插入 
("SCOTT"."SM_EMP_NULL"."SALARY")


--not ok 
--ERROR 位于第 1 行:
--ORA-01400: 无法将 NULL 插入 ("SYSTEM"."SM_EMP_NULL"."SALARY")


insert into sm_emp_null values
('000000001','Tom',100,Null);
insert into sm_emp_null values
('100000001','Tom',100,'65432189');
--insert ok。值列表包含所有字段的值时,
--可以省略字段列表

insert into sm_emp_null values
('000000001','Tom',100);


--not ok 因为没有INSERT INTO TABLE
(FIELD LIST)子句。即使是null,也不能省!
--ERROR 位于第 1 行:
--ORA-00947: 没有足够的值







---------- chap02_plsql101_null.txt ----------
/*
 * 范例名称:Null的表操作
 * 文件名称:chap02_plsql101_null.txt
 */
 
--如果已建立表,先drop 
DROP TABLE plsql101_purchase;


CREATE TABLE plsql101_purchase ( 
     product_name  VARCHAR2(25) NOT NULL, 
     product_price NUMBER(4,2)  NOT NULL,
     purchase_date DATE         
     )
;
--purchase_date何时采购到可以不知道


---------- chap02_plsql101_null_insert.txt ----------
/*
 * 范例名称:Null的表操作
 * 文件名称:chap02_plsql101_null_insert.txt
 */

INSERT INTO plsql101_purchase VALUES ('Product Name 1', 1, NULL);
--必须首先执行chap02_plsql101_null.txt ,建立表plsql101_purchase的相应结构。


SELECT * FROM plsql101_purchase;

--not null的字段insert null,会如何?
INSERT INTO plsql101_purchase VALUES 
     (NULL, 2.5, '29-1月-01');
INSERT INTO plsql101_purchase VALUES  
     ('Product Name 3', null, '10-12月-02');
INSERT INTO plsql101_purchase VALUES 
     (NULL, NULL, '31-8月-03');

SELECT * FROM plsql101_purchase;

--带有字段列表
INSERT INTO plsql101_purchase (product_name, product_price) 
     VALUES ('Product Name 2', 2.5);

INSERT INTO plsql101_purchase (product_name, product_price) 
     VALUES ('Product Name 3', 50.75);


--字段列表中字段顺序可以改变,只要与值列表一致。
INSERT INTO plsql101_purchase (product_price, product_name) 
     VALUES (99.99, 'Product Name 4');

SELECT * FROM plsql101_purchase;


---------- default.txt ----------
/*
 * 范例名称:字段的default设定和插入数据
 * 文件名称:default.txt
 */
 
--先建立表,再在讲解 insert语句后,测试。
--预计雇员户口所在地地址的大部分是在北京,可以把北京这个值作为这个字段的缺省值。
--将数字型列的默认值指定为零
create table sm_emp_default
(EmpID char(10)  ,
Name   varchar2(10) ,
salary number(8,2) default 0,
TelNo  char(8) ,
city varchar2(50) default '北京');

insert into sm_emp_default (empid,name) 
values('0000000001','Tom');
--两个default 值,一个null

insert into sm_emp_default (empid,name,salary) 
values('0000000002','Tom2',100);
--没有给字段city提供数据,而这个字段有一个缺省值’北京’。
--在这种情况下,当新记录建立时会插入值’北京’。

insert into sm_emp_default 
(empid,name,salary,telno) 
values('0000000003','Tom3',199,'62652091');

insert into sm_emp_default 
(empid,name,salary,telno,city) 
values('0000000004','Tom4',199,'62652091','上海');


小结insert 与null default:参见小结_insert.ppt


---------- drop.txt ----------
/*
 * 范例名称:删除表
 * 文件名称:drop.txt
 */

drop table sm_access;
drop table test_1;

select * from tab;

desc tab;

select * from tab where tname='SM_EMP_NULL';
--SM_ACCESS不存在
select * from tab where tname='SM_ACCESS’;

---------- chap02_plsql101_EnglishDate_Err.txt ----------
/*
 * 范例名称:日期的问题
 * 文件名称:chap02_plsql101_EnglishDate_Err.txt
 */

desc  sm_emp_date;
--以下两种方法插入日期类型err!
INSERT INTO sm_emp_date VALUES 
('Tom2', '05-6-02');
INSERT INTO sm_emp_date VALUES 
('Tom3', '05日-6月-02年');


INSERT INTO sm_emp_date VALUES 
('Tom3', '05-6月-02');


DROP TABLE plsql101_purchase;

CREATE TABLE plsql101_purchase ( 
     product_name  VARCHAR2(25), 
     product_price NUMBER(4,2),
     sales_tax     NUMBER(4,2),
     purchase_date DATE, 
     salesperson   VARCHAR2(3)
     )
;

INSERT INTO plsql101_purchase VALUES 
     ('Product Name 1', 1, .08, '5-NOV-00', 'AB');
--ERROR 位于第 2 行:
--ORA-01843: 无效的月份

INSERT INTO plsql101_purchase VALUES 
     ('Product Name 2', 1, .08, '1日-8月-01', 'AB');
--ERROR 位于第 2 行:
--ORA-01861: 文字与格式字符串不匹配

INSERT INTO plsql101_purchase VALUES 
     ('Product Name 2', 1, .08, '1-8月-01年', 'AB');
--ERROR 位于第 2 行:
--ORA-01830: 日期格式图片在转换整个输入字符串之前结束

INSERT INTO plsql101_purchase VALUES 
     ('Product Name 2', 1, .08, '1-8-01', 'AB');
--ERROR 位于第 2 行:
--ORA-01843: 无效的月份


INSERT INTO plsql101_purchase VALUES 
     ('Product Name 1', 1, .08, '1-8月-01', 'AB');
     

alter session set nls_language=american;
alter session set 
nls_language='simplified chinese';

---------- select.txt ----------
/*
 * 范例名称:select记录
 * 文件名称:select.txt
 */
--改变字段的顺序,就可以改变选出的结果的顺序     
select empid ,name from sm_emp_default;

select name ,salary from sm_emp_default;

select * from sm_emp_default;







---------- math.txt ----------
/*
 * 范例名称:利用表中数据进行计算
 * 文件名称:math.txt
 */

drop table shangpin;
create table shangpin
(name varchar(20),
 price number(8,2),
 shuliang number(3));
insert into shangpin values ('电视',100,3);
insert into shangpin values ('豆腐',1,30);

--总价格 =价格*数量
select name ,price*shuliang from shangpin;
--注意有几条结果
--总价格的10%
select name ,price*shuliang*0.1 from shangpin;


--练习.txt:一个更有商业含意的例子
--商品信息表
drop table sm_itemlist;

create table sm_itemlist
       	(
	itemID 		char(5) 	,--商品编号 	
	itemname	varchar(20)	,   --商品名称
	tax             number(6,2)     ,   --营业税(按照销售价的百分比计算)
	purchase_price	number(8,2)	,   --购入价格
	sale_price	number(8,2)	,   --销售价格
	amount		number(4)	,  --库存数量
	unit		varchar(6)	  --商品单位
	);
insert into sm_itemlist values('00001','TCL彩电',0.03,800,1000,20,'台');
insert into sm_itemlist values('00002','NEC彩电',0.03,900,1200,10,'台');
insert into sm_itemlist values('00003','联想电脑',0.05,9000,12000,10,'台');
insert into sm_itemlist values('00004','海尔电脑',0.05,8000,10000,10,'台');



--全部商品打8折,求出打折后各商品的价格

--求出各库存商品占用的资金

--求出各库存商品完全售出要交的税

--求出各库存商品完全售出的净利润

--求出各库存商品的利润率 = 利润 / 投资







---------- chap02_plsql101_math_null.txt ----------
/*
 * 范例名称:利用表中数据进行计算
 * 文件名称:chap02_plsql101_math_null.txt
 */
 

--null insert!对比前面的结果!
insert into sm_itemlist 
values('00005','海尔电脑null',null,8000,10000,10,'台');
--全部商品打8折,求出打折后各商品的价格
select itemname , sale_price * 0.8 from sm_itemlist;
--见练习.txt






---------- chap02_plsql101_string.txt ----------
/*
 * 范例名称:利用表中数据进行计算--文本表达式
 * 文件名称:chap02_plsql101_string.txt
 */
 
--must after chap02_plsql101_math.txt

SELECT name || price || '元'
FROM   shangpin;

SELECT name || price || '元 /(盒,台)'
FROM   shangpin;

--结果不太好,
--这正是sm_itemlist表中有unit(商品单位)的好处。
--设计时要考虑。 

insert into sm_itemlist values('00005','豆腐',0.01,1,1.2,100,'盒');


select itemname || sale_price 
|| '元 / ' || unit from sm_itemlist;







---------- sm_emp_promote.txt ----------
/*
 * 范例名称:插入多条记录
 * 文件名称:sm_emp_promote.txt
 */
 drop table sm_emp_promote;
create table sm_emp_promote
(PromEmpID char(10) ,
Name   varchar2(10),
salary number(8,2)
);

--HOW???

--data prepare
--select * from sm_emp;
--insert into sm_emp(EmpID, name,salary,telno) values('000000003','刘备',1000,'67832324');
--insert into SM_EMP values('000000002','关羽',1000,'67832324');

insert into sm_emp_promote 
(PromEmpID,Name,salary)
select EmpID,Name,salary 
from sm_emp where Name in ('张飞','关羽','刘备');

select * from sm_emp_promote;


---------- chap02_plsql101_bieming.txt ----------
/*
 * 范例名称:利用别名
 * 文件名称:chap02_plsql101_bieming.txt
 */
 
SELECT name || price || '元' 单价
FROM   shangpin;


SELECT name 商品, price || '元' 单价
FROM   shangpin;





---------- sm_bieming.txt ----------
/*
 * 范例名称:利用别名
 * 文件名称:sm_bieming.txt
 */
 
SELECT empid 代号, name "姓   名"  FROM sm_emp;

--为sm_itemlist商品表,指定单价别名

select itemname || sale_price || '元 / ' 单价 || unit from sm_itemlist;


--Error!  别名必须放在所选择项的最后,必须对应查询结果集中的一列。
--(itemname || sale_price || '元 / ')不为查询结果集中的一列,需拼上unit才是一列。

select itemname || sale_price || '元 / ' || unit  单价 from sm_itemlist;





⌨️ 快捷键说明

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