分享
 
 
 

全面接触SQL语法(4)

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

SQL与数据库的维护

表格的建立

将SQL中的基本语法作了一番介绍以后,但大多是偏向于数据库数据的查询与过滤,但实际上,我们通过SQL命令所可以做的事还有很多,接下来要介绍的便是如何利用SQL的语法命令来建立一个数据库中的表格。

CREATE TABLE语句

我们可以利用这个命令,来建立一个全新的表格,但前提则是:数据库必须已经存在。

CREATE TABLE table(field1 type[(size)][index1][,field2 type[(size)][index2][,...]][,nultifieldindex[,...]])

table

欲建立的新的表格名称。

field1,field2

在新表格中的新的字段名称,到少要一个字段以上。

type

字段的数据类型。

size

字段的大小。

index1,index2

利用CONSTRAINT条件子句定义一个单一字段的索引名称。

multifieldindex

利用CONSTRAINT条件子句定义一个多重字段的索引名称。

例如:

建立一个拥有职员姓名与部门字段的表格。

CREATE TABLE 职员表格 (姓名TEST,部门TEST,职员编号 INTEGER CONSTRAINT职员字段索引PRIMARY KEY)

在这一个范例中,我们建立了一个表格名称为“职员表格”的表格,并且定义了该表格的主键值,以限制数据不能重复输入。

表格索引的建立

CREATE INDEX语句

这个命令主要是对一个已存在的表格建立索引,其用法如下:

CREATE[UNIQUE]INDEX index ON table(field[ASC|DESC][,field[ASC|DESC],...])

[WITH {PRIMARY|DISALLOWNULL|IGNORENULL}]

index

欲被建立的索引名称。

table

欲建立索引的表格名称。

field

欲被建立的索引的字段名称。并可通过DESC保留字,来决定索引的顺序。

例如:

在职员表格中建立一个索引。

CREATE INDEX 新索引名称

ON 职员表格(姓名部门);

表格的字段更新

CONSTRAINT条件子句

CONSTRAINT 的功能是类似索引(INDEX)的,虽然CONSTRAINT 也可以建立表格之间的关联性。

单一字段索引:

CONSTRAINT name{PRIMARY KEY|UNIQUE|REFERENCES foreigntable[(foreignfield1,foreignfield2)]}

多字段索引:

CONSTRAINT name

{PRIMARY KEY(primary1[,primary2[,...]])

|UNIQUE(unique1[,unique2[,...]])

|FOREIGN KEY (ref1[,ref2[,...]])

|REFERENCES foreigntable[(foreignfield1[,foreignfield2[,...]])]}

name

要被建立的CONSTRAINT名称。

primary1,primary2

被用来设计成主键值的字段名称(可一个以上)。

unique1,unique2

被用来设计成唯一键值的字段名称(可一个以上)。

foreign key

字段名称,或是参考到别的表格中字段的字段名称。

foreigntable

如前所述,被参考到的表格。

foreignfield1,foreignfield2

在参考到的表格当中,被ref1,ref2字段所指定的字段。如果被参考的字段是参考表格中的主键值,你也可以省略这个条件子句。

例如:

当我们要建立一个新的职员数据表格,表格包含姓名、部门名称与生日三个字段,且由这三个字段建立一个唯一的索引时,可以使用下面这段SQL的语句。

CREATE TABLE 职员数据表格

(姓名 TEST,部门名称 TEST,生日 DATETIME,CONSTRAINT 职员数据表格限制 UNIQUE(姓名,部门名称,生日));

以上是SQL中,与数据库表格建立相关的命令,你可以利用这些命令,通过SQL的语句,将数据库表格完整的建立出来,接下来的章节,将针对数据库建立之后的维护与增删所要使用的SQL语句作一介绍。

DELETE语句

我们可以利用DELETE语句,将表格中的记录删除。(注意:记录被删除后,无法再复原,所以条件设置要正确)

DELETE[table.*]

FROM tableexpression

WHERE criteria

table

欲删除记录的表格名称,也可以用*来取代。

tableexpression

一个或一个以上表格的名称。此一参数可以为单一的表格名称或是从INNER JOIN,LEFT JOIN,或RIGHTJOIN 等运算所得到的结果。

criteria

决定表格中记录要被删除的标准。

例如:

若是我们要将职员表格中姓名姓名叫做"李名"的记录删除,我们可以利用下面的SQL语句来完成。

DELETE * FROM 职员表格

WHERE 姓名="李名";

数据库表格相关的操作命令

SQL除了可以作为查询与数据库表格的建立的工具外,对于数据库与表格的新建、删修、与维护,与具有相当不错的功能,若是读者使用SQL命令得宜,对于整个效率的提高有着很大的帮助,所以对于SQL语句所带来的优势,常常会遇到一个情况,就是:“当我们对多个表格作复杂与多步骤的处理时,或许SQL只要一个语句就可以完成所有的需求与目标”,乍看一下,或许觉得有些玄妙,但是接下来的章节,会让你了解其中的妙处。

SELECT...INTO语句

我们可以通过这个命令,利用既存表格查询,来建立一个新表格的查询语句。

SELECT field1[,field2[,...]]INTO newtable[IN externaldatabase]

FROM source

field1,field2

欲拷贝到新表格的字段名称。

newtable

欲建立之新表格的名称,不可是已经存在的表格。

externaldatabase

若是该表格在另外的外部数据库时,该数据库的名称。

source

记录数据拷贝的来源表格名称,可以是单一的表格或是一段SQL查询之语句。

例如:

你可以通过下面的SQL语句,来建立一个新的“训练名册”表格。

SELECT 职员表格.姓名,职员表格.部门

INTO 训练名册 FROM 职员表格

WHERE 职称="新进人员";

INNER JOIN操作数

当某一个共同的字段数据相等时,将两个表格的记录加以组合。

SELECT fields

FROM table1 INNER JOIN table2

ON table1.field1 compopr table2.field2

table1,table2

欲进行记录组合的表格名称。

field1,field2

欲组合的字段名称。(必须具有相同的数据类型)

compopr

比较关系运算符如下:“=”,“”,“”等。

例如:

若是你要把分类表格与产品表格作组合,可参考下面的SQL语句。

SELECT 分类名称,产品名称

FROM 分类表格 INNER JOIN 产品表格

ON 分类表格.分类编号=产品表格.分类编号;

UNION操作数

我们可以通过UNION操作数来建立连接的查询条件,UNION操作数可以将两个以上的表格或是查询的结果组合起来。

[TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL]

[TABLE]queryn [...]]

query1,query2,queryn

为一个SELECT的语句,或是一个已存在的查询名称,或是一个已存在的表格名称。

例如:

你可以利用下面的SQL语句,将订单数量超过1000的顾客表格记录,与新客户表格作UNION的操作。

TABLE 新客户表格 UNION ALL

SELECT *

FROM 顾客表格

WHERE 订单数量1000;

ALTER语句

在一个表格被建立之后,利用ALTER语句,我们可以去修改表格的字段设计。

ALTER TABLE table

{ADD {COLUMN field type[(size)][CONSTRAINT index]

|CONSTRAINT multifieldindex}

|DROP {COLUMN field|CONSTRAINT indexname}}

table

欲被ALTER的表格名称。

field

要被增加或删除的字段名称。

type

字段数据类型。

size

字段大小。

index

对此字段的索引。

例如:

在职员表格中新建一个“薪水”的字段。

ALTER TABLE 职员表格

ADD COLUMN 薪水 CURRENCY;

例如:

在职员表格中删除一个“薪水”的字段。

ALTER TABLE 职员表格 DROP COLUMN 薪水;

DROP语句

针对所指定的表格或字段加以删除,或是把索引删除。

DROP {TABLE table|INDEX index ON table}

table

欲删除之表格或索引依附之表格名称。

index

欲从表格中删除的索引名称。

例如:

从职员表格中,删除编号索引。

DROP INDEX MyIndex ON Employees;

例如:

从数据库中,删除整个表格。

DROP TABLE 职员表格;

INSERT INTO语句

新建一条数据到表格当中。

多条记录新建查询:

INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])]

SELECT [source.]field1[,field2[,...]

FROM tableexpression

单条记录新建查询:

INSERT INTO target[(field1[,field2[,...]])]

VALUES(value1[,value2[,...])

target

新建记录的表格名称。

externaldatabase

外部数据库的路径,搭配IN条件子句使用。

source

若是记录从其它表格中拷贝时,指明该表格的名称。

field1,field2

欲增加数据的字段名称。

tableexpression

表格名称或描述记录是从哪一个表格中插入的表格名称。配合INNER JOIN,LEFT JOIN,或 RIGHT JOIN 运算符一起使用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有