Oracle实操

建表

CREATE TABLE ucr_crm1.xdd_test10
( name VARCHAR2(30),
serial_number VARCHAR2(30),
fenlei VARCHAR2(30),
xinyongdu VARCHAR2(30),
CONSTRAINT pk_staff4 PRIMARY KEY(serial_number)
)

插入数据

【单行插入】

INSERT INTO customer(First_Name,Last_Name,Birth_Date,AGE)VALUES(’jhon’,’smith’,to_date(‘1999-09-05’,’yyyy-mm-dd’),25)

【多行插入】

INSERT ALL INTO CUSTOMER(FIRST_NAME, LAST_NAME, BIRTH_DATE, AGE)VALUES( ‘jhon’, ‘smith’, TO_DATE
(‘1999-09-05’, ‘yyyy-mm-dd’), 25) INTO CUSTOMER(FIRST_NAME, LAST_NAME, BIRTH_DATE, AGE)VALUES( ‘jason’, ‘hobby’, TO_DATE
(‘1989-01-25’, ‘yyyy-mm-dd’), 35)
SELECT * FROM DUAL(没有实际意义,但是不可缺省)

变更表名:

ALTER TABLE customer RENAME TO customers

【变更列名】:

ALTER TABLE t_staff2 RENAME COLUMN is_disabled TO staff_status;

【添加字段】

ALTER TABLE t_staff2 ADD(is_disabled NUMBER(1) DEFAULT(0)); – DEFAULT 的括号可以省略

ALTER TABLE customer ADD (gender VARCHAR2(30), age integer default 22 not null)

【修改字段】(执行之后无法恢复)

ALTER table customer modify Addr char(30) #将 “Addr” 栏位的资料种类改为 char(30)
ALTER TABLE customer DROP PRIMARY KEY #删除主键
ALTER TABLE ucr_crm1.xdd_test6 modify serial_number_2 NULL; #可为空
ALTER TABLE t_staff2 MODIFY(staff_status DEFAULT(‘1’)); #修改默认值

ALTER TABLE t_staff2 DROP(height,weight); #删除字段

备份表

CREATE TABLE shohin AS SELECT * FROM customer –备份到新表

INSERT INTO shohin SELECT * FROM customer –备份到已有表

【备注】insert语句的select语句中,可以使用where子句或者group by子句等任何sql语法。(但是使用order by子句并不会产生任何效果)

删除行记录

DELETE FROM customer WHERE first_name = ‘jhon’
如果想要删除的数据表和另外一张表中存在外键约束的条件,那么当要删除其中的主表时,需要在删除语句中使用CASCADE CONSTRAINTS。
DROP TABLE table_name CASCADE CONSTRAINTS

更新数据

UPDATE shohin SET age = 26 WHERE FIRST_name = ‘jhon’
列检查约束(CONSTRAINT后跟定义的约束名称,如不需要定义,则可去掉CONSTRAINT)

ALTER TABLE customer ADD CHECK (gender LIKE ‘[MF]’)

如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:

ALTER TABLE Persons ADD CONSTRAINT chkPerson CHECK (IdP>0 AND City=’Sandnes’)
加主键

ALTER TABLE OrderItems ADD CONSTRAINT PKOrderItems PRIMARY KEY (ordernum, order_item);

ALTER TABLE Customer ADD PRIMARY KEY (SID);
CREATE TABLE Customer (SID integer PRIMARY KEY, LastName varchar(30), FirstName varchar(30));

加外键

1、禁止删除,也是 Oracle 默认行为。
2、参照主表把从表中对应的数据一同删除。适合强耦合关系。
ALTER TABLE t_field_enum ADD CONSTRAINT fk_field_code FOREIGN KEY(field_code) REFERENCES t_field(field_code) ON DELETE CASCADE;
3、参照主表把从表中对应的数据设置为空。适合弱耦合关系。
ALTER TABLE t_field_enum ADD CONSTRAINT fk_field_code FOREIGN KEY(field_code) REFERENCES t_field(field_code) ON DELETE SET NULL;
ALTER TABLE OrderItems ADD CONSTRAINT FKOrderItemsOrders FOREIGN KEY (order_num) REFERENCES Orders (order_num);
CREATE TABLE ORDERS (OrderID integer primary key, OrderDate date, Customer_SID integer references CUSTOMER(SID), Amount double);
举例来说,假设我们有两个表格:一个 CUSTOMER 表格,里面记录了所有顾客的资料; 另一个 ORDERS 表格,里面记录了所有顾客订购的资料。在这里的一个限制,就是所有的 订购资料中的顾客,都一定是要跟在 CUSTOMER 表格中存在。在这里,我们就会在 ORDERS 表格中设定一个外来键,而这个外来键是指向 CUSTOMER 表格中的主键。这样 一来,我们就可以确定所有在 ORDERS 表格中的顾客都存在 CUSTOMER 表格中。换句 话说,ORDERS 表格之中,不能有任何顾客是不存在于 CUSTOMER 表格中的资料。

视图

语法:create or replace VIEW 视图名称 视图中字段名 as select语句
备注:中文字段名称必须用双引号
授权:grant create any view to scott

CREATE OR REPLACE VIEW shohin_view (“姓名”,”年龄”) AS SELECT trim(first_name)||’ ’ ||trim(last_name),birth_date FROM shohin ORDER BY first_name DESC [with check option]
DROP VIEW shohin_view
在视图中删除一条数据记录需要满足的基本原则为:定义的视图中不能含有distinct关键字、group by子句以及集合函数。
create VIEW AvgTankaByBunrui AS
SELECT SHOHIN_ID,
SHOHIN_MEI,
SHOHIN_BUNRUI,
HANBAI_TANKA,
(SELECT AVG(HANBAI_TANKA) AS AVG_HANBAI_TANKA
FROM SHOHIN S1
WHERE S1.SHOHIN_BUNRUI = S2.SHOHIN_BUNRUI
GROUP BY SHOHIN_BUNRUI)
FROM SHOHIN S2

建表语句中加入注释

create table scott.DM_IND_ALGORITHM_INFO
(
algorithm_desc VARCHAR2(200),
algorithm_beanid VARCHAR2(50),
algorithm_type VARCHAR2(1),
algorithm_name_cn VARCHAR2(100),
algorithm_name VARCHAR2(100),
uu_id VARCHAR2(32) not null
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 160K
next 32K
minextents 1
maxextents unlimited
);
comment on table scott.DM_IND_ALGORITHM_INFO
is ‘指标算法表’;
comment on column scott.DM_IND_ALGORITHM_INFO.uu_id
is ‘算法唯一标识’;

索引

索引的命名并没有一个固定的方式。通常会用的方式是在名称前加一个字首,例如”IDX_”

在表CUSTOMER的Last_Name 这个栏位上建一个索引:

CREATE INDEX IDX_CUSTOMER_LAST_NAME on CUSTOMER (Last_Name)

在 City 及 Country 这两个栏位上建一个索引:

CREATE INDEX IDX_CUSTOMER_LOCATION on CUSTOMER (City, Country)
CASE[详细示例见《SQL语句教程43页》]
CASE store_name

WHEN ‘Los Angeles’ THEN Sales * 2

WHEN ‘San Diego’ THEN Sales * 1.5

ELSE Sales

END “New Sales” —END后边为新字段名称

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值