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