oraclede中数据定义语言

oraclede中数据定义语言,第1张

Oracle:数据定义语言(DDL)

1、命名规则和约定:

表名和列名的长度最多为30个字符

表名和列名必须以字母打头

表名或者列名中不允许有空格和

Oracle服务器的保留字也不能作为表名或列名

2、数据类型

创建数据表时,要为表中的每一列分配一个数据类型。数据类型指定了将要存储在此列中的数据的类型。通过为一列提供一种数据类型,可以避免在此列中存储错误类型的数据

Varchar2:VARCHAR2是一种字符型数据类型,用来在一列中存储可变长度的字母数字混合的数据。VARCHAR2必须指定最大长度,最小长度和默认长度都是一个字符。指定的长度要置于圆括号当中,例如VARCHAR(20)。如果数据比指定的长度短,那么只存储数据值,并不在值的尾部添加空格。但是,如果输入的值比指定的长度长,则会产生错误,并不会将较长的值截短。如果某一列的值没有固定的长度,那么最适合使用VARCHAR2数据类型

Char:CHAR类型是一种字符型数据类型,用来在一列中存储固定长度的字母数字混合的数据。默认长度和最小长度都是一个字符。如果输入的值比指定的长度短,则在其尾部添加空格,以使其长度等于指定的长度;如果输入的值比指定的长度长,则会发生错误。CHAR类型适用于固定长度的值

Number:NUMBER数据类型用来存储负数、正数、整数、定点数和浮点数。NUMBER数据类型可以用于任何要进行数学计算的列。当某一列使用Number类型时,可以指定其精度和标度。精度是一个数字的有意义数字的总数,包括小数点左右两边的数字,但指定精度时小数点不计算在内。标度是小数点右边数字的总数

整数类型全部是数字,没有小数部分。如果一列定义为整数类型,则只需要提供精度的大小即可

定点小数类型的小数点右边的数字为数是指定的

浮点小数类型的小数位为数是可变的。小数点前可以有任意位数字,或者也可以根本不出现小数点。将一列定义为这种类型时不用随同NUMBER类型一起来指定标度和精度

Date:DATE类型用于存储日期和时间值。DATE类型的列中存储着日、月、世纪、小时、分钟和秒。对DATE类型不需要指定大小。

LONG:LONG类型用于可变长度的字符数据,最大为2G Byte。一张数据表中只能有一列定义为LONG类型,定义LONG类型时,不需要指定其大小

NCHAR:NCHAR类型与CHAR类型相似,但它对每一个字符都使用两个字节的二进制编码,而CHAR类型则对每一个字符使用一个字节的ACSII编码,它只能表示256个不同的字符

CLOB:这一字符大对象数据类型用于存储单字节字符数据,最大为4G个字节

NCLOB:这一字符大对象数据类型使用2 Byte的字符代码

BLOB:二进制大对象数据类型用于存储二进制数据,最大为4G Byte

3、约束

约束是对数据表施加规则。约束有助于我们使自己的数据库具有完整性。

完整性规则:

(1)实体完整性:主键中的列不能是空(null),主键提供了可以惟一地识别一行或一个实体的方法。

(2)引用完整性:外键值或者是空值,或者必须作为引用表的主键值而存在

Oracle使用约束来实现关系数据库的完整性规则,并在单个列级别实现数据完整性。无论何时,当对数据表中的一行或一条记录进行插入、更新或删除 *** 作时,都必须满足约束条件,这样其 *** 作才能成功

31、约束类型

(1)完整性约束:定义数据表中的主键和外键,以及此外键所引用的主键

(2)值约束:如果不允许值为空,如果要求值是惟一的,以及如果一个列的值只允许是一组确定的值,那么就需要定义值约束

32、命名约束

Oracle通过内部名称或用户自定义的名称来识别约束,对于每一个用户帐号,每一个约束名都必须是惟一的。一个用户不能在两张不同的数据表上创建具有相同名称的约束。一般情况下,命名约束时采用如下的约定形式:

<table name>_<column name>_<constraint type>

这里table name是要定义约束的表名,column name是要应用约束的列名,constraint type是用缩写形式来表示的约束类型

约束与缩写的对应形式

PRIMARY KEY:pk

FOREIGN KEY:fk

UNIQUE:uk

CHECK:ck

NOT NULL:nn

如果用户没有命名一个约束,则Oracle服务器会自动生成一个约束名,所用的格式是SYS_Cn,这里n是任意一个惟一的数字

33、定义约束

可以在创建表时创建约束,也可以在表创建完成之后再添加约束。约束的定义有两个级别:

列级别:一个列级别的约束只涉及单独一列,它的定义与列的定义同时进行。除外键约束和复合主键约束外,其他类型的约束均可以在列级别进行定义通用的语法格式是:

Column datatype [CONSTRAINT constraint_name] constraint_type

表级别:一个表级别的约束涉及一列或多列,它的定义与列的定义是分开进行的。一般来说,所有列的定义都完成之后才定义表级别约束。除非空约束,所有约束均可以在表级别进行定义。通用的语法格式是:

[CONSTRAINT constraint_name] constraint_type(Column name)

331、主键约束

主键约束也称为实体完整性约束。它为表创建一个主键。一张表只能有一个主键约束。无论是一列用作主键还是多列复合起来用作主键,主键只能是非空值,而且也只能有惟一的值。例如,N2公司数据库的DEPT表将DeptId列用作主键,则在列级别定义约束如下所示:

DeptId NUMBER(2) CONSTRAINT dept_deptid_pk PRIMARY KEY

在表级别定义约束如下所示:

CONSTRAINT dept_deptid_pk PRIMARY KEY(DeptId)

332、外键约束

外键约束也称为主键完整性约束。它使用一列或多列作为外键,建立了此外键与同一张表或者另一张表的主键之间的关系

要确定一张数据表的外键,其他被引用的表及其主键必须已经存在。虽然外键与被引用的主键列不需要具有相同的名称,但是外键值必须与父表的主键值相匹配,或者外键值是空值

CONSTRAINT student_facultyid_fk FOREIGN KEY(FacultyId)REFERENCES faculty(FacultyId)

STUDENT标的FaultyId引用了FACULTY表的主键FacultyId

在结束FOREIGN KEY之前,还可以添加ON DELETE CASCADE子句,它不仅允许删除父表中的记录,而且还会同时删除子表中依赖的记录。在不使用ON DELETE CASCADE子句的情况下,如果子表引用父表中的记录,那么就不能删除父表中的这一行记录

333、非空约束

非空约束确保一列具有一个值而且不是空值

334、惟一性约束

惟一性约束要求一列或一组列中的每一个值都是惟一的。如果惟一性约束应用于单一列,则此列只有惟一的值;如果惟一性约束应用于一组列,那么这组列合起来具有惟一的值。惟一性约束允许空值,除非此列也应用了NOT NULL非空约束

335、检查约束

检查约束定义了每一行都必须满足的条件。一列可以有多个检查约束,检查约束既可以在列级别定义,也可以在表级别定义

CONSTRAINT dept_deptid_cc CHECK ((DeptId>=10)and(DeptId<=99))

336、非空检查约束

非空约束也能够作为检查约束来声明,它可以在列级别定义,也可以在表级别定义:

Name VARCHAR2(15) CONSTRAINT faculty_name_ck CHECK(Name IS NOT NULL)

337、DEFAULT默认值

默认值确保当向表中插入新的一行时,某一特定的列总是具有一个值。如果用户输入另一个值,则默认值就会被覆盖,如果插入空值,那么就会使用默认值

State CHAR(2) DEFAULT ‘NJ’

4、创建Oracle数据表

CREATE TABLE语句的通用语法格式是:

CREATE TABLE [schema] tablename

(column1 datatype [CONSTRAINT constraint_name] constraint_type,

column2 datatype [CONSTRAINT constraint_name] constraint_type,…

[CONSTRAINT constraint_name] constraint_type(Column name,…),…)

schema是可选的,它与用户的注册名相同

tablename是用户指定的表名

column是单个列的名字

datatype是该列的数据类型和大小

constraint_name是用户提供的约束名

constraint_type是指完整性约束或值约束

每个列都可以有零个、一个或多个在列级别定义的约束,一般情况下,表级别约束是在所有列定义完成之后才声明

41、CREATE TABLE语句中的STORAGE子句

CREATE TABLE语句中可以包括STORAGE子句,但它是可选的。在创建数据库时,使用该子句,由参数INITIAL定义为数据表分配的初始磁盘空间,另外还可以使用另一个参数NEXT,它在数据表对分配的初始磁盘空间已经用完的情况下,定义再追加分配多少磁盘空间。

CREATE TABLE sample(Id NUMBER(3),Name VARCHAR(25))

TABLESPACE CIS_DATA

STORAGE(INITIAL 1M NEXT 100K)

PCTFREE 20;//空闲百分比

5、显示数据表信息

当用户创建了数据库中的一张表或多张表时,Oracle用自己的数据字典来跟踪所有这些表。Oracle提供了SQL语句和SQL Plus命令可以查看Oracle的数据字典表中的信息

51、查看用户的表名

SELECT TABLE_NAME FROM USER_TABLES;

Oracle创建系统表来存储用户和用户对象的有关信息,USER_TABLES是一个Oracle系统表,TABLE_NAME是此表中的一个列

52、查看表结构

DESCRIBE 表名

53、查看约束信息

Oracle的数据字典表USER_CONSTRAINTS存储着我们为每一列输入的约束信息

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE

FROM USER_CONSTRAINTS

WHERE TABLE_NAME=’STUDENT’;

表明必须采用大写字母,因为Oracle是以大写字母保存表名的

54、查看表空间信息

一个表空间包括一个或多个物理数据文件。我们可以获得使用数据字典视图USER_TABLESPACES所能得到的所有表空间的有关信息。

数据字典视图USER_USERS为用户提供了其账号的有关信息,以及永久的临时的表空间

55、注释表和列

创建数据表时可以为该表及其列添加注释,添加注释的目的是为编写文档的方便,添加注释所使用的语句是COMMENT语句。例如:

COMMENT ON TABLE student IS ‘Table holds students for INDO-S College’

COMMENT ON COLUMN employeeLname IS ‘last name’

可以分别使用数据字典视图ALL_TAB_COMMENTS 和ALL_COL_COMMENTS,查看表和列的所有注释信息

6、修改已存在的数据表

要修改已经存在的表,某些修改是允许的,有些是不允许的

61、向已存在的表添加新列

ALTER TABLE tablename

ADD colname datatype;

62、修改已存在的列

ALTER TABLE tablename

MODIFY colname newdatatype;

63、添加一个约束

ALTER TABLE tablename

ADD [CONSTRAINT constraint_name] constraint_type(Column name);

64、删除一列

ALTER TABLE tablename

DROP COLUMN columnname;

65、删除一个约束

ALTER TABLE tablename

DROP CONSTRAINT constraintname;

66、启动/禁用约束

启用或禁用约束的格式是:

ALTER TABLE tablename

ENABLE | DISABLE CONSTRAINT constraintname;

67、重新命名一列

ALTER TABLE tablename RENAME COLUMN oldname TO newname;

68、重新命名一个约束

ALTER TABLE tablename RENAME CONSTRAINT oldname TO newname;

69、修改表的存储属性

ALTER TABLE tablename STORAGE(NEXT nK)

7、删除数据表

当删除一张数据表时,表中所有的数据以及表结构将被永久性地删除

DROP TABLE tablename;

8、重新命名数据表

RENAME oldtablename TO newtablename;

一、SQL中新增列或者说添加字段的语法:

alter table 表名 add 列名 数据类型

二、例如:在表texttable中添加一列字符型字段colnew:

alter table texttable add colnew char(20)

三、添加的新列,默认值为空值NULL。需要根据需求使用SQL语句更改

1、SQL修改列的语法:

update 表名 set 字段 = 赋值 where字句(确定要修改的列)

2、实例:

update texttable set colnew = 'temp';--把所有行的 colnew列的值改为 "temp"

update texttable set colnew = 'temp' where id=1000 ;--把ID为1000的行 colnew列的值改为 "temp"

以上就是关于oraclede中数据定义语言全部的内容,包括:oraclede中数据定义语言、sql怎么在数据库中插入一列数据、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9567443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存