SQL 的数据定义功能主要是针对数据对象进行定义的,这些数据对象主要包括:表,视图以及索引。
  
  注意:由于视图是基于表的虚表,而索引是依附在基表上的,所以视图和索引均不提供修改视图和索引定义的操作。如果用户想要修改只能通过删除再创建的方式。

CREATE  
    在数据库中对数据对象的创建使用的是 CREATE 语句来完成。

    1. 创建表

      在使用数据库的时候经常用到的就是对表的创建。SQL 语句使用 CREATE TABLE 进行创建。基本语法如下:

      CREATE TABLE <table_name>(
      <colum_name><data_type>[column_constraint_name],
      <colum_name><data_type>[column_constraint_name]...
      [table_constraint_name]
      )
      上面的<table_name> 是定义的表的名字,它可以有一个或者多个属性组成。
      在创建表的时候我们通常还会对某个属性添加约束条件,这些约束条件会存放在数据字典中,当用户对表中的数据进行操作的时候,DBMS会自动的检查该操作是否符合完整性约束。
      看一下的例子:
      创建一个员工表,由员工的员工号(ID),员工的姓名(Name),员工邮箱(Email),员工的电话(Phone),员工所属的部门编号(DepID),员工的薪资(Salary)以及项目经理编号(ManagerID),我们知道每个员工都会有自己的编号并且是唯一的。
      CREATE TABLE TEmployees(
      EId Number(6) not null unique,
      EName varchar2(20),
      EEmail varchar2(20),
      EPhone varchar2(20),
      EdepId varchar2(10),
      ESalary Number(8,2),
      EManagerId Number(6)
      );
      以上的 SQL 语句为我们创建了一个员工的表 TEmployees, 并将员工表的定义和约束放入了数据字典。
    2. 创建视图

      视图是从一个或者几个表导出的表,它是一个虚表。在数据库中只存在视图的定义,而不会有关视图的数据,这些数据还是存放在原来的表中,所以当基表中的数据发生变化那么视图中的数据也会发生变化。一下是创建视图的语法:

      CREATE VIEW <view_name>[
      (
      <column_name>
      [,column_name]...
      ) ]AS <children_query>
      [WITH CHECK OPCTION]
      其中的子查询不能包含 ORDER BY 和 DISTINCT 等复杂的查询语句的。WITH CHECK OPCTION 表示在对视图进行 UPDATE, INSERT 和 DELETE 这些操作的时候要满足子查询中的表达式。如下例子 创建以上我们创建的 TEmployees b表的视图 条件为:EdepId = 'DEV'
      CREATE VIEW VEmployees_1
      AS SELECT EId, EName, EEmail, EPhone, EdepId, ESalary, EManagerId
      FROM TEmployees
      WHERE EdepId = 'DEV';
      --WITH CHECK OPCTION
      同理这个视图 VEmployees_1 的定义会存储数据字典中,但是这里要注意的是并没有执行 SELECT 语句,只有当对这个视图进行查询的时候才会去基表中队数据进行查询,再将其返回出去,因此我们可以把视图看成基表的一种快捷方式。
      如果我们使用 WITH CHECK OPCTION 那么在以后对视图进行增删改的时候 DBMS 会自动的检查 EdepId = 'DEV'。
    3. 创建索引

      只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。不多说直接看语法:

      CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
      ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
      UNIQUE 为表或视图创建唯一索引(不允许存在索引值相同的两行)。视图上的聚集索引必须是 UNIQUE 索引。[ ASC | DESC ] 确定具体某个索引列的升序或降序排序方向。默认设置为 ASC。
      CREATE INDEX Employees_Name on TEmployees(EName);
      为表 TEmployees 的 EName 创建索引 Employees_Name 并按照升序排列。

DROP

    1. 删除数据表

      删除表定义及该表的所有数据、索引、触发器、约束和权限规范。任何引用已除去表的视图或存储过程必须通过 DROP VIEW 或 DROP PROCEDURE 语句显式除去。语法如下:
      DROP TABLE <table_name>;
      注意: DROP TABLE 不能用于除去由 FOREIGN KEY 约束引用的表。必须先除去引用的 FOREIGN KEY 约束或引用的表。删除数据表后基于这个表创建的视图不会被删除,当引用这个视图的是还会报错。
      DROP TABLE TEmployees;
    2. 删除视图

      从当前数据库中删除一个或多个视图。可对索引视图执行 DROP VIEW。语法如下:
      DROP VIEW { view } [ ,...n ];
      view 表示要删除的视图名,n 表示可以删除多个视图的占位符。
    3. 删除索引

      从当前数据库中删除一个或多个索引。语法如下:
      DROP INDEX 'table.index | view.index' [ ,...n ];
      table | view 索引列所在的表或索引视图。index 是要除去的索引名称。n 是指多个索引的占位符。
      DROP INDEX Employees_Name 删除 Employees_Name 索引。

ALTER

      在我们的实际工作中不可能一次性的把表定义好,或多或少的会对表进行修改。其修改表的语法如下:
  

ALTER TABLE table
[ADD <columnName> <data_type> [constraint_name]]
[DROP <constraint_name>]
[DROP column <columnName>]
[MODIFY <columnName> <data_type>];
    Add 用于增加新的列和约束,Drop 用于删除约束,Modify 用于修改原有的列和数据类型。对于单列删除一定要加 column,对于多列的话无需加。
ALTER TABLE TEmployees ADD EBirthday Date;
    注意由于我们新加了一列那么表中所有数据这列都是空的。
    

ALTER TABLE TEmployees MODIFY EdepId varchar2(8);
ALTER TABLE TEmployees DROP unique(EId);
ALTER TABLE TEmployees DROP column EBIRTHDAY;

Orcale 之 SQL 数据定义的更多相关文章

  1. SQL - 数据定义

    SQL 的数据定义功能包括模式定义.表定义.视图和索引的定义: 操作对象 操作方式 创建 删除 修改 模式  create schema drop schema   表  create table d ...

  2. 数据库——SQL数据定义

    数据定义  SQL的数据定义语句 操 作 对 象 操  作  方  式 创  建 删  除 修  改 表 CREATE TABLE DROP TABLE ALTER TABLE 视  图 CREATE ...

  3. orcale 之 SQL 数据查询

    从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列.虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下: SELECT select_list [ INTO new_tab ...

  4. SQL语言学习-数据定义语言

    Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...

  5. SQL DDL 数据定义语句

    前言 DDL(Data Definition Language)语句:数据定义语句,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象.常用的语句关键字主要包括 create.drop.al ...

  6. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  7. ODPS SQL <for 数据定义语言 DDL>

    数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

  8. Oracle language types(语言种类) 表的相关操作 DDL数据定义语言

    数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...

  9. SQL的定义与使用

    一.SQL的定义 SQL(structured query language)即结构化查询语句,是关系数据库的标准语言. SQL的特点有: 1.综合统一 SQL集数据定义语言DDL.数据操作语言DML ...

随机推荐

  1. [LeetCode 题解]: ZigZag Conversion

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 The string ...

  2. 使用 dlv 调试go 程序

    目录 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach 使用 dlv 调试smartraiden by 白振轩 使用 dlv ...

  3. Vim Clutch | 面向脚踏板编程

    简评:这是使用硬件制作的一个离合器踏板,控制 Vim 的 insert mode 和 normal mode ~ Github 上有个关于 Vim 的项目,项目作者 Aleksandr Levchuk ...

  4. Python处理json数据--世界国家维度数据

    1.准备国家的json数据 将准备好的json数据放在指定的目录下,此处可以重这里下载 2.测试编写python脚本处理json提取字段值 #coding:utf8 import time, re, ...

  5. Unity---解决重新调整游戏分辨率后,再运行游戏还是和之前分辨率一样的问题

    经历 上次在Unity做了个小游戏,发布的时候忘了取消默认全屏了. 于是在Unity重新发布了一下,可是出来后分辨率还是默认全屏. 当时百思不得其解 原因 主要是因为当用Unity发布一个新游戏的时候 ...

  6. php中签名公钥、私钥(SHA1withRSA签名)以及AES(AES/ECB/PKCS5Padding)加密解密详解

    由于http请求是无状态,所以我们不知道请求方到底是谁.于是就诞生了签名,接收方和请求方协商一种签名方式进行验证,来取得互相信任,进行下一步业务逻辑交流. 其中签名用得很多的就是公钥私钥,用私钥签名, ...

  7. c语言-勒让德多项式求解+时间测定

    #include<iostream>#include<ctime>#include<cstdlib>using namespace std; float LRD(i ...

  8. 扩大VirtualBox虚拟机磁盘的方法

    之前在VirtualBox里安装了一个XP系统,当时只分配了10G磁盘空间,随着使用,空间不足了. 在虚拟机管理器里不能直接调整磁盘的大小,这里要用到VirtualBox安装目录下的VBoxManag ...

  9. 02. css3有哪些新特性?

    2.css3有哪些新特性? 1. CSS3实现圆角(border-radius),阴影(box-shadow), 2. 对文字加特效(text-shadow.),线性渐变(gradient),旋转(t ...

  10. Supreme(ง •̀_•́)ง

    1.数学: 4月底18讲看完. 5月书上重点习题再过一遍(注证明题,最值,平均值,有界,介值,零点定理,等式不等式,极限,中值定理(费马,罗尔,拉格朗日,泰勒,柯西,一元积分中值定理,二重积分中值定理 ...