Oracle知识点整理(二)


前言
SQL
SQL的分类
Oracle的数据类型
NUMBER
CHAR
VARCHAR/VARCHAR2
DATE
SQL操作
创建表
查看表结构
删除表
修改表
修改表名
修改表的结构
新增字段
修改字段
删除字段
新增数据
修改数据
删除数据
前言
这一章主要介绍一下SQL中的DDL和DML,以Oracle为例。

SQL
SQL:Structured Query Language 结构化查询语言
SQL是在关系型数据库上执行数据操作、检索、维护所使用的标准语言。
所有的数据库都使用相同或相似的语言。

SQL的分类
SQL分为DDL、DML、TCL、DQL、DCL。
DDL:数据定义语言。用于创建、修改、删除数据库对象。包括CREATE/ALTER/DROP/TRUNCATE
DML:数据操作语言。用于改变表中的数据,和事务相关,执行完后需要经过事务控制语言提交后才能将改变应用到表中。包括INSERT/UPDATE/DELETE
TCL:事务控制语言。用来维护数据一致性的语句,包括COMMIT 提交/ROLLBACK 回滚/SAVEPOINT 保存点
DQL:数据查询语言。用来查询所需数据,只有SELECT语句,他是最复杂的SQL,大部分面试涉及SQL都是考察DQL。
DCL:数据控制语言。用于执行权限的授予和收回操作。包括GRANT/REVOKE/CREATE USER

建议:SQL本身是不区分大小写的,由于可读性的问题,经常会把关键字全部大写,非关键字全部小写,比如上面涉及到的CREATE、INSERT、COMMIT等,当然了,还有一些其他的。这是一个建议,不这么写也完全没问题,看自己吧。

Oracle的数据类型
NUMBER
表示数字类型。
NUMBER(P,S),其中P表示数字的总位数,S表示小数的位数,如果没有S则不写,用于表示整数。
例如 a NUMBER(5,1),表示a字段表示的整数位最大位数四位,小数最大位数一位,表示的最大数字为:9999.9

CHAR
表示固定长度的字符类型。
CHAR(N),N表示占用的字节数,最大为2000字节。
例如 b CHAR(20)表示b字段最多存储20个字节的字符串,并且占用的空间是固定的20字节。

VARCHAR/VARCHAR2
表示变长的字符类型
VARCHAR2(N)N表示最多可占用的字节数,最大长度为4000字节。
例如 c VARCHAR2(200)表示c列最多存储200字节,如果c只有30个字节,那么它所占用的空间只有30,而不会是200

注意:应该注意到我所使用的都是VARCHAR2,而没有使用VARCHAR。他们是什么关系呢?
VARCHAR2是Oracle弄出来的,就现在来说,他是和VARCHAR一样的功能,就是多了一个2而已,为什么会有这个2呢?有兴趣的可以去了解一下,在Oracle中,VARCHAR和VARCHAR2都是有的,但是Oracle建议使用VARCHAR2。

CHAR与VARCHAR2
CHAR是固定长度的类型,它存储每一条记录都是一样长的,所以,它会存在浪费空间的情况,但是查询快。
VARCHAR2是变长的类型,它存储每一条记录都是按照实际占用的空间来的,所以,它不存在浪费空间,但是查询会慢一点。
实际开发中,可以根据需要自行选择它俩。

DATE
用于定义日期时间的数据类型。
长度是7个字节,每个字节分别表示世纪、年、月、日、时、分、秒。可以看出他的精度最多到秒。如果要表示秒一下的时间,那就的用另一个类型TIMESTAMP。

SQL操作
创建表
CREATE TABLE A(
    id NUMBER(4),
    name VARCHAR2(20) NOT NULL,
    gender CHAR(1) DEFAULT 'M',
    birth DATE,
    salary NUMBER(6,2),
    job VARCHAR2(30),
    deptno NUMBER(2)
)
1
2
3
4
5
6
7
8
9
在数据库中,所有数据类型的默认值都是NULL
创建表的时候可以使用DEFAULT为某个单独的字段设置默认值
数据库中字符串的字面量是使用单引号,与Java不同
虽然SQL本身不区分大小写,但是字符串的值是会区分大小写的
NOT NULL 表示该字段不能为空,不能与DEFAULT同时用在一个字段上
查看表结构
DESC A
1
删除表
DROP TABLE A
1
修改表
修改表名
RENAME A TO B
1
修改表的结构
新增字段
ALTER TABLE A ADD(
    hiredate DATE DEFAULT SYSDATE
)
1
2
3
只能加在最后一个字段之后

修改字段
可以修改字段的类型、长度、默认值、是否非空,不能修改字段名
避免表中有数据后修改,若此时修改尽量不修改类型,若修改长度应该增大而非缩小,否在可能修改失败

ALERT TABLE A MODIFY(
    job VARCHAR2(40)
)
1
2
3
删除字段
ALTER TABLE A DROP(hiredate)
1
新增数据
INSERT INTO A
(id,name)
VALUES
(1,'zs')
1
2
3
4
字段不用于表中的字段顺序一致,也不用全部写出来,根据需求去写,但是值的顺序和个数必须与上面的列出来的字段一致。

修改数据
UPDATE A SET
salary=6000,
gender='F'
WHERE id=1
1
2
3
4
如果不写where,就会把表中所有的记录都修改
数据库中的赋值就是’=’,这里跟Java不一样

删除数据
DELETE FROM A WHERE id=1
1
删除数据一般也要添加where条件,否在就会删除整张表的数据.

TRU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值