SQL学习笔记

来源:互联网 发布:jd软件 编辑:程序博客网 时间:2024/06/06 20:34

1.4.2 T-SQL中用户自定义数据类型的三种方法:

--第一种方法:从基本数据类型创建别名数据类型,目的:更清楚地说明对象中值的类型  --例如创建一个datetime的birthday数据类型,用于在employee的emp_birthday列中存储生日数据  CREATE TYPE birthday  FROM datetime NULL;  GO  --创建一个使用新数据类型表  CREATE TABLE employee    (emp_id char(5),emp_first_name char(30),emp_last_name char(40),emp_birthday birthday);--第二种方法:CLR用户定义数据类型--第三种方法  --创建一个表数据类型LocationTableType  CREATE TYPE LocationTableType As TABLE  (  FirstName VARCHAR(50),  LastName VARCHAR(50)  );  GO  --创建一个基于LocationTableType的变量  DECLARE @MyTable AS LocationTableType;  --向变量中插入数据行  INSERT INTO @MyTable VALUES('Ken','Levy');              INSERT INTO @MyTable VALUES('Sara','Ford');  --查询数据  SELECT * FROM @MyTable;  GO

1.4.6 注释
SQL Server支持两种注释类型: ①双连字符“- -”,从双连字符到行尾的内容均为注释
②“/**/”比较任意,在任意位置都可以,长度也没有限制。

1.5常量和变量

1.5.1常量
①字符串常量,包含在‘’或“”中,如字符串中有嵌入的单引号,最好用“”表示这个字符串,否则若用单引号表示这个字符串,要在嵌入的单引号之前再加一个单引号。
②Unicode字符串常量
格式与普通字符串相似,但前面有一个N标识符。如‘Michel’是字符串常量,而N‘Michel’是Unicode字符串常量。其与普通字符串常量区别:对于字符数据,储存Unicode数据时,每个字符使用2个字节,而不是每个字符一个字节。
③二进制常量
具有前缀Ox,不使用引号括起。
④bit常量
用数字0或1表示,不括在引号中。
⑤datetime常量
datetime常量使用特定格式的字符日期值表示,用单引号括起来。例如:

  1. 字母日期:‘April 15,,1998’。
  2. 数值日期格式:‘4/15/2012’
  3. 未分隔的字符串格式:‘19981207’

⑥integer常量
不用引号引起来,没有小数
⑦decimal常量
不用引号,包含小数点,如18.32
⑧float和real常量
用科学记数法表示
101.3E6
⑨money常量
以可选的货币作为前缀,包含小数点,但是不用使用引号括起来
¥12、$12

1.5.2变量
①局部变量
定义:用户在程序中定义的变量。仅仅在定义的程序范围内有效。局部变量可以用于从表中读取数据,也可以用来作为临时变量保存计算的中间结果,如批处理。局部变量的第一个字符必须为一个@。
②声明变量
变量只有在声明后才能使用,可以用DECLARE语句声明变量,在声明变量时可以指定变量的数据类型和长度。如

DECLARE @num1 As int;--若要声明多个变量,需要在定义的局部变量后使用一个逗号,然后指定下一个局部变量的名称和数据类型。如:DECLARE @LastName nvarchar(20),@FirstName navrchar(30),@Salary decimal(7,2)注释:> nvarchar表示可变长度的Unicode字符串> decimal(7,2)7是定点精度,2是小数位数。decimal(a,b)--a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0

使用变量时,应该注意变量的作用域,变量具有局部作用域,只在定义他们的批处理或者过程中可见。作用域范围从声明变量的地方到声明变量的批处理或存储过程的结尾。
③为变量赋值:
变量在声明后被默认设置为null,要为变量赋值,可以使用SET或SELECT语句,其中SET语句为首选。

DECLARE @num1 As int;SET @num1 = 1;--设置变量值为1

1.6 运算符
1.6.1
可用的运算符:+、-、×、/、%
除此之外,sql2008还可以用+=等运算符
加或减型值还可以对datetime和smalldatetime型值执行算术运算

1.6.2赋值操作符
等号(=)是唯一的赋值操作符,它通常与SET语句一起使用,为变量赋值。如

DECLARE @MyCounter int;SET @MyCounter = 1;

此外,也可以使用赋值运算符在列标题和定义列值的表达式之间建立关系。

1.6.3 位运算符

位运算符在两个表达式之间执行按位运算,这两个表达式可以是整数数据类型类别中的任何数据类型。如下:
&–位与(两个同时为真则真,同时为假则假)
|–位或(有任一真则真)

1.6.4 比较运算符
比较运算符用于测试两个表达式是否相同。除了text、ntext或image数据类型的表达式外,比较运算符可以用于所有的表达式。
=、>、<、>=、<=、<>–不等于
使用比较运算符的表达式的计算结果为布尔值类型,有三个值:TRUE、FALSE、UNKNOWN,注意次比较结果不能再结果集中返回。
1.6.5逻辑运算符对某些条件进行测试,以获取真实情况。逻辑运算符和比较运算符一样,返回有TRUE或FALSE值的布尔数据类型。
常用的逻辑运算符:

  • ALL,如果一组的比较都为true,则为TRUE,如:6>ALL(2,3,4)
  • AND 如果两个布尔表达式都为TRUE,则结果为TRUE
  • ANY 如果一组比较重任何一个为TRUE,则为TRUE
  • BETWEEN 如果操作数在某个范围之内,则为TRUE,常与AND一起使用,操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。如:
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    BETWEEN value1 AND value2

    (如需显示不在此范围之内的,可在BETWEEN前加not)

  • EXITS 如果子查询包含一些行,那么就为TRUE;

  • Like如果操作数和一种模式相匹配,那么就为TRUE。Like语句中会用到%等通配符
  • Not对任何其他布尔运算符的值取反
  • OR如果两个布尔表达式的一个为TRUE,则为TRUE
  • SOME 和ANY功能相同

1.6.6字符串串联运算符
用“+”进行串联

0 0