日期:2011-05-02 15:22:00 来源:本站整理
跟我学MS SQL Server(5)[MSSQL防范]
本文“跟我学MS SQL Server(5)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
(五)成立和改正表格
再次欢送您来到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;
用近似的语句删除一个栏目:
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;
如你所见,删除数据库中的主要构造并丧失所存的全部数据的简单程度令人难以想象,所以,一定要当心利用这些号令,而当你不清楚数据库中的内容时,就不要利用这些号令.
数据库管理
在前一篇文章中,你学会了如安在一个或多个表格中查找数据.目前,你学会了若何把你操作数据库构造.你学会了成立、改正并销毁表格和数据.这些都是计划数据库驱动的利用程序的必须用的操作
以上是“跟我学MS SQL Server(5)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论