T-SQL 基础简介

版权声明:原创文章,转载请注明出处 https://blog.csdn.net/hza419763578/article/details/83960644

一、 标识符

可以用做标识符的字符: 
英文字符:A~Z或a~z,在SQL中是不用区别大小写的。 
数字:0~9,但数字不得作为标识符的第一个字符。
特殊字符:_、#、@、$,但$不得作为标识符的第一个字符。 
特殊语系的合法文字:例如中文文字也可以作为标识符的合法字符。

小结:英文字母、数字、_、#、@、$或者汉字组成,不可以数字或$开头

(标识符不能是SQL的关键词,例如:“table”、“TABLE”、“select”、“SELECT”都不能作为标识符。 标识符中不能有空格符,或_、#、@、$之外的特殊符号。 标识符的长度不得超过128个字符长度。)

二、数据类型

三、 常量

字符型常量  如:‘abcde’

整型常量    如:11,70,1200等

实型常量    如:3.14,3.5等

日期型常量  如:6/25/83,may 110 2000等

货币常量    如:$1000 等

四、变量

(1)变量分类 

局部变量(local variable,以 @为变量名称开头
    是由用户定义的变量,这些变量可以用来保存数值、字符串等数据 
全局变量(global variable,@@为名称头
    是由系统提供及赋值,用来保存一些系统的信息。

扫描二维码关注公众号,回复: 4059932 查看本文章

(2)局部变量

(1)局部变量定义
    DECLARE @VariableName Data_Type
说明:
    一次可以声明多个变量;
    局部变量在声明后均初始化为NULL。

例1:声明一个长度为8个字符的变量id
      declare @id char(8)
      DECLARE @VAR1 CHAR(20),@VAR2  INT 


(2)局部变量赋值
赋值格式一:
    SET 变量名 = 表达式
    说明:
        变量名:是除 cursor、text、ntext 或 image 外的任何类型变量的名称。
        表达式:是任何有效的 SQL Server 表达式        
    例2:
        SET  @VAR1 = 'AHJHFDSJF'
        SET  @VAR2 = 123

赋值格式二:
    SELECT  变量名 = 表达式或 SELECT子句
例3  
    SELECT   @VAR1 = 'AHJHFDSJF'
    SELECT   @VAR2 = 123
    
例4、定义变量@vcity,并将pubs例库中,authors表中作者编号(au_id)
     为“172-32-1176”的作者所在城市的(city)值赋予它。
    
     SELECT  @vcity = select city from authors 
                      where au_id = ‘172-32-1176’   
     如果 SELECT 语句返回多个值,则将返回的最后一个值赋给变量
     如果 SELECT 语句没有返回行,变量将保留当前值。 
 

eg:

declare @a Datetime,@b int,@x int --声明两个变量
set @a='2018-11-11'
set @b=(select min(Credit) from Course)
select @x=count(*) from Course;  -- 少写一个select

-- select或者print打印输出
select @a,@b
print @x
select @a,@b
print @x

(3)全局变量

@@开头   主要用于存放sql server 工作状态信息

全局变量可以用select、print显示当前值

eg:   select print混在一起执行 交界处断开不输出

select @@SERVERNAME --返回SQL服务器名称
select @@LANGUAGE   --返回当前使用语言名
select @@VERSION	--返回SQL服务器安装日期、版本和处理器类型
print APP_NAME()	--返回当前会话应用程序
print USER_NAME()	--返回用户数据库用户名
print GETDATE()		--返回当前时间
-- 补:返回年份print DATENAME(YYYY,GETDATE()) 或 select DATENAME(YYYY,GETDATE())

上面数三个select的输出 一个输出一个表格 不方便复制    下面是3个print输出 纯文本方便复制

Microsoft SQL Server Management Studio - 查询
dbo
11 11 2018  6:44PM

五、 运算符

运算符用来执行列或变量间的数学运算或值的比较,SQL Server支持的运算符有:
    算术运算符               +,-,*,/,%(取模)
    比较运算符               =、>、<、>=、<=、<>(不等于)
    字符串连接运算符    +
    逻辑运算符              and(与)、 or(或)  、not(非)
    位运算符                  按位与(&)、或(| )、异或(^)、求反(~)
    (位运算符在SQL中已经很少用到)

六、 函数

1、字符串函数
    T-SQL提供了如下用于字符或字符串的函数

ASC II( ) 

返回字符串表达式最左面字符的ASC II码值 

CHAR( ) 

把一个表示ASC II代码的数值转换成对应的字符 

CHARINDEX( ) 

返回一个子串在字符串表达式中的起始位置 

PATINDEX( ) 

返回一个子串在字符串表达式中的起始位置,在子串中可以使用通配符‘%’,这个函数可以用在TEXT、CHAR和VARCHAR类型的数据上 

DIFFERENCE( ) 

返回两个字符串的匹配程度 

SOUNDEX( ) 

返回两个字符串发音的匹配程度

LOWER( ) 

把大写字母转换成小写字母 

UPPER( ) 

将小写字母转换成大写字母 

LTRIM( ) 

删除字符串的前导空格 

RTRIM( ) 

删除字符串的尾部空格 

REPLICATE( ) 

重复一个字符表达式若干次 

REVERSE( ) 

取字符串的逆序 

SPACE( ) 

产生空格字符串 

STR( )

将数值转换成字符串

STUFF( ) 

用一个子串按规定取代另一个子串 

RIGHT( ) 

从字符的右部取子串 

SUBSTRING( ) 

取子串函数 

LEN()

字符串字符个数函数

LEFT()

取子串函数

RIGHT()

取子串函数

SUBSTRING()

取子串函数

SPACE(n)

n为int类型 返回n个空格组成的char字符串

UPPER()

函数将小写字符转换为大写字

LOWER()

函数则将大写字符转换为小写字符

LTRIM()

删除字符串的左部空格

RTRIM()

删除字符串的右部空格。

STR()

将数字数据转换成字符数据

2  数学函数

ABS( ) 

SIN ( ) 

COS( ) 

TAN( ) 

COT( ) 

ASIN( ) 

ACOS( ) 

绝对值函数 

正弦函数 

余弦函数 

正切函数 

余切函数 

反正弦函数 

反余弦函数 

ATAN( ) 

CEILING( ) 

FLOOR( ) 

ROUND( ) 

DEGREES( ) 

RADIANS( ) 

EXP( ) 

反正切函数 

 向上取整函数 

向下取整函数 

四舍五入函数 

将弧度转换成角度 

将角度转换成弧度 

指数函数 

LOG( ) 

LOG 10( ) 

PI( )

POWER( ) 

SQRT( ) 

RAND( ) 

SIGN( ) 

自然对数函数 

以10为底的对数函数 

圆周率

乘方函数 

平方根函数 

产生一个随机数 

返回+1、0或-1 

        返回整数值函数
            CEILING与FLOOR函数都用于返回数值表达式的整数值,但返回的值不同。
        乘方运算函数
            POWER(数值表达式1,数值表达式2)
        自然指数函数
            语法:EXP(float表达式)
            求指定的float表达式的自然指数值,返回float型的值。
        平方根函数
            语法:SQRT(float表达式)
            求指定的float表达式的平方根,返回float型的值。
        产生随机数函数
            用于返回一个位于0和1之间的随机数。
            语法:RAND(整数表达式)
            整型表达式在这里起着产生随机数的起始值的作用。
        四舍五入函数
            语法:ROUND(数值表达式,整数)
            该函数将数值表达式四舍五入成整数指定精度的形式。
            在这里,整数可以是正数或负数。正数表示要进行运
            算的位置在小数点后,反之要运算的位置在小数点前。
 

3   日期和时间函数

命令

格式

DATEADD( ) 

在一个日期值上加上个间隔,返回值仍是日期值 

DATEDIFF( ) 

计算两个日期值之间的间隔 

DATENAME( ) 

返回表示日期中某部分的字符串 

DATEPART( ) 

返回表示日期中某部分的数值 

GETDATE( ) 

返回系统日期和时间 

        返回当前的系统时间函数
            GETDATE():返回当前的系统时间。
        返回日期时间的指定部分函数
            DATEPART和DATENAME函数都能返回给定日期的指定部分,如:年、月、日等。
            eg:DATENAME(YYYY,GETDATE())获得年
        改变数值后的日期时间函数
            DATEADD函数在指定日期时间的基础上加一段时间,返回新的日期时间值。
            Dateadd(datepart , number, date ) --差值转换为datepart日期元素的格式
            
        求两日期时间之间的差值函数
            DATEDIFF函数:返回开始日期和结束日期在给定日期部分上的差值。
            datediff(datepart , startdate , enddate ) --差值转换为datepart日期元素的格式
 

4   类型转换函数

CAST和CONVERT函数能将某种数据类型的表达式显式转换为另一种数据类型
CAST和CONVERT提供相似的功能,但CONVERT功能更强一些。
    CAST ( expression AS data_type )
    CONVERT (data_type[(length)], expression [, style])

七  语句

1 定义语句块
2 返回客户端消息语句
3 条件判断语句
4 循环语句
5 其他语句

流程控制

1. BEGIN...END
2. IF…ELSE 
3. WHILE、BREAK、CONTINUE
4. GOTO
5. RETURN

1 定义语句块

BEGIN…END表示一个区块,凡是在BEGIN与END之间的程序都属于用一个流程控制,通常都是与IF…ELSE或WHILE等一起使用,如果BEGIN…END中间只有一行程序,则可以省略BEGIN与END。

语法
    BENGIN
      Sql_statement1
      Sql_statement2
      ...
    END
注意:
Sq1_statement:是任何有效的T-SQL语句。
BEGIN…END语句块允许嵌套 。

2 Begin--End

eg : 查找cno='2'的课程,有则删除,没有提示没找到

If Exists(SELECT * from course where cno='2')
	Begin
		Delete course where cno='2'
		Print '课程号为2的课程已删除!'
	End
Else
	Print '课程号为2的课程不存在!'

-- 运行结果:
(1 行受影响)
课程号为2的课程已删除!

注:delete Course where cno=1;  也可以删除记录 即可以省略from

3 IF…ELSE

Declare @var float
Select @var=(select sum(salary) from employees)
IF @var>10000 
	If @var<20000
		Print '工资总和在10000到20000之间'
	else 
		print '工资总和大于20000'
Else
	print '工资总和小于10000'

4 循环语句 主要while循环 sql server很少使用for循环

Declare @i int, @sum int
Set @i=0
set @sum=0
While @i>=0
   Begin
      set @i=@i+1
      if @i<=100
         if (@i%2)=0
	        Continue
         else
	        set @sum=@sum+@i
      else
         Begin
           print '1到100之間的奇數和='+str(@sum)
           break
         End
    End

--运行结果:
1到100之間的奇數和=      2500

5 其他语句

等待语句
    该语句可以指定它以后的语句在某个时间间隔之后执行,或未来的某一时间执行。
    语法:waitfor{DELAY‘time’|TIME‘time’}    eg:waitfor delay '02:00' 延迟2小时
返回语句
    RETURN用于从过程、批处理或语句块中无条件退出,不执行位于RETURN之后的语句。
无条件转移语句
    在程序中执行到某个地方时,可以使用GOTO语句跳到另一个使用语句标号标识的地方继续执行。
    语法:GOTO label
    注:label是指向的语句标号。

八、批处理

1. 批处理:指包含一条或多条T - SQL语句的语句组,这组语句从应用程序一次性地发送到
   SQL server服务器执行。
2. 执行单元:SQL server服务器将批处理语句编译成一个可执行单元,这种单元称为执行单元。 
3. 若批处理中的某条语句编译出错,则无法执行。若运行出错,则视情况而定。
4. 书写批处理时,go语句作为批处理命令的结束标志,当编译器读取到go语句时,会把go语句前
   的所有语句当作一个批处理,并将这些语句打包发送给服务器。go语句本身不是T - SQL语句
   的的组成部分,只是一个表示批处理结束的前端指令。 
 

注意:
    1)create  default , create  rule , create  trigger和create view等语句在同一个批处理中只能提交一个。
    2)不能在删除一个对象之后,在同一批处理中再次引用这个对象。 
    3)不能把规则和默认值绑定到表字段或者自定义字段上之后,立即在同一批处理中使用它们。 
    4)不能定义一个check约束之后,立即在同一个批处理中使用。
    5)不能修改表中一个字段名之后,立即在同一个批处理中引用这个新字段。 
    6)使用set语句设置的某些set选项不能应用于同一个批处理中的查询 
    7)若批处理中第一个语句是执行某个存储过程的execute语句,则execute关键字可以省略。
      若该语句不是第一个语句,则必须写上。 

eg:

use  exp6
go 
select   *   from  student
go 
creacte  view  view1  as 
select  *   from  studnet
where  sno = '1'
go 
select  *  from  view1
go 

猜你喜欢

转载自blog.csdn.net/hza419763578/article/details/83960644