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. MFC中按钮控件的用法笔记(转)

    VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1:则m_Button1.EnableWindow(true); 使按钮 ...

  2. opencv——播放视频

    #include "stdafx.h" #include <opencv2\opencv.hpp> #include <iostream> #include ...

  3. Oracle 表关联性 Update 语句的改写,推荐改写方法1

    同事写了一个逻辑稍复杂的Update 语句,觉得在代码可读性上有些转圈,交给我帮忙改下. 以下根据原SQL,使用两种方法进行改写,个人推荐方法1的改写.方法2拆分两个SQL来写,代码可读性最强,但是S ...

  4. HBase入门篇

    目录: 1-HBase的安装 2-Java操作HBase例子 3-HBase简单的优化技巧 4–存储 5(集群) -压力分载与失效转发 6 -白话MySQL(RDBMS)与HBase之间 7 -安全& ...

  5. 纸壳CMS(ZKEACMS)体验升级,快速创建页面,直接在页面中修改内容

    关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...

  6. Centos7.6下使用docker方法安装stf

    使用Docker镜像安装 一,在centos上安装Docker 很简单,直接 yum install docker 即可开启docker服务 在centos中开启服务可以使用systemctl sta ...

  7. 279. 完全平方数 leetcode JAVA

    题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: 3 解释: ...

  8. XSSFWorkbook实现导出excel

    1.pom.xml中加入poi依赖: <!-- poi -->        <dependency>            <groupId>org.apache ...

  9. 910. Smallest Range II

    Given an array A of integers, for each integer A[i] we need to choose either x = -K or x = K, and ad ...

  10. kvm虚拟化之kvm虚拟机控制台登陆

    vm虚拟机能否像xen虚拟机一样通过virsh console 一样采用字符界面进行linux虚拟机控制台呢,答案是肯定的,默认情况下该命令是不起作用的,需要修改相关文件才能实现. 1. 配置方法如下 ...