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的格式在修改方面有一点不同,ADD和DROP是一样的

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 '信计%'