SQL 必知必会·笔记<15>创建和操纵表
创建表的两种办法:
- 使用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>创建和操纵表的更多相关文章
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
- 【SQL必知必会笔记(2)】检索数据、排序检索数据
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
- 读书笔记--SQL必知必会--建立练习环境
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
- 读书笔记--SQL必知必会12--联结表
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- 《SQL必知必会》笔记
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
随机推荐
- Swift MD5加密
很多时候我们会用到md5加密,下面是swift 3.0的实现方法: 首先新建桥接文件 xx-Bridging-Header,方法很多,这里就不介绍了. 然后在桥接文件中引入加密库 #import &l ...
- Entity Framework Core: A second operation started on this context before a previous operation completed
我这边报错是因为函数声明的是async void 而实现中有多个task任务,导致的线程不安全
- 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 ...
- java【基础】正则表达式
1 字符串判断 java的正则使用的是Pattern以及Matcher来配合使用的. 如果只是用来判断输入的字符串是否符合格式,推荐使用Matcher的matches方法. public static ...
- MySQL终章
视图 什么是视图 是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图的特点 . 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. . 视图是由基本表 ...
- 找不到phpize
yum install php-devel 报错如下: 解决办法: yum install php71w-devel
- linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <
重定向命令其实用得不少吧,只是重来都没有仔细看过,这波正好又用到 又有空总结一波. 先看>和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>>是追加内容到文 ...
- C#中读写INI文件
C#中读写INI文件 c#的类没有直接提供对ini文件的操作支持,可以自己包装win api的WritePrivateProfileString和GetPrivateProfileString函数实现 ...
- 【轻松前端之旅】CSS盒子模型
盒子模型,也叫框模型,在CSS里是很重要的概念. 每个元素都可以看做一个盒子.盒子包含四个部分:外边距(margin).边框(border).内边距(padding).元素内容(element con ...
- SAS对数据变量的处理
SAS对数据变量的处理 在使用DATA步基于已经存在的数据集生成新数据集时,可以指定在新数据集中不需要包含的变量而仅读取其他变量,或者指定仅需要在 新数据集中包含的变量.该功能可以通过DATA步中的S ...