文档库 最新最全的文档下载
当前位置:文档库 › SQL数据库语句总结

SQL数据库语句总结

SQL数据库语句总结
SQL数据库语句总结

数据库

T-SQL语句

1、创建数据库create database 数据库名

2、选择数据库use 数据库名

3、删除数据库drop database 数据库名

用SSMS

1、创建数据库

2、查看可修改数据库参数

3、删除数据库

基本表(仅仅是对表结构(属性和约束)的操作,而非表中数据)

T-SQL语句

1、创建基本表<重在约束>

2、修改基本表(约束或属性)

3、删除基本表

4、基本表的索引

用SSMS

1、创建基本表(课本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 NULL

1) 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 DATE

3、删除基本表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);

用SSMS

1、创建基本表(课本137)

2、建立表的约束条件和索引(课本138)

3、修改表结构(课本141)

数据(是对表中数据(属性和约束)的操作(增删改查),而非表结构)

T-SQL语句

1、数据插入

1)使用常量插入单个元组

INSERT INTO〈表名〉[(〈属性列1〉[,〈属性列2〉…)]

VALUES (〈常量1〉[,〈常量2〉]…)

如果没有列出任何列名,则必须将所有列名对应的值,包括空值“”,也要列出来;

如果列出了列名,则值要与列名出现的先后顺序对应,没有列出的属性会设为空,此时要注意该属性能否为空。

2)在表中插入子查询的结果集(一次插入多个元祖)

INSERT

INTO〈表名〉[(〈属性列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 类别ASC

8)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) 自身连接

例如,课程表中的先行课是在上学期应开设的,先行课的先行课,即间接先

行课应提前一学年开设。如果求查询某门课的间接先行课或全部课程的间接

先行课,就需要对课程表进行自身连接。

需用到为表重命名,再进行查询

Eg.查询每一门课的间接先行课

Select a.课程号,a.课程名,b.先行课(将a表看成课程表,b表看成先行课表)

From 先行课a b

Where a.先行课=b.课程号

(3)一般内连接

Select 职工.*,部门,电话

From 职工linner join部门on职工.所在部门=部门.部门号

2) 外部连接:把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null)

可用于检验数据的正确与否

(1)全外连接:如果把两表中非匹配项都保存在结果关系中,而在非匹配项所

对应的其他属性上填空值(Null)

Select 职工.*,部门,电话

From 职工full join部门on职工.所在部门=部门.部门号

(2)左外连接:只把左边关系R中要舍弃的元组保留*=

Select 职工.*,部门,电话

From 职工left join部门on职工.所在部门=部门.部门号

(3)右外连接:如果只把右边关系S中要舍弃的元组保留=*

Select 职工.*,部门,电话

From 职工right join部门on职工.所在部门=部门.部门号

图Eg.

3、嵌套查询

1)使用IN操作符的嵌套查询

在SQL语言中,一个select…from…where语句成为一个查询块儿。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询即为嵌套查询。

Eg. SELECT 学号,姓名FROM 学生

WHERE 学号IN ( SELECT 学号FROM 选课

WHERE 课程号IN ( SELECT 课程号FROM 课程

WHERE 课程名=‘高等数学' ))

In和=的区别:in用于划定某个属性的取值范围,而=用于限定某个属性的唯一取值所以,在查找结果唯一是可以用=,不唯一使用in

2)使用比较符的嵌套查询

比较后面的值需要查询得到

Eg.SELECT 学号,成绩

FROM 选课

WHERE 课程号=‘C1’AND 成绩> (

SELEC 成绩FROM 选课

WHERE 课程号=‘C1’AND 学号=

(SELECT 学号FROM 学生

WHERE 姓名='张三'))

3)使用ANY或ALL操作符的嵌套查询

〈字段〉〈比较符〉[ANY|ALL]〈子查询〉

Eg. SELECT *

FROM 学生

WHERE 年龄

WHERE 所在系=‘计算机系’) AND 所在系<>‘计算机系’

4)使用(NOT)EXISTS操作符的嵌套查询

Exists代表存在。Exist操作符后子查询结果若非空,则从表中选出非空值对应的查询结果。Not exist后子查询结果若为空,则从表中选出空值对应的查询结果Eg. 求选修了C2课程的学生姓名

SELECT 姓名FROM 学生

WHERE EXISTS (SELECT * FROM 选课

WHERE 学生.学号=学号AND 课程号='C2')

相当于(连接查询)

SELECT 姓名FROM 学生,选课

WHERE 学生.学号=选课.学号AND 课程号='C2'

Eg. 求没选修C2课程的学生姓名

SELECT 姓名FROM 学生

WHERE NOT EXISTS (SELECT * FROM 选课

WHERE 学生.学号=学号AND 课程号='C2')

4、组合查询Union (all)

Union代表并。Union all在并操作是保留重复的元组。

Eg.SELECT 学号FROM 选课WHERE 课程号=‘C1’

UNION

SELECT 学号FROM 选课WHERE 课程号=‘C2’

5、使用GROUP BY分组和SQL函数查询

未对查询结果(一般为select)按指定的一列或多列值分组,聚集函数将作用于整个查询结果;对查询结果分组后,聚集函数将分别作用于每个组。

常用函数如下

Eg.求课程和选修该课程的人数。

SELECT 课程号,COUNT(学号)

FROM 选课

GROUP BY 课程号

求选修课超过3门课的学生学号。

SELECT 学号

FROM 选课

GROUP BY学号HAVING COUNT(*)>3

HAVING后跟分组后筛选条件

Having和where的区别

Having必和group by连用,不会单独出现,其作用于组,从中选择满足条件的组。

where作用于基表或视图,从中选择满足条件的元组,不限于组。

Group by和group by all的区别

Group by只对查询结果分组,而group by all不仅会对查询结果分组,还会对不满

足查询结果的元组分组,即对整个查找范围(from后的范围)分组。但由于查找

结果中会有统计函数,而该统计函数只对查找结果进行了处理,查找范围之内查

找结果之外的元组并没有进行处理,所以这一部分返回null。

Eg.Select 类别,AVG(定价)平均值from图书

Where 出版社=‘机械工业出版社’

Group by 类别

Order by 类别ASC

AVG(定价)平均值:使用平均值做AVG(定价)别名,输出时别名将会作为结

果列名

6、使用compute和compute by 查询

Compute可以建立一个汇总摘要,compute by可建立分组汇总摘要。

Eg.select书号,书名,定价from图书

Where类别=‘计算机类’

Order by 书号ASC

Compute count(*),sum(定价)[by 出版社]

结果集中,后面以摘要形式列出一条count和sum记录

compute后函数不受group by影响,但受到where影响(即和group by同级,并行)后面加by,则会先by后的条件分类,再执行compute后的函数

别名

属性或表名或数据库名或函数结果别名

即: 属性或表名或数据库名或函数结果+空格+别名

别名将代替被别名者(被DBMS识别或者作为结果输出)

关系定义的完整性约束条件及违约处理

1、实体完整性:

定义

若属性A是基本关系R的主属性,则属性A的值不能为空值。

1) 实体完整性能够保证实体的唯一性。

2) 实体完整性能够保证实体的可区分性。

使用

create table中用primary key定义

1)单属性构成的码

定义为列级约束条件Sno CHAR(9) PRIMARY KEY

定义为表级约束条件PRIMARY KEY (Sno)

2)单属性构成的码

定义为表级约束条件PRIMARY KEY (Sno,Cno) <无法定义为列级约束条件> 检查和违约性处理

1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改

2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改

2、参照完整性:

定义

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值:

取空值(F的每个属性值均为空值)

或者等于S中某个元组的主码值

使用:

create table中用foreign key+reference定义

FOREIGN KEY定义哪些列为外码;REFERENCES指明这些外码参照哪些表的主码

FOREIGN KEY (Sno) REFERENCES Student(Sno)

检查和违约性处理

1. 拒绝(NO ACTION)执行

默认策略

2. 级联(CASCADE)操作

3. 设置为空值(SET-NULL)

对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值

3、用户定义的完整性:

定义

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。由RDBMS提供,而不必由应用程序承担。

使用:

属性上的约束条件:

CREATE TABLE时定义

列值非空(NOT NULL)Sno CHAR(9) NOT NULL

列值唯一(UNIQUE)Dname CHAR(9) UNIQUE

检查列值是否满足一个布尔表达式(CHECK)Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) 元组上的约束条件:

在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制

同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件

CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')

定义了元组中Sname和Ssex两个属性值之间的约束条件

性别是女性的元组都能通过该项检查,因为Ssex=‘女’成立;

当性别是男性时,要通过检查则名字一定不能以Ms.打头

检查及违约处理

插入元组或修改属性的值时,RDBMS检查元组上的约束条件是否被满足

如果不满足则操作被拒绝执行

4、完整性约束命名子句

CONSTRAINT <完整性约束条件名>

PRIMARY KEY短语CONSTRAINT StudentKey PRIMARY KEY(Sno)

|FOREIGN KEY短语

|CHECK短语]CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999)

In和exist的区别:执行顺序不同

In:查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表,符合要的输出,反之,则不输出。

Exist:先运行一次主查询,再去子查询里查询与其的结果,如果是true则输出,反之,则不输出。

只要not in的子查询中包含空值,那么最终的结果就为空;

not in 查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响,内表存在空值将导致最终的查询结果为空

not exists查询,外表存在空值,存在空值的那条记录将被输出,内表存在空值,对查询结果没有影响

视图

1、视图的特点

1)虚表,是从一个或几个基本表(或视图)导出的表

2)只存放视图的定义,不存放视图对应的数据

3)基表中的数据发生变化,从视图中查询出的数据也随之改变

SQL语句

2、视图的创建

CREATE VIEW <视图名> [(<列名> [,<列名>]…)]

AS <子查询>

[WITH CHECK OPTION];

1)组成视图的属性列名:全部省略或全部指定

2)子查询不允许含有ORDER BY子句和DISTINCT短语

3)WITH CHECK OPTION:表示在对视图进行update,insert,delete操作是,要保证操

作的数据满足视图定义中的谓词条件(视图子查询中的where子句条件)

[例]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。

CREATE VIEW IS_Student

AS

SELECT Sno,Sname,Sage

FROM Student

WHERE Sdept= 'IS'

WITH CHECK OPTION;

对IS_Student视图的更新操作:

修改操作:自动加上Sdept= 'IS'的条件

删除操作:自动加上Sdept= 'IS'的条件

插入操作:自动检查Sdept属性值是否为'IS'

如果不是,则拒绝该插入操作

如果没有提供Sdept属性值,则自动定义Sdept为'IS'

2、视图的特点

2、视图的特点2、视图的特点

2021年SQL语句大全实例

SQL语句实例 欧阳光明(2021.03. 07) 表操作 例1对于表的教学管理数据库中的表STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例2对于表的教学管理数据库中的表ENROLLS ,可以定义如下:CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO)

*欧阳光明*创编2021.03.07 CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例3根据表的STUDENTS表,建立一个只包含学号.姓名.年龄的女学生表。 CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=女?; 例4删除教师表TEACHER。 DROP TABLE TEACHER 例5在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例6把STUDENTS表中的BPLACE列删除,并且把引用 BPLACE列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7补充定义ENROLLS表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO);

SQL学习总结

SQL学习 2.1 SQL 简介 当面对一个陌生的数据库是,通常需要一种方式与它进行交换,以完成用户所需要的各种工作,这个时候,就要用到SQL语言了,由于SQL 语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成多种平台进行交互操作的底层会话语言。 2.2 SQL 使用入门 2.2.1 SQL分类 SQL 语句主要可以划分为以下3个类别 1)、DDL (Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。 2)、DML(Data Manipulation Languagr)语句:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。 3)、DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别、主要的语句关键字包括grant、revoke等。 2.2.2 DDL 语句 DDL是数据定义语言的缩写,是对数据库内部的对象进行创建(create)、删除(drop)、修改(alter)的操作语言,它和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表定义,结构的修改,更不会涉及其它的对象,DDL语句更多地被数据库管理员(DBA)所使用,一般开发人员很少使用。 下面通过一些例子来介绍MySQL中常用的DDL语句的使用方法。 1、创建数据库 因为所有的数据都存储在数据库中,因此需要学习的第一个命令是创建数据库,语法如下:

精典的SQL语句

精典的SQL语句ffice ffice" /> 1. 行列转换--普通 假设有张学生成绩表(CJ)如下 Name Subject Result 张三语文80 张三数学90 张三物理85 李四语文85 李四数学92 李四物理82 想变成 姓名语文数学物理 张三80 90 85 李四85 92 82 declare @sql var char(4000) set @sql = 'select Name' select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Res ult end) ['+Subject+']' from (select distinct Subject from CJ) as a select @sql = @sql+' from test group by name' exec(@sql) 2. 行列转换--合并 有表A, id pid 1 1 1 2 1 3 2 1 2 2 3 1 如何化成表B BR>id pid 1 1,2,3 2 1,2 3 1 创建一个合并的函数 create function fmerg(@id int) returns var char(8000) as begin declare @str var char(8000) set @str=''

select @str=@str+','+cast(pid as var char) from 表A where id=@id se t @str=right(@str,len(@str)-1) return(@str) End go --调用自定义函数得到结果 select distinct id,dbo.fmerg(id) from 表A 3. 如何取得一个数据表的所有列名 方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOL UMN表中取得该数据表的所有列名。 SQL语句如下: declare @objid int,@objname char(40) set @objname = 'tablename' select @objid = id from sysobjects where id = object_id(@objname) select 'Column_name' = name from syscolumns where id = @objid order b y colid 是不是太简单了?呵呵不过经常用阿. 4. 通过SQL语句来更改用户的密码 修改别人的,需要sysadmin role EXEC sp_password NULL, 'newpassword', 'User' 如果帐号为SA执行EXEC sp_password NULL, 'newpassword', sa 5. 怎么判断出一个表的哪些字段不允许为空? select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE= 'NO' and TABLE_NAME=tablename 6. 如何在数据库里找到含有相同字段的表? a. 查已知列名的情况 SELECT https://www.wendangku.net/doc/5e3236491.html, as TableName,https://www.wendangku.net/doc/5e3236491.html, as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type='U' AND https://www.wendangku.net/doc/5e3236491.html,='你的字段名字' b. 未知列名查所有在不同表出现过的列名 Select https://www.wendangku.net/doc/5e3236491.html, As tablename,https://www.wendangku.net/doc/5e3236491.html, As columnname From syscolumns s1, sysobjects o Where s1.id = o.id And o.type = 'U' And Exists ( Select 1 From syscolumns s2 Where https://www.wendangku.net/doc/5e3236491.html, = https://www.wendangku.net/doc/5e3236491.html, And s1.id <> s2.id ) 7. 查询第xxx行数据 假设id是主键: select *

数据库_经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1

SQL语句--Group By总结

1 SQL语句--Group By总结 1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 P.S. 这里真是体会到了一个好的命名的力量,Group By从字面是直接去理解是非常好理解的。恩,以后在命名的环节一定要加把劲:)。话题扯远了。 2. Group By 的使用: 上面已经给出了对Group By语句的理解。基于这个理解和SQL Server 2000的联机帮助,下面对Group By语句的各种典型使用进行依次列举说明。 2.1 Group By [Expressions]: 这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键: FruitName ProductPlace Price Apple China $1.1 Apple Japan $2.1 Apple USA $2.5 Orange China $0.8 Banana China

$3.1 Peach USA $3.0 如果我们想知道每个国家有多少种水果,那么我们可以通过如下SQL语句来完成: SELECTCOUNT(*)AS水果种类,ProductPlaceAS出产国 FROMT_TEST_FRUITINFO GROUPBYProductPlace 这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”很好理解对吧。这里值得注意的是结果集中有两个返回字段,一个是ProductPlace(出产国), 一个是水果种类。如果我们这里水果种类不是用Count(*),而是类似如下写法的话: SELECTFruitName,ProductPlaceFROMT_TEST_FRUITINFOGROUPBYProductPlace 那么SQL在执行此语句的时候会报如下的类似错误: 选择列表中的列'T_TEST_FRUITINFO.FruitName'无效,因为该列没有包含在聚合函数或GROUPBY子句中。 这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。 2.2 Group By All [expressions] : Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个 关键字ALL。这个关键字只有在使用了where语句的,且where条件筛选掉了一些组的情况才可以看出效果。在SQL Server 2000的联机帮助中,对于Group By All是这样进行描述的:

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

最新常用经典SQL语句大全完整版

常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.dat’--- 开始备份 BACKUP DATABASE pubs TO testBack

4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname

SQL语句从大到小排序

根据下面三个关系模式完成下面习题:答案已设为白色需要就全选设为黑色学生表student 第一章课件:编写基本的sql语句。 1.查询所有学生情况。 3.查询所有学生的姓名,性别以及年龄。 5.查询所有学生10年后的年龄。 7.查询所有课程(列名用中文显示)。 9.查看竟有那些学生选课(重复学号显示一次)。 11.显示课程表的边结构。第二章课件:约束和排序数据。 01.查询计算机系的所有学生的姓名和年龄。 02.查询体育课的学分。 03.查询年龄小于18的学生。 04.查询年龄大于20的学生。 05.查询年龄介于18和20之间的学生(包括18和20)。 06.查询年龄不在18和20之间的学生。 07.查询年龄为18,20,22的学生。 08.查询年龄不是18,20,22的学生。 09.查询所有姓张的学生。 10.查询所有没有先行课的课程。 11.查询有先行课的课程。 12.在计算机系中找,姓张的男生。 13.在计算机系中找,姓张的或者姓李的男生并且按照年龄从大到小排序。 14.查询所有学生信息,显示结果先按系从大到小排序,再按年龄排序。 第三章课件:多表查询 1.查询每个学生(学号)选了哪门课(课程)得了多少分 2.查询每个学生(姓名)选了哪门课(课程号)得了多少分 3.查询每个学生(姓名)选了哪门课(课程名)得了多少分 4.查询一下王林选可哪门课得了多少分。 5.查询每个学生的成绩类别(优、良还是及格)。 6.查询哪个学生没有选课(用外查询)。 7.查询哪门课没有人选(用外查询)。 第四章课件:组函数

1.查询一下所有课程的平均分,最高分,最低分和总分数。 2.查询一下有多少个学生参加选课。 3.查询一下计算机系有多少人过20岁。 4.统计一下计算机系的男生多少人。 5.查询一下每个学生考试的最高分和最低分。 6.查询每门课(课程号)的最高分和最底分。 7.查询每门课(课程名)的最高分和最底分。 8.查询计算机系中男生多少人,女生多少人。 9,查询人数在三百人以上的系。 10.查询选修人数在三人(包括三人)的课程(课程名)。 11.查询各科考试成绩最低的同学。 12.查询考试成绩小于所选课程平均分的人。(有能力的同学选做) 第五章课件:子查询 1.查询所有比王林大的同学信息。 2.查询和王林同在一个系的所有学生信息。 3.查询一下谁的成绩(所有成绩)最低。 4.查询一下每门课成绩最底的同学(要姓名,和成绩)。 5.查询一下哪个学生没有选课(用子查询)。 6.查询一下哪门课没有人选(用子查询)。 7.查询一下和王林一个系,但是比他年龄大的同学。 第六章课件:ddl语句 1.创建以上四个表,要求每个表必须有主键,表和表之间必须有外间关联。 3.写出insert语句,给表添加以上数据。 5.提交所有操作。 7.将王林的年龄设置为空。 9.将张大民调到计算机系。 11.将体育课的学分设置成和管理学学分一样(update 中带有子查询)。 13.回滚所有操作。 9.某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:卡里面的“o和0”(哦和零)“i和1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据

常用经典SQL语句大全完整版教学文案

常用经典S Q L语句大 全完整版

常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.dat’--- 开始备份

BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col….)

50个经典sql语句总结

一个项目涉及到的50个Sql语句(整理版) --1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表 Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号 --3.教师表 Teacher(T,Tname) --T 教师编号,Tname 教师姓名 --4.成绩表 SC(S,C,score) --S 学生编号,C 课程编号,score 分数 */ --创建测试数据 create table Student(S varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10)) insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(C varchar(10),Cname nvarchar(10),T varchar(10)) insert into Course values('01' , N'语文' , '02') insert into Course values('02' , N'数学' , '01') insert into Course values('03' , N'英语' , '03') create table Teacher(T varchar(10),Tname nvarchar(10)) insert into Teacher values('01' , N'张三') insert into Teacher values('02' , N'李四') insert into Teacher values('03' , N'王五') create table SC(S varchar(10),C varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80) insert into SC values('01' , '02' , 90) insert into SC values('01' , '03' , 99) insert into SC values('02' , '01' , 70) insert into SC values('02' , '02' , 60) insert into SC values('02' , '03' , 80) insert into SC values('03' , '01' , 80) insert into SC values('03' , '02' , 80) insert into SC values('03' , '03' , 80) insert into SC values('04' , '01' , 50) insert into SC values('04' , '02' , 30) insert into SC values('04' , '03' , 20) insert into SC values('05' , '01' , 76) insert into SC values('05' , '02' , 87)

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

知识点、SQL语句学习及详细总结

一. 数据库简介和创建 1. 系统数据库 在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行的系统数据库: (1)master:记录了SQL SERVER实例的所有系统级消息,包括实例范围的元数据(如登录帐号)、端点、链接服务器和系统配置设置。 (2)msdb:供SQL SERVER 代理服务调度报警和作业以及记录操作员的使用,保存关于调度报警、作业、操作员等信息。(备份还原时) (3)model:SQL SERVER 实例上创建的所有数据库的模板。 (4)tempdb:临时数据库,用于保存临时对象或中间结果集,为数据库的排列等操作提供一个临时工作空间。(每次启动都会重新创建) (5)Resource:一个只读数据库,包含了SQL SERVER 的所有系统对象。(隐藏的数据库) 2. 数据库的组成 2.1 数据文件 (1)主要数据文件:扩展名为 .mdf ,每个数据库有且只能有一个。 (2)次要数据文件:扩展名为 .ndf ,可以没有或有多个。 2.2 日志文件 扩展名为 .ldf ,用于存放恢复数据库的所有日志信息。 2.3 数据的存储分配 (1)数据文件和日志文件的默认存放位置为:\Programe Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data文件夹。 (2)数据的存储分配单位是数据页。一页表是一块8KB的连续磁盘空间。(3)页是存储数据的最小空间分配单位,页的大小决定了数据库表中一行数据的最大大小。

3. SQL语句数据库操作 (1)创建数据库 CREATE DATABASE database_name 二. SQL基础 SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。 1. SQL功能概述

强化-SQL语句强化训练(史上最全最经典,呕血推荐) sql语句练习

2010/7 1. 有4个关系模式如下:出版社(出版社编号,出版社名称);图书(图书编号,书名,出版社编号,定价);作者(作者编号,姓名);著书(图书编号,作者编号,作者排序) 注:作者排序=1表示第一作者,依此类推。用SQL语句,完成第36~39题。 (1).检索所有定价超过20元的书名。 答案:SELECT书名(1分) FROM图书(1分) WHERE定价>20(2分) (2).统计每个出版社图书的平均定价。 答案:SELECT出版社编号,A VG(定价)(2分) FROM图书(1分) GROUP BY出版社编号(1分) (3).将科学出版社的所有图书定价下调5%。 答案:UPDATE图书SET定价=定价*0.95(1分) WHERE出版社编号IN(1分) (SELECT出版社编号FROM出版社(1分) WHERE出版社名称="科学")(1分) 【说明】WHERE出版社名称LIKE"科学"也正确。 (4).列出所有图书的书名、第一作者姓名和出版社名称。 答案:SELECT书名,姓名,出版社名称(1分) FROM出版社A,图书B,作者C,著书D(1分) WHEREA.出版社编号=B.出版社编号ANDB.图书编号=D.图书编号(1分) ANDC.作者编号=D.作者编号AND作者排序=1。(1分) S(SNO,SNAME,AGE,SEX,SDEPT) SC(SNO,CNO,GRADE) C(CNO,CNAME,CDEPT,TNAME) 1.试用SQL的查询语句表达下列查询: ①检索LIU老师所授课程的课程号和课程名。 ②检索年龄大于23岁的男学生的学号和姓名。 ③检索至少选修LIU老师所授课程中一门课程的女学生姓名。 ④检索W ANG同学不学的课程的课程号。 ⑤检索至少选修两门课程的学生学号。 ⑥检索全部学生都选修的课程的课程号与课程名。 ⑦检索选修课程包含LIU老师所授课程的学生学号。 2.试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询: ①统计有学生选修的课程门数。 ②求选修C4课程的学生的平均年龄。 ③求LIU老师所授课程的每门课程的学生平均成绩。 ④统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 ⑤检索学号比WANG同学大,而年龄比他小的学生姓名。 ⑥检索姓名以WANG打头的所有学生的姓名和年龄。 ⑦在SC中检索成绩为空值的学生学号和课程号。 ⑧求年龄大于女同学平均年龄的男学生姓名和年龄。 ⑨求年龄大于所有女同学年龄的男学生姓名和年龄。 3.试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作: ①往基本表S中插入一个学生元组('S9','WU',18)。

精妙SQL语句收集

精妙SQL语句收集 摘要:一、基础 二、提升 三、技巧 正文: SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2... from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加var char类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col)

一个项目涉及到的50个Sql语句

/* 标题:一个项目涉及到的50个Sql语句(整理版) 作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 时间:2010-05-10 地点:重庆航天职业学院 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。 问题及描述: --1.学生表 Student(Sid,Sname,Sage,Ssex) --Sid 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(Cid,Cname,Tid) --Cid --课程编号,Cname 课程名称,Tid 教师编号 --3.教师表 Teacher(Tid,Tname) --Tid 教师编号,Tname 教师姓名 --4.成绩表 SC(Sid,Cid,score) --Sid 学生编号,Cid 课程编号,score 分数 */ --创建测试数据 create table Student(Sid varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10)) insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(Cid varchar(10),Cname nvarchar(10),Tid varchar(10)) insert into Course values('01' , N'语文' , '02') insert into Course values('02' , N'数学' , '01') insert into Course values('03' , N'英语' , '03') create table Teacher(Tid varchar(10),Tname nvarchar(10)) insert into Teacher values('01' , N'张三') insert into Teacher values('02' , N'李四') insert into Teacher values('03' , N'王五') create table SC(Sid varchar(10),Cid varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80) insert into SC values('01' , '02' , 90) insert into SC values('01' , '03' , 99) insert into SC values('02' , '01' , 70) insert into SC values('02' , '02' , 60) insert into SC values('02' , '03' , 80)

相关文档