SQL> describe employees;
SQL> describe departments;
(3) 像DESCRIBE命令那样,查询数据字典视图显示组成EMPLOYEES表的列: SELECT column_name, data_type, nullable, data_length, data_precision, data_scale FROM user_tab_columns WHERE table_name = 'EMPLOYEES';
视图USER_TAB_COLUMNS将显示当前用户模式中每个表的每一列的详细情况。
练习7-3 创建表
这个练习表明案例研究正式开始。现在,您的计算机上应已安装了一个数据库,如果已完成了第5章中的练习。那么应有一个STOREDATA表空间,否则应创建一个。 在本练习中,使用SQL Developer来创建一个堆表。使用子查询来插入一些行,并修改表。
使用SQL*Plus进行更多修改,然后删除表。
(1) 以SYSTEM用户身份连接数据库,创建WEBSTORE用户并指定默认的表空间
STOREDATA和临时表空间TEMP。授予WEBSTORE用户在STOREDATA表空间上无限的配额,以及创建会话和创建表的权限。WEBSTORE模式将用于后续练习中。
CREATE USER webstore IDENTIFIED BY webstore DEFAULT TABLESPACE storedata; ALTER USER webstore QUOTA UNLIMITED ON storedata; GRANT CREATE SESSION,CREATE TABLE TO webstore; (2) 使用SQL Developer,以用户WEBSTORE身份连接。右击导航树的Tables分支,单击New Table选项。
(3) 将新表命名为CUSTOMERS,使用Add Column按钮。
(4) 单击DDL标签,看看是不是已经构造了语句。它应该如下所示 CREATE TABLE customers ( customer_id NUMBER(8,0) NOT NULL, join_date DATE NOT NULL, Customer_staus VARCHAR2(8) NOT NULL, customer_name VARCHAR2(20) NOT NULL, creditrating VARCHAR2(10) ); 返回Table选项卡,单击OK按钮创建表 (5) 运行以下语句:
INSERT INTO CUSTOMERS (CUSTOMER_ID, JOIN_DATE, CUSTOMER_STAUS, CUSTOMER_NAME, CREDITRATING) VALUES (1, SYSDATE, 'NEW', 'Ameetha', 'Platinum'); INSERT INTO CUSTOMERS (CUSTOMER_ID, JOIN_DATE, CUSTOMER_STAUS, CUSTOMER_NAME, CREDITRATING) VALUES (2, SYSDATE, 'NEW', 'Coda', 'Bronze'); COMMIT; (6) 右击SQL Developer导航中的CUSTOMERS表,单击Column和Add按钮。
(7) 定义一个新的列EMALI,数据类型为VARCHAR2(50),单击Apply按钮创建新列。 ALTER TABLE customers ADD email VARCHAR2(50); (8) 使用SQL*Plus作为WEBSTORE用户连接到数据库
(9) 为CUSTOMERS表中的JOIN_DATE列定义一个默认值: ALTER TABLE customers MODIFY(join_date DEFAULT SYSDATE); (10) 在没有指定JOIN_DATE值的情况下插入一行,检查新的行有JOIN_DATE日期,而其它行没有: INSERT INTO CUSTOMERS (CUSTOMER_ID, CUSTOMER_STAUS, CUSTOMER_NAME, CREDITRATING) VALUES (3, 'NEW', 'Sid', 'Gold'); SELECT join_date,COUNT(1) FROM customers GROUP BY join_date; (11) 创建三个额外的表
CREATE TABLE orders (
order_id NUMBER(8) NOT NULL, order_date DATE NOT NULL,
order_status VARCHAR2(8) NOT NULL, order_amount NUMBER(10,2), customer_id NUMBER(8) NOT NULL );
CREATE TABLE order_items (
order_item_id NUMBER(8) NOT NULL, order_id NUMBER(8) NOT NULL, product_id NUMBER(8) NOT NULL );
CREATE TABLE products (
product_id NUMBER(8) NOT NULL,
product_description VARCHAR2(20) NOT NULL, product_status VARCHAR2(8) NOT NULL, price NUMBER(10,2) NOT NULL, price_date DATE NOT NULL, stock_count NUMBER(8) NOT NULL );
(12) 向ORDER_ITEMS表中添加QUANTITY列,其数据类型为NUMBER ALTER TABLE order_items ADD (quantity NUMBER); 练习7-4 创建和使用临时表
本练习创建用于报告当前员工的临时表。通过使用两个SQL*Plus会话演示数据是每个会话专用的。
(1) 使用SQL*Plus,以用户HR的身份连接到数据库 (2) 按如下方式创建临时表
CREATE GLOBAL TEMPORARY TABLE tmp_emps ON COMMIT PRESERVE ROWS AS SELECT * FROM hr.employees WHERE 1=2; (3) 插入一些行,并将其提交 INSERT INTO tmp_emps SELECT * FROM employees WHERE department_id = 30; COMMIT; (4) 以HR身份登陆到第二个SQL*Plus会话 (5) 在第二个会话中,确认第一个会话中的第一个插入虽已提交但不可以见,并插入一
些不同的行:
SELECT COUNT(*) FROM tmp_emps; INSERT INTO tmp_emps SELECT * FROM employees WHERE department_id=50; COMMIT; (6) 在第一个会话中,将表截断 TRUNCATE TABLE tmp_emps; (7) 在第二个会话中,确认表的会话副本仍然包含行 SELECT COUNT(*) FROM tmp_emps; (8) 在第二个会话中,演示会话的终止并不会清除行。这需要断开连接并再次连接 SQL> disconnect; Not logged on SQL> connect hr/hr Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 Connected as hr SQL> SELECT COUNT(*) FROM tmp_emps; COUNT(*) ---------- 0 (9) 在两个会话中,通过删除表来清理环境。 练习7-5 创建索引
本练习将为CUSTOMERS表添加一些索引。
(1) 使用SQL*Plus,以用户WEBSTORE的身份连接到数据库 (2) 在客户名称和客户状态上创建复合B*树索引:
CREATE INDEX cust_name_i ON customers(customer_name, customer_staus); (3) 在一些低基数列上创建位图索引 CREATE BITMAP INDEX creditrating_i ON customers(creditrating); (4) 运行以下查询确定刚创建的索引的名称及其它一些特性 SELECT index_name, column_name, index_type, uniqueness FROM user_indexes NATURAL JOIN user_ind_columns WHERE table_name = 'CUSTOMERS'
练习7-6 管理约束
在本练习中,使用SQL Developer和SQL*Plus来定义和调整在【练习7-3】中创建的表上的一些约束。
(1) 在SQL Developer中,导航到WEBSTORE上的一系列表并单击CUSTOMERS表。 (2) 通过Constraints选项卡,查看为该表创建的4个NOT NULL约束。注意,它们的名
称起不到什么步骤作用,并在步骤(8)中确定名称。
(3) 单击Actions按钮,选择Constraints:Add Primary Key
(4) 在Add Primary Constraint窗口中,命名约束为PK_CUSTOMER_ID,选择
CUSTOMER_ID列,然后单击Apply按钮
(5) 选择Show SQL选项卡来查看创建约束的语句,然后单击Apply按钮运行该语句。 ALTER TABLE customers ADD CONSTRAINT pk_customer_id PRIMARY KEY (customer_id); (6) 使用SQL*Plus,以用户WEBSTORE的身份连接到数据库。 (7) 运行此查询来查找约束的名称: SELECT constraint_name, constraint_type, column_name FROM user_constraints NATURAL JOIN user_cons_columns WHERE table_name = 'CUSTOMERS';
(8) 使用ALTER TABLE命令,将基于步骤(7)检索到的最初约束名,将约束重命名为
更有意义的名称
ALTER TABLE customers RENAME CONSTRAINT sys_c005565 TO customer_id_not_null; ALTER TABLE customers RENAME CONSTRAINT sys_c005566 TO join_date_not_null; ALTER TABLE customers RENAME CONSTRAINT sys_c005567 TO customer_staus_not_null; ALTER TABLE customers RENAME CONSTRAINT sys_c005568 TO customer_name_not_null; (9) 向WEBSTORE模式下添加下列约束: ALTER TABLE orders ADD CONSTRAINT pk_order_id PRIMARY KEY (order_id); ALTER TABLE products ADD CONSTRAINT pk_product_id PRIMARY KEY (product_id); ALTER TABLE order_items ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(product_id); ALTER TABLE order_items ADD CONSTRAINT fk_order_id FOREIGN KEY (order_id) REFERENCES orders(order_id);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库OCP认证考试指南全册Oracle Database 11g练习与知识点 - 图文(8)在线全文阅读。
相关推荐: