
SQL必知必会要点记录(5/6)
发布日期:2021-05-20 09:14:42
浏览次数:23
分类:精选文章
本文共 2140 字,大约阅读时间需要 7 分钟。
数据库操作指南
表的创建与修改
默认情况下,旨在创建一个基本的PRODUCTS
表。该表的主要字段包括prod_id
、vend_id
、prod_name
和prod_price
。注意vend_id
和prod_id
均为NOT NULL
列。至于prod_desc
字段,设置为NULL
,意味着可以为空。
CREATE TABLE PRODUCTS( prod_id CHAR(10) NOT NULL, vend_id CHAR(10) NOT NULL, prod_name CHAR(254) NOT NULL, prod_price DECIMAL(8,2) NOT NULL, prod_desc VARCHAR(1000) NULL);
对于OrderItems
表,默认情况下quantity
字段设置为默认值1
。
CREATE TABLE OrderItems( order_name INTEGER NOT NULL, order_item INTEGER NOT NULL, prod_id CHAR(10) NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, item_price DECIMAL(8,2) NOT NULL);
表的更新
为了扩展Vendors
表,可以使用ALTER TABLE
命令添加新的字段vend_phone
。
ALTER TABLE VendorsADD vend_phone CHAR(20);
如果需要删除某个字段,可以使用DROP COLUMN
命令。
ALTER TABLE VendorsDROP COLUMN vend_phone;
数据库删除
删除 permanently可以使用DROP TABLE
命令。
DROP TABLE CustCopy;
视图的创建与应用
创建一个名为ProductCustomers
的视图,用于查询多个表之间的关系。该视图会从Customers
、Orders
和OrderItems
中获取数据。
CREATE VIEW ProductCustomers ASSELECT cust_name, cust_contact, prod_idFROM Customers, Orders, OrderItemsWHERE Customers.cust_id = Orders.cust_id AND OrderItems.order_num = Orders.order_num;
数据格式化
为了方便展示,可以使用函数对数据进行格式化。例如,可以使用RTRIM
函数 去除前后空格,并结合括号信息生成格式化结果。
SELECT RTRIM(vend_name) + '(' + RTRIM(vend_country) + ')' AS vend_titleFROM VendorsORDER BY vend_name;
视图与计算字段结合
创建一个名为OrderItemsExpanded
的视图,计算扩展后的价格。该视图会展示订单中的所有详细信息。
CREATE VIEW OrderItemsExpanded ASSELECT order_num, prod_id, quantity, item_price, quantity * item_price AS expanded_priceFROM OrderItems;
存储过程的执行
创建一个名为MailingListCount
的存储过程,用于统计电子邮件地址的数量。该存储过程会返回符合条件的记录数。
CREATE PROCEDURE MailingListCount(ListCount OUT INTEGER)ISv_rows INTEGER;BEGIN SELECT COUNT(*) INTO v_rows FROM Customers WHERE NOT cust_email IS NULL; ListCount := v_rows;END;
事务处理
使用事务可以确保数据库操作的 Atomic性、Consistency和 Durability。在进行数据删除操作后,记得使用COMMIT
命令保存更改。
SET TRANSACTIONDELETE OrderItems WHERE order_num = 12345;DELETE Orders WHERE order_num = 12345;COMMIT;
游标的使用
数据库游标可以帮助实现复杂的数据操作。例如,可以逐行处理订单详细信息。
DECLARE cursor_order_details CURSOR FORSELECT order_num, order_DATE, order_totalFROM Orders;OPEN cursor_order_details;BEGIN GET LAST; FETCH NEXT; ...CLOSE cursor_order_details;
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月17日 18时34分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
memcache编译安装(cygwin环境)
2025-04-13
Memory Consistency Erros
2025-04-13
memory management before arc
2025-04-13
Memos-desktop:基于Electron框架的跨平台记事本应用
2025-04-13
memset,memcpy报错
2025-04-13
memset函数
2025-04-13
memset初始化高维数组为-1/0
2025-04-13
MEPS REAL-TIME推出Intelliguard可视化库存系统
2025-04-13
merge into 笔记
2025-04-13
Merge into的使用详解-你Merge了没有
2025-04-13
Merge Two Sorted Lists - LeetCode
2025-04-13
Merge 的小技巧
2025-04-13
Mesos 资源分配
2025-04-13
message.channel.id Discord PY
2025-04-13
MessageDigest
2025-04-13
Mes的理解
2025-04-13
MES系统如何实现远程访问?
2025-04-13
Metabase RCE漏洞复现(CVE-2023-38646)
2025-04-13
metaclass
2025-04-13