SQL必知必会 笔记 第十七章 创建和操纵表

17.1创建表

一般有两种创建表的方法

(1)多数DBMS都具有交互式创建和管理表工具

(2)表也可以直接用SQL语句操纵

语法差别:在不同的SQL实现中,CREATE TABLE语句的语法可能会有所不同。

17.1.1表创建基础

为利用CREATE TABLE创建表,必须给出下列信息:

(1)新表的名字,在关键字CREATE TABLE之后给出。

(2)表列的名字和定义,用逗号分隔。

(3)有的DBMS还要求指定表的位置。

创建Products表

CREATE TABLE Products
{
     prod_id          CHAR(10)     NOT 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
};

替换现有的表

在创建新表时,指定的表名必须不存在,否则将出错。如果要防止以外覆盖已有的表,SQL要求首先手工删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。

17.1.2使用NULL值

允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须没有值。

指定NULL:多数DBMS在不指定NOT NULL时认为指定的是NULL,但并不是所有的DBMS都这样。

主键和NULL值:主键是其值唯一标识表中每一行的列,只有不允许NULL值的列可用于主键。允许NULL值的列不能用于唯一标识。

理解NULL:不要把NULL值与空串相混淆,NULL值是没有值,它不是空串,如果指定‘’,这在NOT NULL列种是允许的。空串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空串指定。

17.1.3指定默认值

SQL允许指定默认值,在插入行时如果不给出值,DBMS将自动采用默认值。默认值在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,
     item_price      DECIMAL(8,2)   NOT NULL
};

获得系统日期

17.2更新表

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

使用ALTER TABLE所考虑的内容。

(1)一般来说,在表中包含数据时不要对其进行更新。

(2)所有DBMS都允许给校友的表增加列,不过对所增加列的数据类型(以及NULL和DEFAULT的使用)有所限制。

(3)许多DBSM不允许删除或更改表中的列。

(4)多数DBMS允许重新命名表中的列。

(5)许多DBMS对已经填有数据的列的更改有限制,对未填有数据的列几乎没有限制。

为了使用ALTER TABLE更改表结构,必须给出下面信息:

(1)在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)

(2)所做更改的列表

添加列

ALTER TABLE Vendors
ADD vend_phone CHAR(20);

删除列

ALTER TABLE Vendors
DROP COLUMN vend_phone;

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

17.3删除表

删除表(删除整个表而不是其内容),使用DROP TABLE语句。

DROP TABLE CustCopy;

17.4重命名表

不同DBMS所支持的表的重命名有所不同。

Oracle用RENAME

时间: 2024-10-11 19:25:34

SQL必知必会 笔记 第十七章 创建和操纵表的相关文章

MySQL必知必会 pdf完整版

需要学习的朋友可以通过网盘下载: http://tadown.com/fs/8yi6be9nsehu9e921/内容简介  · · · · · · <MySQL必知必会>MySQL是世界上最受欢迎的数据库管理系统之一.书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理清晰.系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增. 读者评论: 飞林沙  2013-11

数据库笔记10:插入数据 创建和操纵表

第二十章 插入数据 INSERT是用来插入(或添加)行到数据库表的.插入数据的几种方式: 1  插入完整的行 2 插入行的一部分 3  插入多行 4 插入某些查询结果 INSERT SELECT语句 INSERT INTO customers(cust_id,cust_name,cust_email) SELECT cust_id,cust_name,cust_email FROM custnew; 列省略 如果表中定义允许,则可以在INSERT操作中省略某些列,省略的列必须满足以下某个条件.

SQLServer:《SQL必知必会》一书的读书笔记(五)

第5课 高级数据过滤 5.1 组合 WHERE 子句 第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件. 5.1.1 AND 操作符 检索由供应商 DLL01 制造且价格小于等于 4 美元的所有产品的名称和价格: SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4; 5.1.2 OR 操作符 检索任一个指定供应商制造的所有产品的名称和价格: SEL

SQLServer:《SQL必知必会》一书的读书笔记(八)

第8课 使用函数处理数据 8.1 函数 [名词]可移植:所编写的代码可以在多个系统上运行 8.2 使用函数 8.2.1 文本处理函数 例1:使用 UPPER() 函数--将文本转换为大写 SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name; 常用的文本处理函数: LEFT():返回字符串左边的字符 DATALENGTH():返回字符串的长度 LOWER():将字符串转换为小写

《SQL必知必会》学习笔记(一)

<SQL必知必会>学习笔记(一) 下面变列出我新学到的知识. 这个是数据库的全部记录 1.order by   语句: select * from Scores order by name , Score desc 执行结果: ①order by在执行排序功能时,会先对排序字段按abcd这样的顺序进行,汉字的话是按拼音的首字母,默认是正序. ②例子中先按name字段进行正序排序,当name相同时,又按score倒叙排,例如拜仁两条数据,胜的开头字母是s,负的是f,因为是倒叙,所以胜的那条数据排

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

<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语句,但是实际应用中的业务逻辑往往会非常复杂,所以会用到一些比较复杂的查询,如子查询,联合查询. 1.子查询 当一个查询是另一个查询的条件时,称为子查询.但是说到子查询又不的不说它与嵌套查询两者的区别,下面一张图来说明 下面再用一条sql语句来说明他们的关系. 其中在查询中又分为嵌套子查询和相关子查询,他们之间

SQLServer:《SQL必知必会》一书的读书笔记(四)

第4课 过滤数据 4.1 使用 WHERE 子句:过滤 只检索所需数据需要指定搜索条件(即过滤条件). WHERE 子句在表名(FROM 子句)后给出,根据 WHERE 子句中指定的条件过滤. SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49; -- 分析:从 Products 表中检索两个列,只返回 prod_price 值为 3.49 的行 [提示]SQL 过滤与应用过滤: 数据也可以在应用层过滤.但是在优化

MySQL必知必会 学习笔记(一)

第一章  了解SQL 模式:   关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)]. 第二章 MySQL简介 MySQL是一种DBMS,即它是一种数据库软件.基于客户机----服务器的数据库. MySQL工具: 1.mysql 命令行实用程序 2.MySQL Administrator 3.MySQL query Browser 第四章 检索数据 LIMIT 5 表示MySQL返

《MySQL必知必会》读书笔记_4

PS:一个实际的存储过程案例 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_article_by_id`(IN `id` int) BEGIN #Routine body goes here... DECLARE temp INT; SET @aid = id; SELECT COUNT(*) FROM gk_reply_article WHERE a_id = @aid INTO temp; IF(temp <> 0) THEN