T-SQL基础

T-SQL就是Transact-SQL,是用来让程序与SQL Server沟通的主要语言,它是在标准的SQL基础上进行许多扩展而成的。SQL是关系数据库系统的标准语言,几乎所有数据库都能使用SQL来进行操作。

1.SQL基础

SQL是用于访问和处理数据库的标准计算机语言,SQL指结构化查询语言,全称是Structured Query Language。

2.T-SQL的组成

T-SQL主要由三部分组成。
(1)数据操作语言(DML):用于插入、修改、删除、和查询数据库中的数据,主要包括INSERT(插入)、UPDATE(更新)、DELETE(删除)和SELECT(查询)。
(2)数据定义语言(DDL):用于在数据库系统中对数据库、表、视图、索引等数据库对象进行创建和管理,主要包括DROP、CREATE、ALTER语句。
(3)数据控制语言(DCL):用于实现对数据库中数据的完整性、安全性控制,主要包括GRANT、REVOKE、DENY语句。

3.常量

常量也称为文字值或标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。一个常量通常由一种数据类型和长度,这二者取决于常量格式。常量可以分为以下几类:数字常量、字符串常量、时间和日期常量以及符号常量。

4.局部变量

局部变量是用户可自定义的变量,它是一个拥有特定数据类型的对象,其作用范围仅限制在程序内部。
局部变量不能是text、ntext或image数据类型。
(1).创建变量并赋值,两种赋值方法

--方法1
DECLARE 
@num INT  --声明变量
SELECT @num=COUNT(*) FROM employee --为变量赋值
select @num  --查询变量
--方法2
DECLARE 
@num INT 
SET @num=(select COUNT(*) from employee)
select @num

SELECT赋值和SET赋值的区别
(1).SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。

DECLARE 
@num INT ,
@myCOUNT INT
select @num=COUNT(*),@myCOUNT=COUNT(*) from employee
SELECT @num,@myCOUNT

(2).表达式返回多个值时,用SET将会出错,而SELECT将取最后一个值。

--子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
DECLARE 
@num INT ,
@myCOUNT INT
SET @num=(select e_salary from employee) 

--多个返回值时,将取最后一个值
DECLARE 
@num INT ,
@myCOUNT INT
select @num=e_salary from employee
SELECT @num --@num=2000

(3).表达式无返回值时,用SET将置变量值为NULL,用SELECT将保持变量值。

--无返回值时,变量值为NULL
DECLARE 
@num INT =1,
@myCOUNT INT
SET @num=(select e_salary from employee WHERE dept_no = 40)
SELECT @num --@num=NULL

--在select语句中无返回值,变量的值为初始变量时候的值
DECLARE 
@num INT =1,
@myCOUNT INT
select @num=e_salary from employee WHERE dept_no = 40
SELECT @num --@num=1

(4).使用标量子查询时,如果无返回值,SET和SELECT一样,都将置为NULL。

DECLARE 
@num INT =1,
@myCOUNT INT
SELECT @num=(select e_salary from employee WHERE dept_no = 40)
SET @num=(select e_salary from employee WHERE dept_no = 40)
SELECT @num --@num=NULL

5.全局变量

全局变量是SQL Server系统提供的内部使用变量,不用用户定义,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。
全局变量通畅存储一些SQL Server的配置设定值和统计数据。
引用全局变量时,必须以标识符‘@@’开头。

SELECT @@VERSION AS 'SQL Server版本'

6.运算符

运算符是一些符号,它们能够用于执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。
运算符主要有几大类:算数运算符、赋值运算符、比较运算符、逻辑运算符、连接运算符以及按位运算符。

  • 算数运算符:+、-、*、/、%
  • 比较运算符:=、>、<、>=、<=、<>、(!=、!<、!>)非ISO标准
  • 逻辑运算符:AND、NOT、LIKE、EXISTS、BETWEEN
  • 连接运算符:+
    比较运算符用来比较两个表达式的大小,表达式可以是字符、数字或日期格式数据,其比较结果是布尔值。除了text、ntext或image数据类型表达式外,比较运算符可以用于所有表达式。
    当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序,执行的顺序会影响所得到的运算结果。在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。

7.表达式

表达式是指用运算符和圆括号把变量、常量和函数等运算成分连接起来的有意义的式子,即使单个常量、变量和函数也可以看出一个表达式。
表达式是一个或多个值,运算符和SQL函数的组合,它们计算结果为确定的值。
根据连接表达式的运算符表达式分为算术表达式、比较表达式、混合表达式、逻辑表达式、按位表达式等。

8.通配符

查询时,又是无法指定一个清楚的查询条件。此时可以使用SQL通配符,通配符用来代替一个或多个字符,使用通配符时,需要于LIKE运算符一起使用。
%:匹配任意长度字符,包括零字符。

select * FROM goodes WHERE price LIKE '%2%'

_:匹配任意单个字符。

select * FROM goodes WHERE name LIKE '洗_机'
--查询e_job中含有's'和'c'字符的数据
select * from employee WHERE e_job LIKE '%[sc]%'

[^]或[!]:匹配不在括号中的任何字符。

--最后一位不为1的
select * FROM goodes WHERE number like '10[^1]'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352