oracle四大语言_三、ORACLE数据库五大语言

数据定义语言(Data Definition Language)DDL

CREATE 定义数据库实体结构

ALTER 修改数据库实体结构

DROP 删除数据库实体

TRUNCATE 删除数据库实体的记录

数据操纵语言(Data Manipulation Language)DML

INSERT

UPDATE

DELETE

数据查询语言(Data Query Language)DQL

SELECT

数据控制语言(Data Control Language)DCL

GRANT

REVOKE

事务控制语言(Transaction Control Language)TCL

COMMIT

ROLLBACK

SAVEPOINT

1、数据定义语言(DDL)

1.1 创建表

CREATE TABLE [schema.] table_name (

column_name1 datatype,

column_name2 datatype,

column_name3 datatype)

其中:

schema表示对象的所有者即模式的名称。如果用户在自己的模式中创建表,则可以不指定所有者名称。

table_name 表示表的名称。

column_name 表示列的名称。

datatype 表示该列的数据类型及其长度。

创建表时,需要指定下列内容:

唯一的表名称。表内唯一的列名称。列的数据类型及其宽度。

表名的命名规则:

表名首字符应该为字母。不能使用ORACLE保留字来为表命名。表名的最大长度为30个字符。

同一用户模式下的不同表不能具有相同的名称。

可以使用下划线、数字和字母,但不能使用空格和单引号。

举例:创建student表

CREATE TABLEstudent(

stuidVARCHAR2(20) primary key,--指定这一字段为student表主键

stuname VARCHAR2(50),

sexCHAR(2)

);

CREATE TABLEstudent(

stuidVARCHAR2(20),

stunameVARCHAR2(50),

sexCHAR(2),

primary key(stuid,stuname)

);--指定多个字段为student表主键

注意:最后一个字段没有“,”,

查看表的结构用命令desc tablename

1.2 用查询的结果集创建一张表

a、 拷贝一张表的全部信息,即建一张新表,这张表的内容与另外存在的一张表的内容完全相同而表名不同。

CREATE TABLE newtablename AS SELECT * FROM existtablename;

b、 拷贝一张表,这张表的内容为另外一张存在的表的某些字段及这些字段的全部记录值。

CREATE TABLE newtablename AS SELECT column1,column2 FROM existtablename;

c、 拷贝一张表,这张表的内容为另外一张存在的表的某些字段及其全部记录值,但这些字段名与另一张已存在的表的字段名不同。

CREATE TABLEnewtablename (newcolumnname1, newcolumnname2)AS SELECT existcolumn1, existcolumn2 FROM existtablename;

d、 拷贝一张表,只拷贝已存在表的结构,不拷贝表的内容。

CREATE TABLE newtablename AS SELECT * FROM existtablename WHERE 恒假条件;

1.3修改表

a、添加新列

ALTER TABLE table_name ADD( newcolumnname datatype);

b、更改现有列的数据类型和字段宽度

ALTER TABLE tablename MODIFY( columnname datatype);

c、更改列名

ALTER TABLE tablename RENAME COLUMN oldcolumnname TO newcolumnname;

d、删除表中现有列

ALTER TABLE tablename DROP COLUMN columnname;

e、截断表truncate

TRUNCATE TABLE tablename;truncate只删除表中的记录而不删除表结构。与DELECT的的区别在于,前者不使用事务处理,而后者可以通过ROLLBACK撤销删除。如果确定表中的数据不再有用,使用TRUNCATE命令效率更高。

1.4 oracle数据库 数据表的5个约束类型

主键约束:用来唯一标示表中的一个列,一个表中的主键约束只能有一个,但是可以在一个主键约束中包含多个列,也称为联合约束。

外键约束:用来约束两个表中列之间的关系。

唯一约束:用来唯一标示表中的列。与主键约束不同的是,在一个数据表中可以有多个唯一约束。

检查约束:用来约束表中列的输入值得范围,比如在输入性别时,要求数据库中只能输入男或者女,就可以使用检查约束来约束该列。

非空约束:约束该列一定要输入值。

1.4.1 创建一个带检查约束的表 constraint

使用PL/SQL语句创建检查约束的语法如下所示:

CONSTRAINT constraint_name CHECK(condition)[语法说明:]

CONSTRAINT:关键词

constraint_name:约束名称

condition:约束条件

例如:创建BOOKINFO表时,给图书价格加上一个检查约束,要求图书价格在10元到100元之间。

CREATE TABLEBOOKINFO(

BOOKIDINT,CONSTRAINT CK_PRICE CHECK(PRICE>=10 AND PRICE <= 100)

);

1.4.2 创建一个带非空约束的表

例:在创建BOOKINFO表时,给图书名称加上一个非空约束。

CREATE TABLEBOOKINFO

(

BOOKIDINT NOT NULL,

BOOKNAMECHAR NOT NULL);

1.4.3 创建一个带唯一约束的表

语法格式:

CONSTRAINT constraint_name UNIQUE(column_name)

【语法说明】UNIQUE:唯一约束的关键词

column_name:唯一约束的名称。

举例:创建BOOKINFO表时,为图书名称(BOOKNAME)列添加唯一约束create tablebookinfo

(

bookidint,

pricedecimal,CONSTRAINT UN_BOOKNAME UNIQUE(bookname)

);

1.4.4 创建一个带外键约束的表

语法格式:CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCE table_name(column_name) ON DELETE CASCADE

[语法说明:]

CONSTRAINT:创建约束的关键字 constraint

FOREIGN KEY:外键约束的关键字foreing keyREFERENCE:引用外表的关键词reference

table_name:需要引用的外表,column_name表示该表的列。

举例:create tablepublishinfo

(

publishidvarchar(20) primary key, --主键约束

publishname varchar(30)

);create tablebookinfo

(

bookidint,

booknamechar,

publishvarchar2(20),

pubdatevarchar2(20),

pricedecimal,

authorchar,

storeint,

readerint,

remarksvarchar2(50),constraint fk_publish foreign key(publish) references publishinfo(publishid) on delete cascade);

创建BOOKINFO表,该表带有外键约束,约束名称为"FK_PUBLISH"。相关列为publish,该外键和PUBLISHINFO表中的publishid列相关联。

1.4.5 创建数据表的约束

1)创建主键约束--

alter table Student add constraint PK_Student_StuId primary key(StuId);

2) 创建检查约束--

alter table Student add constraint CK_Student_Gender check(gender='男' or gender='女');alter table Student add constraint CK_Student_Age check(Age>=0 and Age<=100);

3)创建唯一约束--

alter table Student add constraint UQ_Student_StuName unique(StuName);

4)创建外键约束--

alter table Student add constraintFK_Student_StuCLass_ClassIdforeign key(ClassId) references StuClass(ClassId);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值