sql语法入门(三)

创建表
表创建基础

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(要传递的输出参数)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值