SQL Server T-SQL语言的学习

 

举例:

1:学生表student

学号

姓名

性别

班级

2007001

李晓明

土木0701

2007002

王莉

信计0701


 2:成绩表score

学号

课程编号

课程名称

成绩

2007001

1949

高等数学

85

2007001

1823

C语言

98

2007002

1950

数据结构

60

 

 

1.数据定义语言

数据库语言属于第四类语言,与其他语言不同之处是:

      不区分大小写

      字符串全部用单引号

      不区分字符和字符串

      语句之间不以分号作为分割

      多几个数据类型(比如说Date

(1)创建表

语法:

CREATE  TABLE  <表名>

(

<列名><数据类型>[列完整性约束条件]

[,<列名><数据类型>[列完整性约束条件]]

……

[,<列名><数据类型>[列完整性约束条件]]

)

列完整性约束条件的格式:

[[Default 默认值]]|[[Identity [(seed,increment)]]] 标识,标识种子,增量

[NULL | NOT NULL ] 默认为NULL

[PRIMARY KEY | UNIQUE ] 前者只能有一个,但是有些属性不允许重复,比如身份证和电话号,可以再多个上写UNIQUE

 

1

Create Table student

(

Id bigint identity(2007001,1) PRIMARY KEY,

Name varchar(10) not null,

Sex char(2) not null,

Classname varchar(10) not null

)

 

2

Create Table score

(

Id bigint not null Foreign Key References student(id),  效果如表

Classid int not null,

Classname varchar(10) not null,

Score int,

Constraint XH_KCH Primary Key(id,classid)  联合主键,XH_KCH可以随意起个名字

)

最好在每个新建查询中添加USE Test说明在哪个表中操作,防止误操作其他表(系统表)。

 

(2)修改表

语法:

ALTER  TABLE  <表名>

[ADD<新列名><数据类型>[完整性约束条件]]

[DROP<完整性约束名>(列名)]

[MODIFY<列名><数据类型>]

 

3

Alter Table student add academic varchar(20)

说明:SQL Server的格式在修改方面有一点不同,ADDDROP是一样的

Alter table student alter column name varchar(20)

 

(3)删除表

语法:

DROP  TABLE  表名

 

4

Drop Table student

 

2.数据操纵语言

(1)增加记录

语法:

Insert [into] 表名 values(列值1...列值n)

举例:

Insert student values(‘李晓明’,’男’,’土木0701’)  这里必须要严格一致对应,如果有多条,可以接着写括号

或:

Insert into student(name,sex,classname) values(‘李晓明’,’男’,’土木0701’)

 

(2)删除记录

语法:

Delete [FROM] 表名 WHERE 条件

举例:

Delete score where classid=1821

(这里的条件可以用classid like ‘2010%’  其中通配符%代表任意字符串,_代表一个字符串 模糊查询)

 

(3)修改记录

语法:

update表名 SET 列名=表达式[...,]

WHERE 条件

举例:

Update score set classid=1821 where classid=1823  1823改成1821

(可以有and 和 or 的逻辑表达)

 

(4)查询记录

语法:

SELCET  1 [,2,...]

FROM   表名

WHERE 条件

GROUP BY  分组表达式

HAVING  分组统计条件

OREDR BY   排序表达式

 

举例:

1:查询所有学生的基本信息

Select * from student

2:查询所有学生的考试成绩,并显示其所在专业

Select student.id,name,academic,score.classname,score

From student,score

Where student.id=score.id

3:查询成绩不及格的学生的所有信息

Select student.id,name,sex,student.classname,score.classid,score.classname,score

From student,score

Where student.id=score.id

4:查询学号为2007001的学生的“高等数学”课成绩

Select score.score

From student,score

Where student.id=’2007001’ and score.classname=’高等数学’

5:查询所有学生中分数最高的详细信息

select *

from score

where score.score in

(

select MAX(score.score)

from score

)

备注:数据库中提供一些基函数,如:max,min,count

6:查询所有“信计”专业学生的信息

select *

from student

where classname like '信计%'

 

 

 

09-06 13:26