创建表的两种办法:

  • 使用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. 时间戳转中国人能看得懂的日期格式 yy-mm-dd

    很多项目都会用到时间戳的转换 说实话  我现在的这家公司超级好 因为后太要求传数据的时候竟然可以是时间戳的格式 我觉得我好幸福 哈哈哈 不过 等后台转给你数据的时候很多时候都是时间戳 这时候就得前端转 ...

  2. POJ 3107.Godfather 树形dp

    Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7536   Accepted: 2659 Descrip ...

  3. Spring 框架XML文件的配置文件

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www ...

  4. Python Day 5

    阅读目录: 数字类型: 字符串类型: 列表类型: 可变与不可变类型: ##数字类型: # 了了解:py2中小整数用int存放,大整数用long # 1.整型 num = -10000000000000 ...

  5. python闭包的详细解析

    一.什么是闭包? 如果一个内嵌函数访问外部嵌套函数作用域的变量,并返回这个函数,则这个函数就是闭包 闭包必须满足三个条件: 1. 必须有一个内嵌函数    2. 内嵌函数必须引用外部嵌套函数中的变量  ...

  6. MySQL之二 yum安装及初识

      安装   yum install mysql-server chkconfig -list mysqld 查看mysqld服务是否为开机启动 chkconfig mysqld on 设为开机启动 ...

  7. Java 线程使用注意事项

    事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度. 但如果事件处理逻辑较慢,或者需要发起新的IO请求 ...

  8. utf-8转gb2312

    近日在对一个json串进行转码时,显示中文乱码,原因是json串编码方式为utf-8,而我程序在windows上采用的是多字节编码方式,即采用gb2312编码.这里就存在一个utf-8到gb2312的 ...

  9. commons-text 生成指定长度的随机字符串

    package com.skylink.junge.demo; import java.util.HashSet; import java.util.Set; import org.apache.co ...

  10. [UWP]在UWP平台中使用Lottie动画

    最近QQ影音久违的更新了,因为记得QQ影音之前体验还算不错(FFmepg的事另说),我也第一时间去官网下载体验了一下,结果发现一些有趣的事情. 是的,你没看错,QQ影音主界面上这个动画效果是使用Lot ...