创建表的两种办法:

  • 使用DBMS 提供的交互式创建和管理数据库表的工具;
  • 直接用SQL 语句创建。

表创建基础

创建表示例:

 CREATE TABLE Products
(
prod_id CHAR(10) NOT NULL,--是否可以为null
vend_id CHAR(10) NOT NULL,
prod_name CHAR(254) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL
);

注意:理解NULL

不要把NULL 值与空字符串相混淆。NULL 值是没有值,不是空字符串。 如果指定''(两个单引号,其间没有字符),这在NOT NULL 列中是允 许的。空字符串是一个有效的值,它不是无值。NULL 值用关键字NULL 而不是空字符串指定。

指定默认值

默认值在CREATE TABLE 语句的列定义中用关键字DEFAULT 指定,如下:

 CREATE TABLE OrderItems
(
order_num INTEGER NOT NULL,
order_item INTEGER NOT NULL,
prod_id CHAR(10) NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1,
createTime DateTime NOT NULL DEFAULT GETDATE(),
item_price DECIMAL(8,2) NOT NULL
);

获得系统日期的命令在不同的DBMS 中几乎都是不同的,如图:

2. 更新表

使用ALTER TABLE 语句更新表定义。

使用ALTER TABLE 时需要考虑的事情:

  • 理想情况下,不要在表中包含数据时对其进行更新。应该在表的设计过程中充分考虑未来可能的需求,避免今后对表的结构做大改动。
  • 所有的DBMS 都允许给现有的表增加列,不过对所增加列的数据类型(以及NULL 和DEFAULT 的使用)有所限制。
  • 许多DBMS 不允许删除或更改表中的列。
  • 多数DBMS 允许重新命名表中的列。
  • 许多DBMS 限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。

在现有表上增加列:

 ALTER TABLE Vendors
ADD vend_phone CHAR(20);

删除列:

 ALTER TABLE Vendors
DROP COLUMN vend_phone;

注意:小心使用ALTER TABLE

使用ALTER TABLE 要极为小心,应该在进行改动前做完整的备份(模 式和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列, 也许无法删除它们。类似地,如果删除了不应该删除的列,可能会丢 失该列中的所有数据。

3. 删除表

删除表没有确认,也不能撤销,执行DROP语句将永久删除该表。如下:

 DROP TABLE CustCopy;

提示:使用关系规则防止意外删除

许多DBMS 允许强制实施有关规则,防止删除与其他表相关联的表。在 实施这些规则时,如果对某个表发布一条DROP TABLE 语句,且该表是 某个关系的组成部分,则DBMS 将阻止这条语句执行,直到该关系被删 除为止。如果允许,应该启用这些选项,它能防止意外删除有用的表。

4. 重命名表

每个DBMS 对表重命名的支持有所不同。对于这个操作,不存在严格的标准。DB2、MariaDB、MySQL、Oracle 和PostgreSQL 用户使用RENAME 语句,SQL Server 用户使用sp_rename 存储过程,SQLite 用户使用ALTER TABLE 语句。

进一步阅读&参考

http://msdn.microsoft.com/zh-cn/library/ms188351.aspx

SQL 必知必会·笔记<15>创建和操纵表的更多相关文章

  1. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  2. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  3. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  4. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  5. 【SQL必知必会笔记(2)】检索数据、排序检索数据

    上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...

  6. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  7. 读书笔记--SQL必知必会12--联结表

    12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...

  8. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  9. 《SQL必知必会》笔记

    SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...

随机推荐

  1. Swift MD5加密

    很多时候我们会用到md5加密,下面是swift 3.0的实现方法: 首先新建桥接文件 xx-Bridging-Header,方法很多,这里就不介绍了. 然后在桥接文件中引入加密库 #import &l ...

  2. Entity Framework Core: A second operation started on this context before a previous operation completed

    我这边报错是因为函数声明的是async  void 而实现中有多个task任务,导致的线程不安全

  3. org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/domain/book.hbm.xml 联网跑一跑

    org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/domain/boo ...

  4. java【基础】正则表达式

    1 字符串判断 java的正则使用的是Pattern以及Matcher来配合使用的. 如果只是用来判断输入的字符串是否符合格式,推荐使用Matcher的matches方法. public static ...

  5. MySQL终章

    视图 什么是视图 是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图的特点 . 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. . 视图是由基本表 ...

  6. 找不到phpize

    yum install php-devel 报错如下: 解决办法: yum install php71w-devel

  7. linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <

    重定向命令其实用得不少吧,只是重来都没有仔细看过,这波正好又用到 又有空总结一波. 先看>和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>>是追加内容到文 ...

  8. C#中读写INI文件

    C#中读写INI文件 c#的类没有直接提供对ini文件的操作支持,可以自己包装win api的WritePrivateProfileString和GetPrivateProfileString函数实现 ...

  9. 【轻松前端之旅】CSS盒子模型

    盒子模型,也叫框模型,在CSS里是很重要的概念. 每个元素都可以看做一个盒子.盒子包含四个部分:外边距(margin).边框(border).内边距(padding).元素内容(element con ...

  10. SAS对数据变量的处理

    SAS对数据变量的处理 在使用DATA步基于已经存在的数据集生成新数据集时,可以指定在新数据集中不需要包含的变量而仅读取其他变量,或者指定仅需要在 新数据集中包含的变量.该功能可以通过DATA步中的S ...