创建表
表创建基础
CREATE TABLE Products
(
prod_id CHAR(10) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(100) NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1
);
更新表
ALTER TABLE
ALTER TABLE Vendors
ADD vend_phone CHAR(20);
删除列
ALTER TABLE Vendors
DROP COLUMN vend_phone;
删除表
DROP TABLE CustCopy;
视图
例子:
--不使用视图
SELECT cust_name, cust_contact
FROM Customers, Orders, OrderIems
WHERE Customers.cust_id = Orders_cust_id
AND OrderItems.order_num = Orders.order_num
AND prod_id = 'RGAN01';
--使用视图
SELECT cust_name, cust_contact
FROM ProductCustomers
WHERE prod_id = 'RGAN01';
为什么使用视图
1、重用SQL语句
2、简化复杂的SQL操作
3、使用表的组成部分而不是整个表
4、保护数据
5、更改数据格式和表示
创建/删除视图
CREATE VIEW viewname;
DROP VIEW viewname;
覆盖(或更新)视图:必须先DROP它,然后再重新创建它
利用视图简化复杂的连接
CREATE VIEW ProductCustomers AS
SELECT cust_name, cust_contact, prod_id
FROM Customers, Orders, OrderItems
WHERE Customers.cust_id = Orders.cust_id
AND OrderItems.order_num = Orders.order_num;
存储过程
就是为以后的使用而保存的一条或多条SQL语句的集合。
创建存储过程
CREATE PROCEDURE MailingListCount
(ListCount OUT NUMBER)
IS
BEGIN
SELECT * FROM Customers
WHERE NOT cust_email IS NULL;
ListCount := SQL%ROWCOUNT;
END;
此存储过程有一个名为ListCount的参数。此参数从存储过程返回一个值而不是传递一个值给存储过程。关键字OUT用来指示这种行为。Oracle支持IN(传递值给存储过程)、OUT(从存储过程返回值,如这里所示)、INOUT(既传递值给存储过程也从存储过程传回值)类型的参数。存储过程的代码括在BEGIN和END语句中,这里的执行一条简单的SELECT语句,它检索具有邮件地址的客户。然后用检索出的行数设置ListCount(要传递的输出参数)。