每日学点Oracle——基础学习

目录

 

1、SQL语句命令组成

2、--建表

数据类型

直接建表法

间接建表法

3、--修改表结构 

修改字段名字

修改表名字

修改字段数据类型

增加字段

删除字段

4、--注释  

5、数据操纵

insert

insert all

更新数据

删除数据

6、表的约束


1、SQL语句命令组成

DDL数据定义语言

create

创建

alter

修改

drop

删除

truncate

清除数据

针对对象结构的操作
DML数据操纵语言

insert

插入数据

delete

删除数据

update

更新数据

 (一般后边需要加commit)
DQL数据查询语言select……from……where……group by……having……

order by……

(ASC/DESC)

 
TCL事物控制语句

commit

提交

rollback

撤回

   
DCL数据控制语言

grant

搜全

revoke

撤销授权

   

2、--建表

  • 数据类型

1、number  数据类型

number(10) 最长为10位的整数

number(10,2) 最长时10位,其中整数占8位,小数占2位

2、char 固定长度字符类型

char(10)字符长度为10位,不够则空格补齐

3、varchar2 可变字符长度

varchar2(10)字符长度最长为10位,不够不补空格

4、date 日期

date'2020-08-11'

to_date('2020-08-11','YYYY-MM-DD')

  • 直接建表法

CREATE TABLE STU (
SNAME  VARCHAR2(20),
SGENDER CHAR(3),
SBIRTHDAY  DATE,
SAGE    NUMBER(2)
);

 

  • 间接建表法

CREATE TABLE STU_COPY AS SELECT * FROM STU WHERE 1=2;--只复制表结构

CREATE TABLE EMP_COPY AS SELECT * FROM EMP; --复制结构和数据内容
SELECT * FROM STU;
SELECT * FROM EMP_COPY
SELECT * FROM EMP_ETL

3、--修改表结构 

SELECT * FROM STU;

  • 修改字段名字

ALTER TABLE STU RENAME COLUMN SGENDER TO SSEX;
  • 修改表名字

ALTER TABLE STUU RENAME TO STU;
  • 修改字段数据类型

ALTER TABLE STU MODIFY SGENDER VARCHAR2(10);
  • 增加字段

ALTER TABLE STU ADD STU_PHONE NUMBER(11);
  • 删除字段

ALTER TABLE STU DROP COLUMN STU_PHONE;

4、--注释  

SELECT * FROM STU   ;
COMMENT ON TABLE STU IS '学生表';
COMMENT ON COLUMN STU.SNAME IS '学生姓名';

5、数据操纵

  • insert

1、直接插入

INSERT INTO STU(SNAME,SGENDER,SBIRTHDAY,SAGE) VALUES('LILY','M',DATE'1995-10-05',25);

COMMIT;

2、间接插入 

SELECT * FROM EMP;

INSERT INTO STU(SNAME,SGENDER,SBIRTHDAY,SAGE) SELECT ENAME,'F',HIREDATE,TRUNC((SYSDATE-HIREDATE)/365) FROM EMP;

COMMIT;
  • insert all

SELECT * FROM EMP;

CREATE TABLE EMP_1 AS SELECT * FROM EMP WHERE 1=2;
CREATE TABLE EMP_2 AS SELECT * FROM EMP WHERE 1=2;


SELECT * FROM EMP_1;
SELECT * FROM EMP_2;

TRUNCATE TABLE EMP_1;
TRUNCATE TABLE EMP_2;


INSERT ALL 
INTO EMP_1
INTO EMP_2
SELECT * FROM EMP;

COMMIT;

--部门10的数据插入到EMP_1中,把所有的数据都插入到EMP_2中

INSERT ALL
WHEN DEPTNO=10 THEN 
  INTO EMP_1
WHEN DEPTNO<40 THEN 
INTO EMP_2
SELECT * FROM EMP;

COMMIT;

--部门10的数据插入到EMP_1中,把部门20,30数据都插入到EMP_2中
 

INSERT FIRST
WHEN DEPTNO=10 THEN 
  INTO EMP_1
WHEN DEPTNO<40 THEN 
INTO EMP_2
SELECT * FROM EMP;

COMMIT;
  • 更新数据

SELECT  * FROM STU FOR UPDATE;
--更新数据
UPDATE
 UPDATE STU SET SGENDER='F' WHERE SNAME='LILY'
 
COMMIT;

SELECT * FROM EMP_2;

UPDATE EMP_2 SET SAL=0;
COMMIT;

UPDATE EMP_2 SET SAL=(SELECT SAL FROM EMP WHERE EMP.EMPNO=EMP_2.EMPNO);
COMMIT;

UPDATE EMP_2 SET SAL=0,COMM=0;
COMMIT;
UPDATE EMP_2 SET(SAL,COMM)=(SELECT SAL,COMM FROM EMP WHERE EMP.EMPNO=EMP_2.EMPNO);

COMMIT;
  • 删除数据

--删除数据 
DELETE FROM STU WHERE SNAME='LILY';
COMMIT;

DELETE FROM EMP_2 WHERE DEPTNO=20;
COMMIT;
------------
DROP 
TRUNCATE 
DELETE

SELECT * FROM SCORE;

6、表的约束

1.PRIMARY KEY  :主键约束(非空,唯一)
2.FOREIGN KEY  :外键约束  (受另一张表的主键的约束)
3.CHECK        :检查约束--要么约束的值或者是空值
4.UNIQUE       :唯一约束--不重复,可以有多行空值
5.NOT NULL      :非空约束

1.建表的给定约束(系统给定约束名字)

CREATE TABLE STU(
STU_NUM  NUMBER(6) PRIMARY KEY,
CLASS_NUM NUMBER(4) REFERENCES DEPT(DEPTNO),
SCORE_NUM NUMBER(3) NOT NULL,
SGENDER  CHAR(3)  CHECK(SGENDER='F'OR SGENDER='M'),
TEL_NUM  NUMBER(11) UNIQUE
);

SELECT * FROM STU;

INSERT INTO STU  VALUES(1001,40,60,'F',13913913912);

COMMIT;

INSERT INTO STU  VALUES(1002,40,60,'F',13913913913);
COMMIT;

INSERT INTO STU  VALUES(1003,40,60,'',13913913916);
COMMIT;


DROP TABLE STU;


--2
CREATE TABLE STU(
STU_NUM  NUMBER(6),
CLASS_NUM NUMBER(4),
SCORE_NUM NUMBER(3),
SGENDER  CHAR(3),
TEL_NUM  NUMBER(11),
CONSTRAINT PK_STU PRIMARY KEY(STU_NUM),
CONSTRAINT FK_STU FOREIGN KEY(CLASS_NUM) REFERENCES DEPT(DEPTNO),
CONSTRAINT  CK_STU CHECK(SGENDER='F'OR SGENDER='M')
);

--3.

CREATE TABLE STU(
STU_NUM  NUMBER(6) ,
CLASS_NUM NUMBER(4),
SCORE_NUM NUMBER(3) ,
SGENDER  CHAR(3) ,
TEL_NUM  NUMBER(11) 
);

SELECT * FROM STU;

ALTER TABLE STU ADD CONSTRAINT PK_STU PRIMARY KEY(STU_NUM);

ALTER TABLE STU ADD CONSTRAINT FK_SUT FOREIGN KEY (CLASS_NUM) REFERENCES DEPT(DEPTNO);

ALTER TABLE STU ADD CONSTRAINT UN_STU  UNIQUE(TEL_NUM);

--删除约束 
ALTER TABLE STU DROP CONSTRAINT UN_STU;
--修改约束
ALTER TABLE STU MODIFY TEL_NUM NOT NULL;
----------------------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值