跟我学MS SQL Server(5)

2016-02-19 19:39 6 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐跟我学MS SQL Server(5),赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

  (五)创建和修改表格

  再次欢迎您来到SQL(结构化查询语言)基础系列教程。本文将介绍数据库定义语言(DDL)用于创建数据库和表格以及修改表格结果的指令。

  当你使用这些指令时一定要小心——它很容易删去你的数据库中的主要结构令您丢失数据。所以,在您开始修改数据库之前,您需要知道数据库是什么。
--------------------------------------------------------------------------------
  数据库之间的差异

  本文中的样品查询系统遵循SQL92 ISO标准。并不是所有的数据库都遵循该标准,有些数据库做了改进,这会产生不可预料的结果。如果你不能确定你的数据库是否支持该标准,请参考相应的文档。
--------------------------------------------------------------------------------
  创建数据库

  为了创建表格,你首先需要需要创建一个可以容纳表格的数据库。SQL用于创建数据库的基本语句是:

CREATE DATABASE dbname;

  你的数据库用户必须有建立数据库的适当权限。如果与你有关的用户不能发出用于创建新数据库的命令,要求数据库管理员为你建立数据库,你也作为管理员登录然后建立数据库并设置权限。

  举个例子,用CREATE指令为一个应用程序建立一个数据库用于显示一个目录:

CREATE DATABASE Catalog;

  这给你一个用于在查询时与其它表格区分的表格名字。下一步是创建用于输入它的表格。

  创建表格

  如你所知,表格是有若干个栏目所组成。当创建表格时,你可以定义栏目并分配字段属性。表格建立后,可以用ALTER表格指令来修改它,我们稍后将提到这一点。

  你可以用下面这条指令来创建数据库,命令行的参数为表格名字、栏目名字,还有每一栏的数据类型。

CREATE TABLE table_name
(column1 data_type, column2 data_type, column3 data_type);

  不同的数据库提供商的标准差别很大。你的帮助文档中应该有一段详细说明如何使用每一种数据、接受何种参数。为了通用,我在表A中列出了一些常用的数据类型。

  数据类型、用法、详细说明

Char
Char(8)
它包含了一个固定长度的字符串,其值常常是字符串长度。

Varchar
Varchar(128)
它包含了一个长度不大于指定值的长度可变的字符串。

Int
Int(32)
这是一个不大于指定值得整数,也做Number或Integer。

Decimal
Decimal(12,2)
这是一个总位数和小数点后位数不大于指定值得小数,也被称为Numeric或Number。

Binary
Binary
用于存储二进制对象,在数据库中它一般不可分解和显示,也称为Raw或Blob。

Boolean
Boolean
用来只是真或假,也成为Bit或Byte。

  通用数据类型

  在本例中,我们建立了一个存放库存商品信息的表格。所用到的栏目和数据类型如表B所示:

  栏目名称:

prod_id
prod_color
prod_descr
prod_size

  数据类型:

Int(16)
Varchar(20)
Varchar(255)
Decimal(8,2)

  在本例中,我使用了三种基本数据类型;然而,在实际使用时,根据数据库支持的内容,我可能还用用上tinyint、文本和mediumtext数据类型。

  发出如下指令来建立表格:

CREATE TABLE Products
(prod_id INT(16), prod_color VARCHAR(20), prod_descr VARCHAR(255), prod_size DECIMAL(8,2));

  如果这些指令顺利完成,你就可以在表格中正常地插入信息。你可以参到文章SQL基础一:数据查询"得到详细说明。

  除了数据类型,你还可以在创建表格时定义自动增量字段(auto-incremented field)、关键字、索引和特殊数值限制。在表格定义时,这些参数与数据类型一同传递。如果在创建表格Product时定义具有特殊数值限制的自动增量prod_id,命令如下:

CREATE TABLE Products
(prod_id INT(16)AUTO_INCREMENT, prod_color VARCHAR(20), prod_descr VARCHAR(255), prod_size DECIMAL(8,2), UNIQUE (`prod_id`));

  如果把prod_id做为索引字段定义,可以用CREATE INDEX:

CREATE INDEX ProdIndex ON Product (prod_id);

  这里有必要重申:数据库提供商在关键字的处理上有所不同。所以,具体情况请参考你的数据库提供商的文档。
--------------------------------------------------------------------------------

  关于索引的更多内容:

  索引是一个比较深的课题。除了介绍有关关键字和索引的理论,Builder.com的供稿人Eric Roland写了几篇很好的文章,你可以通过它们来学到更多的相关知识。

  修改表格

  当你开始对表格进行操作时,你也许觉得有必要修改表格的结构、字段类型等等。在前面,我强烈建议你避免在生产环境(production environment)这么做。因为有些操作,如添加、删除和修改字段可能会删除或破坏相关字段中的数据。

  好,现在让我们看看如何修改表格。首先,在表格Product中加入一栏。你可以指定该栏插入的相对其它栏的位置,也可以让它插到表格末端(默认):

ALTER TABLE Product ADD prod_name VARCHAR(20) AFTER prod_id;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  用类似的语句删除一个栏目:

ALTER TABLE Product DROP prod_size;

  最后,更改一个栏目的数据类型:

ALTER TABLE Product CHANGE prod_color prod_color_id INT(20);

  现在,你的表格如表C所示:

  栏目名称:

prod_id
prod_name
prod_color_id
prod_descr

  数据类型:

Int(16)
Varchar(20)
Int(20)
Varchar(255))

  注意,有些数据库不支持关键字DROP。另外,如果你改变现有的某一栏的数据类型,大多数数据库会试图转化该栏目现有数据的数据类型。然而,如果是转为一个不支持的数据类型,数据就有可能丢失。举例来说,如果把一个类型为Varchar的包含人名字的字段改为Int类型,转换的结果可能是整型的默认值。

  删除表格和数据库

  在删除表格和数据库之前,你需要确保丢失这些数据不会造成恶果。如果你删除数据库,库中的所有表格和内容都会被清除。如果你删除一个表格,表格中的所有内容都会丢失,但是库中的其它表格没有影响。

  在删除表格或整个栏目之前,你必须清楚数据库的结构。如果你进入一个已经存在的数据库并错误删除了某个元素,可能会影响到促发条件(?trigger)、存储过程和视图。有些数据库支持用关键字RESTRICT和CASCADE去预防由于删除表格带来的损失。

  RESTRICT一般按默认设置,预防丢失表格,而CASCADE用于删除与该表格有关的实体。

  现在上面建立的表格Product是可以被删除的,我们开始删除它:

DROP TABLE Product;

  现在删除数据库:

DROP DATABASE Catalog;

  大多数数据库软件提供商支持DROP DATABASE命令,尽管它是在SQL99标准中被定义而不是SQL92。

  部分数据库提供了FLUSH命令,该命令可以让你删除表格中的内容但又可以保持表格的结果,:

FLUSH TABLE Product;

  如你所见,删除数据库中的主要结构并丢失所存的所有数据的容易程度令人难以想象,所以,一定要小心使用这些命令,而当你不清楚数据库中的内容时,就不要使用这些命令。

数据库管理

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在前一篇文章中,你学会了如何在一个或多个表格中查找数据。现在,你学会了如何把你操作数据库结构。你学会了创建、修改并销毁表格和数据。这些都是设计数据库驱动的应用程序的必须用的操作。

来源:https://www.tulaoshi.com/n/20160219/1621502.html

延伸阅读
标签: SQLServer
  跟我学SQL分为三部分,其中涵盖了有关SQL标准的基本知识。在上一篇文章里我们讨论了一些数据库术语和4种最基本的数据查询类型。此外,我们还解释了WHERE子句和条件语句的用法,同时我们提供了各类查询的具体示例。    在这篇文章里,我们将就其他一些SQL函数和子句进行阐述,供你用于基本的SELECT数据查询中。 SELECT选项...
标签: SQLServer
  SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。    你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给你一个数...
标签: Web开发
XSL模板与匹配模式       经过前几日的学习,我们学习了XHTML文档的编写和以及三个XSL元素,已能编写相当灵活的XSL文档,今天将学习的是XSL模板的编写。我们都知道,短的文档、程序十分好读,但当规模增大后,其复杂性也以更快的速度增加。       前面我们学了 xsl:for-each 、 xsl:value-o...
标签: Web开发
     测试模式            XML技术的优势之一就在于数据输出的可选择性,即选择需要的数据输出。前面我们所讲到的选择模式语句:xsl:for-each、xsl:value-of及xsl:apply-template只是简单的选取通过”/”符号层层到达的节点,如果我们对XML数据不需要全部输出,而只需要其中...
随着Internet的发展,越来越多的信息进入互联网,信息的交换、检索、保存及再利用等迫切的需求使HTML这种最常用的标记语言已越来越捉襟见肘。HTML将数据内容与表现融为一体,可修改性、数据可检索性差,而XML借鉴了HTML与数据库、程序语言的优点,将内容与表现分开,不仅使检索更为方便,更主要的是用户之间数据的交换更加方便,可重用性更强。 ...

经验教程

501

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部