Oracle笔记:索引,视图,同义词,序列号,表空间

01 索引

--对于需要频繁查询的表创建索引可以极大的提高查询效率
--唯一索引是指引用的键值不重复
--在多列唯一索引的情况下,该索引可以确保引用列中每个值组合都是唯一的
--唯一索引一般加上前缀UN_,此外在一个表中是唯一的,但在同一数据库可以重复
--对于数据量小的表来说创建索引没有必要,因为索引也占用表空间
--需要注意的是在实际应用中唯一所以一般采取自动创建的方式,即定义主键约束或唯一约束时,
--oracle系统将自动的在相应的列上建立唯一索引。

--创建表
ALTER TABLE WEICK.STU
DROP PRIMARY KEY CASCADE;
DROP TABLE WEICK.STU CASCADE CONSTRAINTS;

CREATE TABLE WEICK.STU
(
  NO      VARCHAR2(10 BYTE) PRIMARY KEY,--添加主键自动生成唯一索引
  NAME    VARCHAR2(10 BYTE),
  GENTLE  VARCHAR2(2 BYTE),
  AGE     NUMBER(2),
  DEPT    VARCHAR2(20 BYTE)
);

--创建单列索引
--指定列索引创建后,再查询条件使用该列将提高查询效率
CREATE INDEX INDEX_NAME
ON STU(NAME ASC);

--创建复合索引
--复合索引也称为组合索引,指索引项是多个列,由于复合索引包含多个索引项目,
--能形成索引覆盖,因此能提高WHERE语句的查询效率
--如果表中的数据查询时有多个列总是同时出现,则可作为复合索引,提高查询效率
--需要注意复合索引使用原则是第一个条件应该是复合索引第一列
--且复合索引的顺序要和查询语句where子句的条件顺序相同才有效
--如果该列经常需要更新则不使用将其添加索引
--复合索引需要满足条件较多,既要包含查询条件又要保证条件顺序,因此复合索引不能代替多个单一索引
CREATE INDEX INDEX_NO_DEPT
ON STU(NO ASC,DEPT);

--重命名索引
ALTER INDEX INDEX_NAME RENAME TO INDEX_NAME_RE;

--合并索引
ALTER INDEX INDEX_NO_DEPT COALESCE;
--重建索引
ALTER INDEX INDEX_NO_DEPT REBUILD;
--由于频繁地对表进行操作将伴随着索引的改变,索引中将产生大量的碎片降低索引使用效率
--合并索引在不改变索引的物理组织结构基础上将B树叶子节点中的存储碎片合并在一起
--重建索引实际上是对原有索引删除再重建
--合并或重建索引都能消除索引碎片,区别在于合并代价较低,无须额外存储空间,而重建相反


--查看索引
--INDEX_TYPE=NORMAL为B树索引
SELECT *
FROM USER_INDEXES
WHERE TABLE_NAME = 'STU';
SELECT * FROM USER_INDEXES;
SELECT * FROM USER_IND_COLUMNS;
SELECT * FROM ALL_IND_COLUMNS;
SELECT * FROM DBA_IND_COLUMNS;
SELECT * FROM USER_SEGMENTS;

----删除索引
----删除表时,所有基于表的索引也会被自动删除
--DROP INDEX INDEX_NO_DEPT;




--0R
ALTER TABLE WEICK.STU
 DROP PRIMARY KEY CASCADE;

DROP TABLE WEICK.STU CASCADE CONSTRAINTS;

CREATE TABLE WEICK.STU
(
  NO      VARCHAR2(10 BYTE),
  NAME    VARCHAR2(10 BYTE),
  GENTLE  VARCHAR2(2 BYTE),
  AGE     NUMBER(2),
  DEPT    VARCHAR2(20 BYTE)
)
TABLESPACE USERS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


CREATE INDEX WEICK.INDEX_NAME_RE ON WEICK.STU
(NAME)
LOGGING
TABLESPACE USERS
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           );

CREATE INDEX WEICK.INDEX_NO_DEPT ON WEICK.STU
(NO, DEPT)
LOGGING
TABLESPACE USERS
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           );

--  There is no statement for index WEICK.SYS_C0012403.
--  The object is created when the parent object is created.

ALTER TABLE WEICK.STU ADD (
  PRIMARY KEY
  (NO)
  USING INDEX
    TABLESPACE USERS
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);

02 视图

--视图是按不同的数据组织形式对基本表中数据进行重新组织而得到的数据对象
--视图的结构和内容是通过SQL SELECT语句获得的,其也有一个名称为视图名,保存在数据库中
--视图可可以被看成虚拟表或则存储查询
--当频繁的对多个相关表进行连接查询时,可以通过创建视图再对视图进行查询

-----创建相关表
ALTER TABLE CLIENT_TBL DROP PRIMARY KEY CASCADE;
DROP TABLE CLIENT_TBL CASCADE CONSTRAINTS;
CREATE TABLE CLIENT_TBL(
IdentityCard VARCHAR2(20)  PRIMARY KEY,
FirstName VARCHAR2(20),
LastName VARCHAR2(20),
Phone VARCHAR2(20),
Age NUMBER(3));
-----
ALTER TABLE FUND_TBL DROP PRIMARY KEY CASCADE;
DROP TABLE FUND_TBL CASCADE CONSTRAINTS;
CREATE TABLE FUND_TBL(
FundId VARCHAR2(20) PRIMARY KEY,
FundName VARCHAR2(20),
FundTypeId VARCHAR2(20),FOREIGN KEY(FundTypeId) REFERENCES FUND_TYPE_TBL(FundTypeId),
Age NUMBER(3),
RiskLevel NUMBER(2),
ManagerId VARCHAR2(20));
-----
ALTER TABLE FUND_TYPE_TBL DROP PRIMARY KEY CASCADE;
DROP TABLE FUND_TYPE_TBL CASCADE CONSTRAINTS;
CREATE TABLE FUND_TYPE_TBL(
FundTypeId VARCHAR2(20) PRIMARY KEY,
TypeName VARCHAR2(20));
-----
ALTER TABLE MANAGER_TBL DROP PRIMARY KEY CASCADE;
DROP TABLE MANAGER_TBL CASCADE CONSTRAINTS;
CREATE TABLE MANAGER_TBL(
IdentityCard VARCHAR2(20) PRIMARY KEY,
FirstName VARCHAR2(20),
LastName VARCHAR2(20),
Phone VARCHAR2(20),
Age NUMBER(3),
GraduateSchool VARCHAR2(20),
WorkAge NUMBER(3));
-----
ALTER TABLE CLIENT_POSITION_TBL DROP PRIMARY KEY CASCADE;
DROP TABLE CLIENT_POSITION_TBL CASCADE CONSTRAINTS;
CREATE TABLE CLIENT_POSITION_TBL(
PositionId VARCHAR2(20) PRIMARY KEY,
ClientId VARCHAR2(20),FOREIGN KEY(ClientId) REFERENCES CLIENT_TBL(IdentityCard),
FundId VARCHAR2(20),FOREIGN KEY(FundId) REFERENCES FUND_TBL(FundId),
ManagerId VARCHAR2(20),FOREIGN KEY(ManagerId) REFERENCES MANAGER_TBL(IdentityCard),
PositionAmount NUMBER(20,2));

-----插入些数据
INSERT INTO MANAGER_TBL SELECT 
'100000000000000001' AS IdentityCard,
'刘松格' AS FirstName,
'liusongge' AS LastName,
'10000000001' AS Phone,
30 AS Age,
'清华大学' AS GraduateSchool,
5 AS WorkAge
FROM DUAL;
INSERT INTO MANAGER_TBL SELECT 
'100000000000000002' AS IdentityCard,
'侯昊' AS FirstName,
'houhao' AS LastName,
'10000000002' AS Phone,
40 AS Age,
'北京大学' AS GraduateSchool,
10 AS WorkAge
FROM DUAL;
-----
INSERT INTO FUND_TYPE_TBL SELECT 
'1' AS FundTypeId,
'科技' AS TypeName
FROM DUAL;
INSERT INTO FUND_TYPE_TBL SELECT 
'2' AS FundTypeId,
'消费' AS TypeName
FROM DUAL;
-----
INSERT INTO FUND_TBL SELECT 
'100001' AS FundId,
'广发双擎' AS FundName,
'1' AS FundTypeId,
2 AS Age,
4 AS RiskLevel,
'1' AS ManagerId
FROM DUAL;
INSERT INTO FUND_TBL SELECT 
'100002' AS FundId,
'中证白酒' AS FundName,
'2' AS FundTypeId,
10 AS Age,
5 AS RiskLevel,
'2' AS ManagerId
FROM DUAL;
-----
INSERT INTO CLIENT_TBL SELECT 
'900000000000000001' AS IdentityCard,
'一号韭菜' AS FirstName,
'jiucai no.1' AS LastName,
'90000000001' AS Phone,
18 AS Age
FROM DUAL;
INSERT INTO CLIENT_TBL SELECT 
'900000000000000002' AS IdentityCard,
'二号韭菜' AS FirstName,
'jiucai no.2' AS LastName,
'90000000002' AS Phone,
19 AS Age
FROM DUAL;
-----
INSERT INTO CLIENT_POSITION_TBL SELECT 
'1' AS PositionId,
'900000000000000001' AS ClientId,
'100001' AS FundId,
'100000000000000001' AS ManagerId,
10000 AS PositionAmount
FROM DUAL;
INSERT INTO CLIENT_POSITION_TBL SELECT 
'2' AS PositionId,
'900000000000000002' AS ClientId,
'100002' AS FundId,
'100000000000000002' AS ManagerId,
20000 AS PositionAmount
FROM DUAL;
COMMIT;

-----创建视图
DROP VIEW CLIENT_POSITION_V;
CREATE OR REPLACE FORCE VIEW CLIENT_POSITION_V(
    PositionId,
    ClientId,
    ClientName,
    FundId,
    FundName,
    ManagerId,
    ManagerName,
    PositionAmount)
AS SELECT
        CP.POSITIONID    AS PositionId,
        CP.CLIENTID    AS ClientId,
        C.FIRSTNAME || ',' || C.LASTNAME    AS ClientName,
        CP.FUNDID    AS FundId,
        F.FUNDNAME    AS FundName,
        CP.MANAGERID    AS ManagerId,
        M.FIRSTNAME || ',' || M.LASTNAME    AS ManagerName,
        CP.POSITIONAMOUNT    AS PositionAmount
    FROM CLIENT_POSITION_TBL CP 
            INNER JOIN CLIENT_TBL C
            ON CP.CLIENTID    = C.IDENTITYCARD
            
            INNER JOIN(SELECT F.*,FT.TYPENAME FROM
                        FUND_TBL F INNER JOIN
                        FUND_TYPE_TBL FT
                        ON F.FUNDTYPEID = FT.FUNDTYPEID)F                  
            ON CP.FUNDID = F.FUNDID    
                                
            INNER JOIN MANAGER_TBL M
            ON CP.MANAGERID = M.IDENTITYCARD
    ORDER BY POSITIONID;
                            
--通过视图查询数据
--一般只对视图进行查询,不建议使用视图增删改
SELECT * FROM CLIENT_POSITION_V;

03 同义词

--ORACLE不仅可以指定基本表别名,还可以指定许多数据库对象别名,ORACLE将其称为同义词(Synonym)
--同义词是数据库对象的一个别名,可以为表,视图,序列,过程,函数,程序包等创建同义词
--节省数据库空间,对不同用户的操作同一张表没有多少差别
--扩展了数据库的使用范围,能够在不同的数据库用户之间实现交互
--同义词可以创建在不同的数据库服务器上,通过网络实现连接
--同义词有共有私有两种类型,私有类型只能由当前用户使用,共有可以被所有用户使用(前提是授予该用户权限)

CREATE OR REPLACE PUBLIC SYNONYM CLIENT_POSITION_TBL FOR WEICK.CLIENT_POSITION_TBL;
--授权
--GRANT SELECT ON WEICK.CLIENT_POSITION_TBL TO xxxxxxx;

04 序列号

DROP TABLE WEICK.SEQUENCE_TEST_TBL CASCADE CONSTRAINTS;
CREATE TABLE WEICK.SEQUENCE_TEST_TBL
(
  SEQID  VARCHAR2(20 BYTE),
  FIRSTNAME    VARCHAR2(20 BYTE)
);

DROP SEQUENCE WEICK.SEQUENCE_TEST_SEQ;
CREATE SEQUENCE WEICK.SEQUENCE_TEST_SEQ
  START WITH 1
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;

--CREATE OR REPLACE PUBLIC SYNONYM SEQUENCE_TEST_SEQ FOR WEICK.SEQUENCE_TEST_SEQ;
--GRANT SELECT ON WEICK.SEQUENCE_TEST_SEQ TO XXXXXXX;

--SQL Server可以在创建表时可以设置自增列,在oracle中则使用序列(Sequence)来实现此功能
--INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
--START WITH 定义序列的初始值(即产生的第一个值),默认为1。
--MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
--MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
--CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
--CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
--大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。
--但cache个数也不能设置太大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入cache x个。这种情况也能会在数据库关闭时也会导致序号不连续。
--NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。
--CURRVAL 中存放序列的当前值,NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。
--序列创建完成后,需要先通过序列码.NEXTVAL获取第一个序列值才能对其序列码.CURRVAL查询
SELECT SEQUENCE_TEST_SEQ.NEXTVAL FROM DUAL;
SELECT SEQUENCE_TEST_SEQ.CURRVAL FROM DUAL;

--序列的使用
INSERT INTO SEQUENCE_TEST_TBL SELECT
SEQUENCE_TEST_SEQ.NEXTVAL AS SEQID,
NULL AS FIRSTNAME
FROM DUAL;
INSERT INTO SEQUENCE_TEST_TBL SELECT
SEQUENCE_TEST_SEQ.NEXTVAL AS SEQID,
NULL AS FIRSTNAME
FROM DUAL;
COMMIT;

SELECT * FROM SEQUENCE_TEST_TBL;

05 表空间

--表空间是oracle用于存放海量数据,解决数据在不同平台上移植的统一存取格式的数据对象
--在oracle中,若干操作系统文件可以组成一个表空间,表空间统一管理空间中的数据文件,
--一个数据文件只能属于一个表空间,一个数据库空间由若干个表空间组成。

--创建表空间
DROP TABLESPACE MYORACLE_TBLSPACE INCLUDING CONTENTS AND DATAFILES;
CREATE TABLESPACE MYORACLE_TBLSPACE DATAFILE 
'E:/oracle/MYORACLE_TBLSPACE.dbf' SIZE 512M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

--创建用户
create user MYORACLE_SCHEMA identified by MYORACLE_SCHEMA default tablespace MYORACLE_TBLSPACE;
--授予用户权限
grant connect,resource to MYORACLE_SCHEMA; 
grant dba to MYORACLE_SCHEMA;



--扩充表空间
ALTER TABLESPACE MYORACLE_TBLSPACE
ADD DATAFILE 'E:/oracle/MYORACLE_TBLSPACE.ORA' SIZE 5M;



--为表和索引指定表空间
CREATE TABLE TABLESPACE_TEST_TBL
(
    ID NUMBER
)
TABLESPACE MYORACLE_TBLSPACE;

CREATE INDEX UN_TABLESPACE_TEST_TBL_ID ON TABLESPACE_TEST_TBL(ID)
TABLESPACE MYORACLE_TBLSPACE;

在为应用程序开发创建数据库时,sqlserver数据库一般会对每个应用程序新建一个单独的数据库,
oracle可以同一数据库为不同的应用程序开辟不同的表空间并创建不同权限的用户操作表空间数据。
以创建一个音乐商城应用程序准备数据库为例,如下:

在sys用户下创建表空间和用户
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

--创建表空间
DROP TABLESPACE MUSICSTORE_TBLSPACE INCLUDING CONTENTS AND DATAFILES;
CREATE TABLESPACE MUSICSTORE_TBLSPACE DATAFILE 
'E:/oracle/MUSICSTORE_TBLSPACE.dbf' SIZE 128M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

--创建用户
create user MUSICSTORE identified by MUSICSTORE default tablespace MUSICSTORE_TBLSPACE;
--授予用户权限
grant connect,resource to MUSICSTORE; 
grant dba to MUSICSTORE;

使用MUSICSTORE用户等陆toad for oracle创建表
在这里插入图片描述

在这里插入图片描述


--创建表
CREATE TABLE Albums(
AlbumsId int primary key,
GenreId int,
ArtistId int,
Title varchar2(32),
Price number(18,2),
AlbumArtUrl varchar2(128)
);

CREATE TABLE Artists(
ArtistsId int primary key,
Name varchar2(32)
);

CREATE TABLE Carts(
RecordId int primary key,
CartId int not null,
AlbumId int,
Count int,
DataCreated date
);

CREATE TABLE Genres(
GenresId int primary key,
Name varchar2(32) not null,
Description varchar2(64)
);

CREATE TABLE OrderDetails(
OrderDetailId int primary key,
OrderId int,
AlbumId int,
Quantity int,
UnitPrice number(18,2)
);

CREATE TABLE Orders(
OrderId int primary key,
OrderDate date,
Username varchar2(32) not null,
FirstName varchar2(32),
LastName varchar2(32),
Address varchar2(32),
City varchar2(32),
State varchar2(32),
PostalCode varchar2(32),
Country varchar2(32),
Phone varchar2(32),
Email varchar2(32),
Total number(18,2)
);

toad中相关表script


ALTER TABLE MUSICSTORE.ALBUMS
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.ALBUMS CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.ALBUMS
(
  ALBUMSID     INTEGER,
  GENREID      INTEGER,
  ARTISTID     INTEGER,
  TITLE        VARCHAR2(32 BYTE),
  PRICE        NUMBER(18,2),
  ALBUMARTURL  VARCHAR2(128 BYTE)
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011396.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.ALBUMS ADD (
  PRIMARY KEY
  (ALBUMSID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);


ALTER TABLE MUSICSTORE.ARTISTS
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.ARTISTS CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.ARTISTS
(
  ARTISTSID  INTEGER,
  NAME       VARCHAR2(32 BYTE)
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011397.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.ARTISTS ADD (
  PRIMARY KEY
  (ARTISTSID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);


ALTER TABLE MUSICSTORE.CARTS
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.CARTS CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.CARTS
(
  RECORDID     INTEGER,
  CARTID       INTEGER                          NOT NULL,
  ALBUMID      INTEGER,
  COUNT        INTEGER,
  DATACREATED  DATE
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011399.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.CARTS ADD (
  PRIMARY KEY
  (RECORDID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);


ALTER TABLE MUSICSTORE.GENRES
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.GENRES CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.GENRES
(
  GENRESID     INTEGER,
  NAME         VARCHAR2(32 BYTE)                NOT NULL,
  DESCRIPTION  VARCHAR2(64 BYTE)
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011401.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.GENRES ADD (
  PRIMARY KEY
  (GENRESID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);


ALTER TABLE MUSICSTORE.ORDERDETAILS
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.ORDERDETAILS CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.ORDERDETAILS
(
  ORDERDETAILID  INTEGER,
  ORDERID        INTEGER,
  ALBUMID        INTEGER,
  QUANTITY       INTEGER,
  UNITPRICE      NUMBER(18,2)
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011402.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.ORDERDETAILS ADD (
  PRIMARY KEY
  (ORDERDETAILID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);


ALTER TABLE MUSICSTORE.ORDERS
 DROP PRIMARY KEY CASCADE;

DROP TABLE MUSICSTORE.ORDERS CASCADE CONSTRAINTS;

CREATE TABLE MUSICSTORE.ORDERS
(
  ORDERID     INTEGER,
  ORDERDATE   DATE,
  USERNAME    VARCHAR2(32 BYTE)                 NOT NULL,
  FIRSTNAME   VARCHAR2(32 BYTE),
  LASTNAME    VARCHAR2(32 BYTE),
  ADDRESS     VARCHAR2(32 BYTE),
  CITY        VARCHAR2(32 BYTE),
  STATE       VARCHAR2(32 BYTE),
  POSTALCODE  VARCHAR2(32 BYTE),
  COUNTRY     VARCHAR2(32 BYTE),
  PHONE       VARCHAR2(32 BYTE),
  EMAIL       VARCHAR2(32 BYTE),
  TOTAL       NUMBER(18,2)
)
TABLESPACE MUSICSTORE_TBLSPACE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;


--  There is no statement for index MUSICSTORE.SYS_C0011404.
--  The object is created when the parent object is created.

ALTER TABLE MUSICSTORE.ORDERS ADD (
  PRIMARY KEY
  (ORDERID)
  USING INDEX
    TABLESPACE MUSICSTORE_TBLSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
  ENABLE VALIDATE);

猜你喜欢

转载自blog.csdn.net/qq_39827640/article/details/106355113