2014-12-19作业

【JSU】LJDragon's Oracle course tasks In the first semester, junior year

--1.在管理员权限下创建一个新用户,以你的名字命名,密码自定义

  1. CREATE USER LJL IDENTIFIED BY LJL;
  2. ALTER USER LJL IDENTIFIED BY LJL;
  3. ALTER USER LJL ACCOUNT UNLOCK;
  4. GRANT CONNECT,RESOURCE TO LJL;

--2.赋予新用户,连接,创建表,操作表等权限

  1. GRANT ALL ON scott.emp TO LJL;
  2. select * from dba_role_privs;
  3. select * from role_sys_privs;

--3.用新的用户连接数据库,用DDL语句创建以下表(字段名,数据类型自定义,但是要符合数据需求):

--1)客户信息表(ID,用户名,密码,邮箱,手机号码,地址)

  1. CREATE TABLE customer
  2.    (
  3.    cus_id NUMBER(6),
  4.    cus_name VARCHAR2(20),
  5.    cus_password VARCHAR(50),
  6.    cus_email VARCHAR(50),
  7.    cus_phone NUMBER(20),
  8.    cus_address VARCHAR2(50)
  9.    );
  10.    select * from customer;
  11.    --drop table customer;

--2)产品表(ID,产品名称,产品类别,尺寸,颜色,产地,价格)

  1. CREATE TABLE product
  2.     (
  3.     pro_id NUMBER(6),
  4.     pro_name VARCHAR2(50),
  5.     pro_category VARCHAR2(50),
  6.     pro_size CHAR(10),
  7.     pro_color CHAR(10),
  8.     pro_orgin VARCHAR2(50),
  9.     pro_price NUMBER(6)
  10.     );
  11.     select * from product;

--3)订单表(ID,订单编号,用户id,订单状态,支付状态,订单总额,创建时间)

  1. CREATE TABLE orders
  2. (
  3. ord_id NUMBER(6),
  4. cus_id NUMBER(6),
  5. ord_status CHAR(2),
  6. pay_status CHAR(2),
  7. ord_money NUMBER(6),
  8. ord_createtime DATE
  9. );
  10. select * from orders;

--4)订单明细表(ID,订单ID,产品ID,数量,金额,合计,创建时间,创建人)

  1. CREATE TABLE orderitems
  2. (
  3. ordit_id NUMBER(6),
  4. ord_id NUMBER(6),
  5. pro_id NUMBER(6),
  6. pro_num NUMBER(10),
  7. pro_price NUMBER(6),
  8. ordit_money NUMBER(6),
  9. ordit_createtime DATE,
  10. ordit_creator VARCHAR2(20)
  11. );
  12. select * from orderitems;

--4.给每个表加一个主键约束

  1. ALTER TABLE customer
  2.   ADD CONSTRAINTS pk_customer_cusid PRIMARY KEY (cus_id);
  3.  
  4.   ALTER TABLE product
  5.   ADD CONSTRAINTS pk_product_proid PRIMARY KEY (pro_id);
  6.  
  7.   ALTER TABLE orders
  8.   ADD CONSTRAINTS pk_orders_ordid PRIMARY KEY (ord_id);
  9.  
  10.   ALTER TABLE orderitems
  11.   ADD CONSTRAINTS pk_orderitems_cusid PRIMARY KEY (ordit_id);

--5.给客户表加一个邮箱的检查约束(邮箱中有@)

  1. ALTER TABLE customer
  2. ADD CONSTRAINTS cus_email_chk CHECK (cus_email like '%@%');

--6.给产品表的价格加一个不能是负数的检查约束

  1. ALTER TABLE product
  2.  ADD CONSTRAINTS pro_price_chk CHECK (pro_price>0);

--7.给订单表加一个外键约束

  1.     alter table orders
  2.     add constraint ord_cusid_fk foreign key(cus_id)
  3.     references customer (cus_id)
  4.     on delete set null;--删除的时候子表外键字段置空
  5. --on delete cascade;--联级删除

--8.给订单明细表加两个外键约束

  1. alter table orderitems
  2. add constraint ordit_cusid_fk foreign key(ord_id)
  3. references orders (ord_id)
  4. on delete set null;--删除的时候子表外键字段置空
  5.  
  6. alter table orderitems
  7. add constraint ordit_proid_fk foreign key(pro_id)
  8. references product (pro_id)
  9. on delete set null;--删除的时候子表外键字段置空

--9.创建一个四个序列,分别对应,客户表,产品表,订单表,订单明细表的主键

  1. CREATE SEQUENCE cus_seq;
  2. CREATE SEQUENCE pro_seq;
  3. CREATE SEQUENCE ord_seq;
  4. CREATE SEQUENCE ordit_seq;

--10.插入客户表几条测试数据(主键引用上面对应的序列值)

  1. INSERT INTO customer VALUES (cus_seq.nextval,'','qq@email',12345677,'中国');
  2. INSERT INTO customer VALUES (cus_seq.nextval,'','qq@email',12345677,'美国');
  3. INSERT INTO customer VALUES (cus_seq.nextval,'','qq@email',12345677,'加拿大');
  4. INSERT INTO customer VALUES (cus_seq.nextval,'','qq@email',12345677,'英国');

--11.插入产品表几条测试数据(主键引用上面对应的序列值)

  1. INSERT INTO product VALUES (pro_seq.nextval,'电脑','笔记本','14寸','黑色','中国',5000);
  2. INSERT INTO product VALUES (pro_seq.nextval,'Iphone','手机','5.5寸','玫瑰金','美国',6320);
  3. INSERT INTO product VALUES (pro_seq.nextval,'Ipad','平板','9寸','白色','中国',3500);
  4. INSERT INTO product VALUES (pro_seq.nextval,'Itouch','手表','3.5寸','黑色','中国',250);

--12.插入订单表几条测试数据(主键引用上面对应的序列值)

  1. INSERT INTO orders VALUES (ord_seq.nextval,2,'','',5000,sysdate);
  2. INSERT INTO orders VALUES (ord_seq.nextval,3,'','',6320,sysdate);
  3. INSERT INTO orders VALUES (ord_seq.nextval,4,'','',3500,sysdate);
  4. INSERT INTO orders VALUES (ord_seq.nextval,5,'','',250,sysdate);
  5.  select * from orders;

--13.插入订单明细表几条测试数据(主键引用上面对应的序列值)

  1. INSERT INTO orderitems VALUES (ordit_seq.nextval,3,2,1,5000,5000,sysdate,'tom');
  2. INSERT INTO orderitems VALUES (ordit_seq.nextval,4,3,1,5000,5000,sysdate,'tom');
  3. INSERT INTO orderitems VALUES (ordit_seq.nextval,5,4,1,5000,5000,sysdate,'tom');
  4. INSERT INTO orderitems VALUES (ordit_seq.nextval,6,5,1,5000,5000,sysdate,'tom');

--14.订单表是张业务量比较大的表,随着时间的推移,数据会越来越多,用户会经常用到用户id,和订单状态进行查选,现在需要优化查询速度,加一个索引

  1. create index index_ord on orders(cus_id,ord_status);

--15.当索引都不能满足性能要求的时候,需要拆分成当前表和历史表,把今年年初之前的所有数据全部迁移到历史表中

--并在把当前表年初之前的数据删除掉

  1. --这个没看懂
  2.  CREATE TABLE ordersPAR
  3.     (
  4.     ord_id NUMBER(6),
  5.     cus_id NUMBER(6),
  6.     ord_status CHAR(2),
  7.     pay_status CHAR(2),
  8.     ord_money NUMBER(6),
  9.     ord_createtime DATE
  10.     )
  11.     PARTITION BY RANGE (ord_createtime)
  12.    (PARTITION historic VALUES LESS THAN (TO_DATE('2016-1-1', 'YYYY-MM-DD')),
  13.     PARTITION presently VALUES LESS THAN (TO_DATE('2016-12-31', 'YYYY-MM-DD')))

--16.现在由于订单表分了当前表和历史表,但是用户想查两个表的数据,写一个集合语句查两个表中的数据

  1. select * from historic UNION select * from presently;

--17.用最高权限的管理员账号,授予SCOTT账号可以访问你刚刚建的用户下,客户信息表所有增删改查权限

  1. GRANT ALL ON LJL.customer TO scott;

Oracle_Q&A_04的更多相关文章

  1. Oracle_Q&A_01

    Step01: SHOW USER DESCRIPTION Step02:QUESTION & ANSWER --查询员工姓名和职位字数相等的员工 SELECT * from emp wher ...

  2. Oracle_Q&A_02

    Step02: Import SQL FILE Step02: QUESTION & ANSWER --1查询员工姓名和职位字数相等的员工 --2查询e_name以s结尾的员工(不用like) ...

  3. Oracle_Q&A_03

    1.先导入SQL文件 执行语句查看表信息 select * from student;--学生信息--(stunum,stuname,classid)select * from class;--班级信 ...

  4. Android Animation动画(很详细)

    Android Animation   Contents: Animations Tween Animations AnimationSet Interpolator Frame-By-Frame A ...

  5. android - Animation详解

    Drawable 最强大的功能是:显示Animation.AndroidSDK介绍了2种Animation: Tween Animation(渐变动画):通过对场景里的对象不断做图像变换(平移.缩放. ...

  6. Android-Animations介绍

    一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等,这些效果可以应用在绝大 ...

  7. CCF201609-1 最大波动 java (100分)

    试题编号: 201609-1 试题名称: 最大波动 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明正在利用股票的波动程度来研究股票.小明拿到了一只股票每天收盘时的价格,他 ...

  8. Cisco AP-胖瘦AP的转换

    一.瘦AP到胖AP的转换:1.登录到LAP协商的WLC2.从LAP模式恢复到胖AP,输入下面命令:config ap tftp tftp_server_ip filename ap_name注意:需要 ...

随机推荐

  1. 为什么不使用frame框架的原因

    框架的优点 重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,增加了网页下载速度) 方便制作导航栏 框架的缺点 会产生很多页面,不容易管理 不容易打印 浏览器的后退按钮无效 ...

  2. DedeCMS批量替换栏目文件保存目录的方法

    学点sql还是很有必要的.   有时候由于栏目太多,但是要修改一下栏目的保存目录.一个一个修改真的有点费事和慢.所以想了一个方法来批量修改栏目的保存目录.就是批量替换: update dede_arc ...

  3. 服务器端调用Word组件读取Word权限、未将对象引用到对象实例终极解决方案

    最近因为业务需要,需要在服务器上调用Word组件,结果遇到各种问题,比如检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败 ...

  4. JAVA关键词synchronized的作用

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

  5. C# - openxml 操作excel - '“System.IO.Packaging.Package”在未被引用的程序集中定义'

    在 CodeProject中,有位网友写的一篇基于OpenXML SDK 2.0对excel(大数据量)进行操作,其中,运行的时候,有如下错误: 类型“System.IO.Packaging.Pack ...

  6. java: cannot execute binary file

    转自:http://jxwpx.blog.51cto.com/15242/222572 java: cannot execute binary file 如果遇到这个错,一般是操作系统位数出问题了. ...

  7. java代码实现 金字塔(倒置)

    在jsp中实现如图所示的金字塔,,代码如下: 大致思路如下: 1.先画出前5行.因为 i+空格数=总行数,所以第一行的空格数是 总行数-i(第几行),然后画出 *,*的数目=2*i-11: 2.在画出 ...

  8. PHP XML Parser

    安装 XML Parser 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP XML Parser 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP utf8 ...

  9. (二)Angularjs - 入门(2)

    AngularJS AJAX AngularJS提供了$http控制,可以用来获取服务器端的数据.服务器通过一个数据库的读取操作来获取需要的数据.注意AngularJS需要JSON格式的数据.一旦数据 ...

  10. Microsoft OLE DB Provider for SQL Server 错误 '80040e21'

    我的是因为数据库满了,正在向服务商申请增加数据库容量 原文地址:Microsoft OLE DB Provider for SQL Server 错误 '800作者:欧阳IT记事本 昨天打开网站还正常 ...