Oracle的DDL和DML

Oracle知识点整理(二)前言SQLSQL的分类Oracle的数据类型NUMBERCHARVARCHAR/VARCHAR2DATESQL操作创建表查看表结构删除表修改表修改表名修改表的结构新增字段修改字段删除字段新增数据修改数据删除数据前言这一章主要介绍一下SQL中的DDL和DML,以Oracle为例。SQLSQL:StructuredQueryLanguage结构化查询语言SQL是在关系型数据库上执行数据操作、检索、维护所使用的标准语言。所有的数据库都使用相同或相似的语言。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)
)
  • 在数据库中,所有数据类型的默认值都是NULL
  • 创建表的时候可以使用DEFAULT为某个单独的字段设置默认值
  • 数据库中字符串的字面量是使用单引号,与Java不同
  • 虽然SQL本身不区分大小写,但是字符串的值是会区分大小写的
  • NOT NULL 表示该字段不能为空,不能与DEFAULT同时用在一个字段上

查看表结构

DESC A

删除表

DROP TABLE A

修改表

修改表名

RENAME A TO B

修改表的结构

新增字段

ALTER TABLE A ADD(
	hiredate DATE DEFAULT SYSDATE
)

只能加在最后一个字段之后

修改字段

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

ALERT TABLE A MODIFY(
	job VARCHAR2(40)
)

删除字段

ALTER TABLE A DROP(hiredate)

新增数据

INSERT INTO A
(id,name)
VALUES
(1,'zs')

字段不用于表中的字段顺序一致,也不用全部写出来,根据需求去写,但是值的顺序和个数必须与上面的列出来的字段一致。

修改数据

UPDATE A SET
salary=6000,
gender='F'
WHERE id=1

如果不写where,就会把表中所有的记录都修改
数据库中的赋值就是’=’,这里跟Java不一样

删除数据

DELETE FROM A WHERE id=1

删除数据一般也要添加where条件,否在就会删除整张表的数据.

TRUNCATE是清空表操作,它是DDL,所有是不会受事务控制的,它的清空操作一旦执行就真的执行了,而且它的删除是比DELETE快很多的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126750.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • uva-211-The Domino Effect

    uva-211-The Domino Effect

    2022年1月21日
    41
  • realsense深度图像保存方法[通俗易懂]

    realsense深度图像保存方法[通俗易懂]一般使用realsense时会保存视频序列,当保存深度图像时,需要注意保存的图像矩阵的格式,不然可能造成深度值的丢失。在众多图像库中,一般会使用opencv中的imwrite()函数进行深度图像的保存。一般深度图像中深度值的单位是mm,因此一般使用np.uint16作为最终数据格式保存。例子:importnumpyasnpimportcv2deffun1(…

    2022年4月25日
    33
  • linux进程间通信方式最常用_linux进程调度

    linux进程间通信方式最常用_linux进程调度进程间的通信方式:   1.管道(pipe)及有名管道(namedpipe):     管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 2.信号(signal):     信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效

    2022年10月11日
    3
  • 浅析Apache中RewriteRule和RewriteCond规则参数的详细介绍[通俗易懂]

    浅析Apache中RewriteRule和RewriteCond规则参数的详细介绍[通俗易懂]参考: http://www.jb51.net/article/39298.htm  http://www.cnblogs.com/scgw/archive/2011/05/01/2033730.html正则的链接: http://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

    2022年5月4日
    131
  • pycharm安装第三方库报错[通俗易懂]

    pycharm安装第三方库报错[通俗易懂]清华源网址https://pypi.tuna.tsinghua.edu.cn/simple/阿里源https://mirrors.aliyun.com/pypi/simple/删除一个源,保留另一个

    2022年8月26日
    7
  • 好用的在线 java 编译网站,编辑器(亲测)

    好用的在线 java 编译网站,编辑器(亲测)在网上搜了不少在线编译网站,国内外都有。对于java来说,我感觉好用的是这个: 1. https://www.jdoodle.com/online-java-compiler这个支持Java10,并且能够保存代码,还支持导入外部库。但有时候国内登不上,真不明白这个学习网站也封。 2. https://www.tutorialspoint.com/compile_java…

    2022年7月8日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号