ORACLE - <一战通> - 表的管理

目录

 

一,Oracle的sql

1,SQL

2,Oracle的SQL         

3,常用的DDL

4,常用的DML

5,常用的DCL

6,常用的TCL

 

二,常用的数据值类型

1,字符类型

2,数值类型

3,日期类型

4,LOB类型

三,约束的使用

1,主键约束

1)创建表时添加

         2)修改表时添加

3)移除主键约束

2,外键约束

1)创建表时添加

2)修改表时添加

3)移除约束

3,CHECK约束

1)创建表时添加

2)修改表时添加

3)移除约束

4,UNIQUE约束

1)创建表时添加

2)修改表时添加

3)移除约束

5,NOT NULL约束

1)创建表时添加

2)修改表时添加

3)移除约束

四,常用的DDL

1,使用CREATE TABLE创建表

2,使用ALTER语句修改表

3,使用DROP语句删除表

五,DML和DQL的使用

1,向表中添加数据

1)用INSERT添加表数据

2)通过其他数据表向表中添加数据

3)创建表的同时添加数据

2,用UPDATE修改表数据

3,用DELETE删除表数据

4,用SELECT查询表数据

六,其他数据操作语句

1,TRUNCATE语句

2,MERGE语句


 

一,Oracle的sql

 

 

1,SQL

 

        结构化查询语言(Structured Query Language)简称SQL。是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统的语言。

 

2,Oracle的SQL         

DDL(Data Definition Language )

数据定义语言

 

数据库对象的创建,修改,删除的操作。主要对象有数据库,数据表,视图,索引。

DML(Data Manipulation Language )

数据操作语言

对数据库表中数据进行增加,删除,修改的操作

DCL(Data Control Language)

数据控制语言

 

对数据库中对象权限进行权限设置和取消等操作。只有系统管理员才有权利执行对权限的操作,可以通过设置不同的权限提高数据库的安全性。

TCL(Transaction Control Language)

事务控制语言

 

事务提交回滚

DQL(Data Query Language)

数据库查询语言

对数据库表中数据进行查询,可以单表或夺标并且可以按不同的条件检索

 

3,常用的DDL

CREATE TABLE

创建数据库表

CREATE INDEX

创建数据库表的索引

DROP TABLE

删除数据库表

DROP INDEX

删除数据库表的索引

TRUNCATE

删除表中的所有行

ALTER TABLE

更改表结构,增加,修改,删除列

ALTER TABLE ADD CONSTRAINT

在已有表上增加约束

 

4,常用的DML

INSERT

添加数据到数据库中

UPDATE

修改数据库中的数据

DELETE

删除数据库中的数据

SELECT

选择查询数据

 

5,常用的DCL

GRANT

将权限或角色授予用户或其他角色

REVOKE

从用户或数据库角色回收权限

LOCK

对数据库的特定部分进行锁定

 

6,常用的TCL

COMMIT

提交事务处理

ROLLBACK

事务处理回退

SAVEPOINT

设置保存点

 

 

二,常用的数据值类型

 

1,字符类型

数据类型

取值范围(字节)

说明

VARCHAR2  

0~4000

可变长度的字符串

NVARCHAR2

0~1000

用来存储Unicode字符集的变长字符型数据

CHAR

0~2000

用于描述定长的字符型数据

NCHAR

0~1000

用来存储Unicode字符集的定长字符型数据

LONG

0~2GB

用来存储边长的字符串

 

VARCHAR2  与 NVARCHAR2区别

        VARCHAR2  最多可以可以存入4000个字母,或最多存入2000个汉字(数据库字符集编码是GBK时,varchar2最多能存放2000个汉字,数据库字符集编码是UTF-8时,那就最多只能存放1333个汉字)

        NVARCHAR2(size),size最大值为2000,单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。所以nvarchar2类型的数据最多能存放2000个汉字,也最多只能存放2000个字母。并且NVARCHAR2不受数据库字符集的影响。

 

2,数值类型

数据类型

取值范围(字节)

说明

NUMBER[(P,[S])]

p最大值是38位(十进制)

P 表示精度,S表示小数点的位数

可以存储证书,浮点数等数值类型

FLOAT

用来存储126位数据(二进制)

存储的精度是按二进制计算的,精度范围为二进制的1~126,在转化为十进制时需要乘以0.30103

 

3,日期类型

数据类型

说明

DATE

存储日期和时间,范围在公元前4712年1月1日到公园9999年12月31日

TIMESTAMP

存储日期和时间,比DATE更精确,可以精确到小数秒,还能显示当前是上午还是下午

 

4,LOB类型

数据类型

取值范围(字节)

说明

CLOB  

4GB

存储字符集数据

BLOB  

4GB

存储二进制数据库(图形,视频剪辑和声音文件)

 

三,约束的使用

        约束时保证数据库表数据完整性和一致性的手段,常用的有主键约束,外键约束,唯一约束,检查约束,非空约束。

1,主键约束

        主键约束在每个表中只有一个但可以由多个列组成.

1)创建表时添加

CREATE TABLE  table_name(

  column_name1 datatype,

  PRIMARY KEY(column_name1)

);

 

2)修改表时添加

ALTER TABLE table_name  ADD CONSTRAINT constraint_name PRIMARY KEY(column_name);

 

3)移除主键约束

ALTER TABLE table_name  DROP CONSTRAINT  constraint_name;

 

 

2,外键约束

        外键约束可以保证使用外键约束的数据库列与所引用的主键约束的数据列一致,一个表里可以存在多个。

1)创建表时添加

CONSTRAINT constraint_name FOREIGN KEY(column_name)

REFERENCE table_name (column_name)  ON DELETE CASCADE;


constraint_name:外键约束的名字

FOREIGN KEY(column_name):指定外键约束的列表

REFERENCE :要引用的表名(列名)

ON DELETE CASCADE:设置级联删除,当主键的字段被删除时,外键所对应的字段也被同时删除。

 

2)修改表时添加

ALTER CONSTRAINT constraint_name FOREIGN KEY(column_name)

REFERENCE table_name (column_name)  ON DELETE CASCADE;

 

3)移除约束

ALTER TABLE table_name  DROP CONSTRAINT  constraint_name;

 

3,CHECK约束

        CHECK约束是检查约束,能够规定每一个列能够输入的值,以保证数据的正确性。

 

1)创建表时添加

CONSTRAINT  constraint_name CHECK(CONDITION);

 

2)修改表时添加

ADD CONSTRAINT constraint_name  CHECK(CONDITION);

 

3)移除约束

ALTER TABLE table_name  DROP CONSTRAINT  constraint_name;

 

4,UNIQUE约束

        UNIQUE约束是唯一约束,可以设置在表中输入的字段值都是唯一的,这个约束和主键约束非常相似。不同的是同一个表中唯一约束可以由多个,而主键只能有一个。

 

1)创建表时添加

CONSTRAINT  constraint_name UNIQUE(column_name);

 

2)修改表时添加

ADD CONSTRAINT constraint_name UNIQUE(column_name);

 

3)移除约束

ALTER TABLE table_name  DROP CONSTRAINT  constraint_name;

 

 

5,NOT NULL约束

        NOT NULL约束就是非空约束,经常在创建表时添加非空约束以确保字段必须要输入值。

 

1)创建表时添加

column_name datatype  [NOT NULL|NULL];

 

2)修改表时添加

ADD TABLE table_name  MODIFY  column NOT NULL;

 

3)移除约束

ADD TABLE table_name  MODIFY  column NULL;

 

四,常用的DDL

 

1,使用CREATE TABLE创建表

        创建表时,设计数据表的结构,确定各个列的数据类型,数值,字符,日期还是图像等其他类型。

 

CREATE TABLE  table_name(

column_name  datatype [null|not null],

column_name  datatype [null | not null],

...

[conatraint]

)

table_name:数据库表名称,数据库中唯一

column_name:表列名,表中唯一

datatype:存放数据的数据类型

[null|not null]:该字段是否为空

[conatraint]:为表中的列设置约束(主键,外键,检查等)

 

2,使用ALTER语句修改表

ALTER TABLE table_name  ADD [ MODIFY |DROP COLUMN ]   column_name ;

ADD:向表中添加列。

MODIFY :修改表中已存在的列信息。

DROP COLUMN :删除表中的列,需要加上 CASCADE CONSTRAINTS,把与该列有关的约束也一并删除。

 

3,使用DROP语句删除表

DROP TABLE table_name;

 

五,DML和DQL的使用

 

1,向表中添加数据

1)用INSERT添加表数据

INSERT INTO  table_name(column_name1,column_name2,...)

VALUES(data1,data2,...);


column_name1:指定表中要添数据的列名,可以时1个到多个。默认不写是全部。

data1:列对应的数据值,跟列的参数格式一样。

 

2)通过其他数据表向表中添加数据

INSERT INTO  table_name1(column_name1,column_name2,...)

SELECT  column_name1,column_name2,... FROM  table_name2;


table_name1:目标表的表名,要插入数据的表名。

table_name2:数据来源表。必须与插入数据表列和数据类型完全一致。

 

3)创建表的同时添加数据

CREATE TABLE table_name1  AS

SELECT  column_name1,column_name2,... FROM  table_name2;


table_name1:要创建的目标表的名称。

table_name2:创建目标表时数据的来源表,可以用*代表全字段。

 

 

2,用UPDATE修改表数据

UPDATE table_name

SET  column_name1 = data1 , column_name2 = data1 ,...

[WHERE condition];


column_name1:要修改数据列的字段名,可以是一个或者多个。

data1:要赋予字段的新值,数据类型一致。

WHERE:条件,可以根据条件决定是否修改,如果省略了WHERE语句就代表修改表中该字段的所有值。

 

3,用DELETE删除表数据

DELETE FROM  table_name [WHERE condition];

 

4,用SELECT查询表数据

SELECT  column_name1,column_name2,...  FROM  table_name[WHERE condition];

 

六,其他数据操作语句

 

1,TRUNCATE语句

        TRUNCATE语句与DELETE语句一样都时用来完成删除数据库表中数据的,但二者时由区别的,使用TRUNCATE语句删除表中的记录都是要把表中的记录全部删除,但速度比使用DELETE删除表中的数据更快。

TRUNCATE FROM  table_name ;

 

2,MERGE语句

        MERGE语句与UPDATE语句的功能类似,都是修改数据表中数据的。使用MERGE语句可以对数据表同时进行增加和修改的操作。

MERGE [INTO]  table_name1

USING table_name2

ON {condition}

WHEN MATCHED THEN  merge_update_clause

WHEN NOT MATCHED THEN  merge_insert_clause;


table_name1:修改或添加的表

table_name2:参照更新的表

condition:table_name1和table_name2之间的关系或条件

merge_update_clause:如果table_name2中的条件匹配就执行更新操作

merge_insert_clause:如果条件不匹配,就执行增加操作。


merge_update_clause和 merge_insert_clause都是可以省略的,但操作时只能省略一个,如果两个都省略,那么MERGE 语句就失去意义。

 

 

        省略增加语句,首先分别查询table_name1和table_name2表中的全部数据,然后使用MERGE语句进行更新操作。如果更新的条件时两各表的ID相同,当满足条件时把table_name2满足条件的数据更新到table_name1对应的数据列中。

        省略修改语句,首先分别查询table_name1和table_name2表中的全部数据,然后使用MERGE语句进行增加操作。如果新增的条件是两个表的ID不同,当满足条件时向table_name1增加在table_name2中的数据。

        增加和修改同时进行,增加和修改同时进行是指当ON后面的条件满足时执行修改操作,不满足时执行增加的操作。首先也是分别查询table_name1和table_name2表中的全部数据,然后使用MERGE语句进行增加和更新操作。当满足条件时把table_name2满足条件的数据更新到table_name1对应的数据列中,当不满足条件时向table_name1增加在table_name2中的数据。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值