当前位置:文档之家› SQL数据库语句总结

SQL数据库语句总结

数据库T-SQL语句1、创建数据库create database 数据库名2、选择数据库use 数据库名3、删除数据库drop database 数据库名用SSMS1、创建数据库2、查看可修改数据库参数3、删除数据库基本表(仅仅是对表结构(属性和约束)的操作,而非表中数据)T-SQL语句1、创建基本表<重在约束>2、修改基本表(约束或属性)3、删除基本表4、基本表的索引用SSMS1、创建基本表(课本137)2、建立表的约束条件和索引(课本138)3、修改表结构(课本141)1、创建基本表<重在约束>数据(是对表中数据(属性和约束)的操作(增删改查),而非表结构)T-SQL语句1、数据插入2、数据修改3、数据删除4、数据查找视图T-SQL语句1、建立视图2、删除视图3、查询视图4、更新视图用SSMS(课本167)1、建立视图2、删除视图3、查询视图4、更新视图别名可能破坏参照完整性的情况及违约处理In和exist的区别1、创建基本表<重在约束>CREATE TABLE [〈库名〉]〈表名〉(〈列名〉〈数据类型〉[〈列级完整性约束条件〉] ,〈列名〉〈数据类型〉[〈列级完整性约束条件〉]][,…n][,〈表级完整性约束条件〉][,…n] )针对属性值设置的限制条件《列级》1) NOT NULL或NULL约束。

NOT NULL约束不允许字段值为空,而NULL约束允许字段值为空。

2) UNIQUE约束。

惟一性约束,即不允许列中出现重复的属性值。

3)PRIMARAY KEY [CLUSTERED|NON CLUSTERED]:定义该字段为主码并建立聚集(非)索引Not null unique和primary key的区别:DBMS会给primary key建立索引多个属性构成的主码只能通过表级约束条件定义PRIMARY KEY (Sno,Cno)单个属性构成的主码可通过列级或表级约束条件定义Sno CHAR(9) PRIMARY KEY或PRIMARY KEY (Sno)4) DEFAULT约束。

默认值约束。

DEFAULT〈约束名〉〈默认值〉FOR〈列名〉5) CHECK约束。

检查约束。

CONSTRAINT〈约束名〉CHECK (〈约束条件表达式〉)单一属性设限CONSTRAINT C2 CHECK(性别IN (‘男’,‘女’))CONSTRAINT C3 CHECK(成绩BETWEEN 0 AND 100)CHECK (Sage < 30)多属性之间设限CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')✓性别是女性的元组都能通过该项检查,因为Ssex=‘女’成立;✓当性别是男性时,要通过检查则名字一定不能以Ms.打头6)identity(初值,步长):定义字段为数值型数据,并指出它的初始值和逐步增加的步长值7)reference 参照表(对应字段):定义该字段为外码,并指出被参照表及对应字段涉及到关系中一个或多个列或表间的限制条件《记录/字段》《表级》格式:CONTRAINT〈约束名〉<约束式>Sname CHAR(20) CONSTRAINT C2 NOT NULL1) UNIQUE约束。

惟一性约束。

2) PRIMARY KEY[CLUSTERED|NON CLUSTERED]定义主码,保证惟一性和非空性。

建立聚集(非)索引。

CONTRAINT〈约束名〉PRIMARY KEY [CLUSTERED] (〈列组〉)3)check(条件表达式):定义记录应满足的条件4) FOREIGN KEY约束。

用于定义参照完整性。

CONTRAINT〈约束名〉FOREIGN KEY(〈外码〉) REFERENCES〈被参照表名〉(〈与外码对应的主码名〉) 2、修改基本表(约束或属性)ALTER TABLE〈表名〉[alter column(〈列名〉〈新类型〉[完整性约束] [,…n])]修改字段定义或约束条件[ADD(〈新列名〉〈数据类型〉[完整性约束] [,…n])]增加字段或者字段和表的约束[DROP〈完整性约束名〉]删除字段或约束{check|nocheck}constraint{all|约束名组}使约束有效或无效(check使之有效,nocheck使之无效,all指全部约束)[MODIFY(〈列名〉〈数据类型〉[,…n])]增加约束ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sage < 40)增加属性ALTER TABLE Student ADD S_entrance DATE3、删除基本表drop table 表名4、基本表的索引1)创建索引CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]INDEX〈索引名〉ON〈表名〉(〈列名〉[〈次序〉][,〈列名〉[〈次序〉]]…);UNIQUE:建立唯一索引,不允许有两行具有相同索引值CLUSTERED|NONCLUSTERED:建立聚集或者非聚集索引,每张表只能有一个聚集索引,默认值为非聚集索引2) 删除索引DROP INDEX 〈索引名〉1.索引的作用1) 使用索引可以明显地加快数据查询的速度。

2) 使用索引可保证数据的惟一性。

3) 使用索引可以加快连接速度。

2. 建立索引的原则1) 索引的建立和维护由DBA和DBMS完成。

2) 大表应当建索引,小表则不必建索引。

3) 对于一个基本表,不要建立过多的索引。

4) 根据查询要求建索引。

3.例子学生表按学号升序建立索引;CREATE UNIQUE INDEX stusno ON 学生(学号);课程表按课程号升序建惟一索引;CREATE UNIQUE INDEX coursno ON 课程(课程号);选课表按学号升序和课程号降序建惟一索引。

CREATE UNIQUE INDEX scno ON 选课(学号ASC,课程号DESC);用SSMS1、创建基本表(课本137)2、建立表的约束条件和索引(课本138)3、修改表结构(课本141)数据(是对表中数据(属性和约束)的操作(增删改查),而非表结构)T-SQL语句1、数据插入1)使用常量插入单个元组INSERT INTO〈表名〉[(〈属性列1〉[,〈属性列2〉…)]VALUES (〈常量1〉[,〈常量2〉]…)如果没有列出任何列名,则必须将所有列名对应的值,包括空值“”,也要列出来;如果列出了列名,则值要与列名出现的先后顺序对应,没有列出的属性会设为空,此时要注意该属性能否为空。

2)在表中插入子查询的结果集(一次插入多个元祖)INSERTINTO〈表名〉[(〈属性列1〉[,〈属性列2〉]…)]〈子查询〉〈子查询〉常常为select语句2、数据修改UPDATE〈表名〉SET〈列名〉=〈表达式〉[,〈列名〉=〈表达式〉][,…n][WHERE〈条件〉]5、数据删除DELETE FROM〈表名〉[WHERE〈条件〉];6、数据查找SELECT〈查询列组〉[Into 新表名]FROM〈数据源〉[WHERE〈元组选择条件〉][GROUP BY〈分列组〉[HAVING 〈组选择条件〉]][ORDER BY〈排序列1〉〈排序要求1〉[,…n]][compute〈统计列组〉[by〈表达式〉]]Select和from为必选子句!1)SELECT子句:指明需查找目标列(字段、表达式、函数表达式、常量)。

SELECT[all|distinct][top数值[percent]]〈查询列组〉All:返回所有结果(默认)Distinct:查找后去重再返回top数值:返回结果中的前数值行,如果有[percent]则返回结果中的百分之数值行记录〈查询列组〉可具体表示为:〈查询列组〉::=*|〈表或视图〉.*|〈列名或表达式〉[AS]〈列别名〉|〈列别名〉=〈表达式〉*:指明返回在from子句中包括的表和视图的全部列〈表或视图〉.*:指明返回指定表和视图的全部列〈列别名〉:用来代替出现在结果集中的列名或表达式,其可在ORDER BY中出现,不能在where,group by,having中出现基本表中相同的列名表示为:〈表名〉.〈列名〉2)into子句:创建一个表,并将查询结果添加到该表中。

若创建的是临时表,需在表明前加#;into不能喝compute子句同时使用。

3) FROM子句:指明数据源。

表名间用“,”分割。

数据源不在当前数据库中,使用“〈数据库名〉.〈表名〉”表示。

如果需要一表多用,需增设别名标识,在各自使用中用不同的表别名表示。

定义表别名:〈表名〉〈别名〉From 学生a b -----将学生表重命名(另起别名为a和b)4) WHERE子句:元组选择条件。

5) GROUP BY子句:结果集分组。

Group by [all]<分组表达式>当目标列中有统计函数,则统计为分组统计,否则为对整个结果集统计。

子句后带上HAVING子句表达组选择条件(带函数的表达式)。

6)having:位于group by之后,用于指定组或汇总筛选条件。

一般为函数的条件表达式。

7) ORDER BY子句:指明排序项和排序要求。

Order by<排序项>[ASC|DESC][,…n]当排序要求为ASC时升序排序(默认);排序要求为DESC时降序排列。

查询结果集可以按多个排序列进行排序,每个排序列后都可以跟一个排序要求。

Order by 类别ASC8)compure子句:产生汇总至,并在结果集中后将汇总值放入摘要列。

Compute〈统计函数组〉[by〈分组项〉]Compute和by配合,可起到换行和分段小计的作用。

Compute by必须和order by配合使用,分组项应完全等于排序项。

查询语句中使用的运算符号,特殊操作符,统计函数见课本148查询分类简单查询链接查询嵌套查询组合查询使用GROUP BY分组和SQL函数查询使用compute和compute by 查询In和exist的区别1、简单查询:查询过程中只涉及到一个表的查询语句。

2、链接查询:连接查询中的连接条件通过WHERE子句表达,连接条件和元组选择条件之间用AND(与)操作符衔接。

1)内连接:结果中只保留符合条件的元组,排除了两表中没有匹配的元组。

(1) 等值连接和非等值连接[〈表名1〉.]〈列名1〉〈比较运算符〉[〈表名2〉.]〈列名2〉(2) 自身连接例如,课程表中的先行课是在上学期应开设的,先行课的先行课,即间接先行课应提前一学年开设。

如果求查询某门课的间接先行课或全部课程的间接先行课,就需要对课程表进行自身连接。

相关主题