SQL Server 之T-SQL语言的学习

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

时间: 2024-11-08 22:25:24

SQL Server 之T-SQL语言的学习的相关文章

SQL Server中的锁的简单学习

原文:SQL Server中的锁的简单学习 简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查询的.这些查询并不会像绅士那样排队等待执行,而是会找最短的路径执行.因此,就像十字路口需要一个红绿灯那样,SQL Server也需要一个红绿灯来告诉查询:什么时候走,什么时候不可以走.这个红绿灯就是锁. 图1.查询可不会像绅士们那样按照次序进行排队 为什么需要

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示,SQL Server被分为2个主要引擎:关系引擎和存储引擎.关系引擎有时也被称为查询处理器,因为它的主要功能是查询优化和执行.它包含检查查询语法和准备查询树的命令解析器:查询优化器毫无疑问是任何数据库系统中皇冠上的宝石:查询执行器对执行(查询计划)负责. 存储引擎对所有数据输入.输出管理负责.它包

SQL Server快速生成SQL增删改查语句

你还在手敲代码生成SQL语句吗?你还在为因为马虎出错的SQL语句而感到无语吗?你还在为不知怎样表达复杂的SQL语句而纠结吗?如果你的回答为"是",那你就OUT啦,快来试试应用SQL Server资源管理器快速生成SQL语句吧. 首先,打开SQL Server2008,在菜单栏"查询"下拉菜单中找到"在编辑器中设计查询",如下图: 在打开的查询设计器窗口中添加要进行操作的数据库表. 在添加的表内下方空白部分右键单击鼠标,在弹出菜单中单击"

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第2部分)

计划缓存(Plan Cache) 如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的. 如果没找到被缓存的计划,然后命令分析器(Command Parser)在T-SQL基础上生成一个查询树(query tree).查询树(query tree)的内部结构是通过树上的每个结点代表查询中需要的执行操作.这个树然后被传给查询优化器(Query Optimizer)去处理.我们的简单查询没有一个存在的计划

SQL Server -&gt;&gt; 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)

原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一个新特性,Temporal Table(历史表)记录了表历史上任何时间点所有的数据改动.Temporal Table其实早在ANSI SQL 2011就提出了,而SAP HANA, DB2和Oracle早已在它们的产品中加入/实现了这一特性.所以说微软其实是落后了几个竞争对手.既然在CTP3.0中加入了,相信

SQL SERVER – Beginning of SQL Server Architecture – Terminology – Guest Post

AUGUST 30, 2012 BY PINAL DAVE SQL SERVER – Beginning of SQL Server Architecture – Terminology – Guest Post SQL Server Architecture is a very deep subject. Covering it in a single post is an almost impossible task. However, this subject is very popula

sql server 2012 打开sql server configuration manager 报错

Error message when you open SQL Server Configuration Manager in SQL Server: "Cannot connect to WMI provider. You do not have permission or the server is unreachable" Workaround解决办法 To work around this problem, open a command prompt, type the fol

22. SQL -- SQL Server 2005 和SQL Server 2008新特性

SQL SERVER 2005 与SQL SERVER 2008 新特性   SQLSERVER 2005 新特性 Enhanced Data Types:存储最大8K-2G Partitioned Table(分区表):数据拆分管理 背景:一个公司,有目前现存数据以及历史数据,各在一台SER 上,服务器访问方式: SQL 2000 TABLE 1:在一张table 中,对数据进行分区 Enhanced Indexing Features SER 1 SER 2 现存数据 TABLE 1 TAB

SQL Server里面导出SQL脚本(表数据的insert语句)

转载自:http://hi.baidu.com/pigarmy/blog/item/109894c445eab0a28326ac5a.html 最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能.BAIDU一下得到如下方法(亲测OK) 用这个存储过程可以实现: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @c

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘