【SQL server速成之路】T-SQL语言(一)(2)




[]( )数据类型

-------------------------------------------------------------------



  **1.系统数据类型**  

  系统数据类型又称为基本数据类型。



  **2.用户自定义数据类型**  

  用户自定义数据类型可看做是系统数据类型的别名。



  **例如**:在图书借阅系统中xsbook数据库,创建了xs、book、jy三个表,从三个表的表结构可看出:表xs中的借书证号字段值与表jy中的借书证号字段值应有相同的类型,均为字符型值、长度可定义为8,并且不允许为空值,为了使用方便,并使含义明确,可以先定义一数据类型,命名为:library\_card\_num,用于描述借书证号的类型属性,然后将表xs中的借书证号字段和表jy中的借书证号字段定义为library\_card\_num数据类型。  

自定义数据类型library\_card\_num后,重新设计xsbook数据库中xs、jy表结构中的借书证号字段,如表5.4~表5.6所示。  

![在这里插入图片描述](https://img-blog.csdnimg.cn/921ab5732f354891b0a73384ce56163a.png)  

![在这里插入图片描述](https://img-blog.csdnimg.cn/6297ddcc16324319882df2cb4cf8b819.png)  

![在这里插入图片描述](https://img-blog.csdnimg.cn/f878cb5139a54965be0cc51f110b6576.png)  

  创建用户自定义数据类型时应考虑如下三个属性:



*   数据类型名称;

*   新数据类型所依据的系统数据类型(又称为基类型);

*   为空性。



创建用户自定义数据类型的方法如下:  

  (1)使用“对象资源管理器”定义。步骤如下:



>   ① 启动“SQL Server Management Studio”→在“对象资源管理器”中展开“数据库”→“xsbook”→“可编程性”→右击“类型”,选择“新建”选项,再选择“新建用户定义数据类型”,弹出“新建用户定义数据类型”窗口。  

>   ② 在“名称”文本框中输入自定义的数据类型名称,如Library\_card\_num。在“数据类型”下拉框中选择自定义数据类型所基于的系统数据类型char。在“长度”栏中填写要定义的数据类型的长度8。其他选项使用默认值,如图5.1所示,单击“确定”按钮即可完成创建。



![在这里插入图片描述](https://img-blog.csdnimg.cn/c46a939252de419d92599d05f40638fc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6L-Z5Liq5pi156ew5oiR5oOz5LqGMjDliIbpkp8=,size_8,color_FFFFFF,t_70,g_se,x_16)  

  (2)使用CREATE TYPE命令定义。在SQL Server 2012中,使用CRETAE TYPE语句来实现用户数据类型的定义。语法格式:



CREATE TYPE [<数据库架构名>. ] <自定义类型名>

FROM <系统数据类型名> [ ( <精度> [ , <小数位数> ] ) ]

[ NULL | NOT NULL ] 

[ ; ]




  根据上述语法,定义描述借书证号字段的数据类型的语句如下:



CREATE TYPE library_card_num

FROM char(8) NOT NULL



  (3)删除用户自定义数据类型。界面方式删除用户自定义数据类型的主要步骤如下:  

在“对象资源管理器”中展开数据库“xsbook”→“可编程性”→“类型”→在“用户定义数据类型”中选择类型“dbo.library\_card\_num”,右击鼠标,在弹出的快捷菜单中选择“删除”菜单项,打开“删除对象”窗口后单击“确定”按钮即可(实际不做操作)。



  (4)使用命令删除用户自定义数据类型。使用命令方式删除自定义数据类型可以使用DROP TYPE语句。语法格式:



DROP TYPE [ <数据库架构名>. ] <自定义类型名>[ ; ]




  例如,删除前面定义的library\_card\_num类型的语句为:



DROP TYPE library_card_num




  (5)利用用户自定义数据类型定义字段。



  在定义类型后,接着应考虑定义这种类型的字段,同样可以利用“对象资源管理器”和“T-SQL命令”两种方式实现。  

利用命令方式定义xs表结构如下:



CREATE TABLE xs

(

借书证号 library_card_num  NOT NULL PRIMARY KEY,	/*定义为library_card_num类型*/

姓名 	char(8) 	NOT NULL,

性别 	bit 		NOT NULL DEFAULT 1,

出生时间 	date 		NOT NULL,

专业 	char(12) 	NOT NULL,

借书量 	int 		NOT NULL,

照片 	varbinary(MAX)	 NULL

)

GO




  **3.用户自定义表数据类型**



  SQL Server 2012还提供了一种新的用户自定义数据类型,称为用户自定义表数据类型(User-defined Table Types)。这种数据类型也是由用户自行定义,可以作为参数提供给语句、存储过程或者函数。创建自定义表数据类型也使用CREATE TYPE语句,语法格式如下:



CREATE TYPE [ <数据库架构名>. ] <自定义类型名>

AS TABLE ( <column_definition>

    [ <table_constraint> ] [ ,...n ] )  

[ ; ]




【**例**】 创建用户自定义表数据类型,包含jy表中的所有列。



CREATE TYPE jy_tabletype

AS TABLE

(

	借书证号char(8)	NOT NULL,

	ISBN 	char(18)	NOT NULL,

	索书号	char(10)	NOT NULL PRIMARY KEY,

	借书时间date

)



[]( )变量

-----------------------------------------------------------------



  **1.变量**  

  变量名必须是一个合法的标识符。



(1)标识符  

在SQL Server中标识符分为两类:



> ① 常规标识符。  

> ② 分隔标识符。



(2)变量的分类  

SQL Server中变量可分为两类:



> ① 全局变量。  

> ② 局部变量。



**2.局部变量的使用**



  (1)局部变量的定义与赋值



  ① 局部变量的定义  

  在批处理或过程中用 DECLARE 语句声明局部变量,所有局部变量在声明后均初始化为NULL。  

语法格式:



DECLARE { @<局部变量名> <数据类型> [= <变量值>]} [ ,…n]




  ② 局部变量的赋值  

  定义局部变量后,可用SET或SELECT语句给其赋值。  

  用SET语句赋值,语法格式:



SET @<局部变量名>=<值>




【例】 创建局部变量@var1、@var2,并赋值,然后输出变量的值。



DECLARE @var1 char(10), @var2 char(30)

SET @var1=‘中国’ /一个SET语句只能给一个变量赋值/

SET @var2=@var1+ ‘是一个伟大的国家’

SELECT @var1, @var2




语句的执行结果如图所示。  

![在这里插入图片描述](https://img-blog.csdnimg.cn/e0fc0e40889d458fad5651f129acea49.png)  

【例】 创建一个名为sex的局部变量,并在 SELECT 语句中使用该局部变量查找表xs中所有男同学的借书证号、姓名。



DECLARE @sex bit

SET @sex=1

SELECT 借书证号,姓名

FROM xs

WHERE 性别=@sex



【例】 将查询结果赋给变量。



DECLARE @student char(8)

SET @student=(SELECT 姓名 FROM xs WHERE 借书证号= ‘131101’)

SELECT @student




用SELECT语句赋值,语法格式:



SELECT {@<局部变量名>=<值>} [,…n]




使用SELECT语句赋值时局部变量可以是出cursor、text、ntext、image外的任何类型变量。值可以是任何有效的SQL表达式,包含标量子查询。



【例】 使用SELECT给局部变量赋值。



DECLARE @var1 nvarchar(30)

SELECT @var1 =‘刘丰’

SELECT @var1 AS ‘NAME’




【例】 给局部变量赋空值。



DECLARE @var1 nvarchar(30)

SELECT @var1 = ‘刘丰’

SELECT @var1 =

(

SELECT 姓名

	FROM xs

	WHERE 借书证号= '131101'	

)

SELECT @var1 AS ‘NAME’




  (2)局部游标变量的定义与赋值  

  ① 局部游标变量的定义。语法格式:



DECLARE { @<游标变量名> CURSOR } [ ,…n]




  CURSOR表示表示该变量是游标变量。



  ② 局部游标变量的赋值。利用SET语句给一个游标变量赋值,有三种情况:



*   将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量;

*   将一个已申明的游标名赋给指定的局部游标变量;

*   申明一个游标,同时将其赋给指定的局部游标变量。



  ③ 游标变量的使用步骤  

  定义游标变量→给游标变量赋值→打开游标→利用游标读取行(记录)→使用结束后关闭游标→删除游标的引用。



【例】 使用游标变量



DECLARE @CursorVar CURSOR /定义游标变量/

SET @CursorVar = CURSOR SCROLL DYNAMIC /给游标变量赋值/

FOR

SELECT 借书证号, 姓名

	FROM xs

	WHERE 借书证号 LIKE '20%'

OPEN @CursorVar /打开游标/

FETCH NEXT FROM @CursorVar

WHILE @@FETCH_STATUS = 0

BEGIN

	FETCH NEXT FROM @CursorVar          	/*通过游标读行记录*/

END

CLOSE @CursorVar

DEALLOCATE @CursorVar /删除对游标的引用/




  (3)表数据类型变量的定义与赋值  

  语法格式:



DECLARE

{ @table_variable_name [AS] TABLE ( { <column_definition> | <table_constraint> } [ ,… ] ) }




  【例】 声明一个表数据类型变量并向变量中插入数据。



DECLARE @var_table

AS TABLE

	(

		num char(8) NOT NULL PRIMARY KEY,

		name char(8) NOT NULL,

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
*

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-G4igd9Pu-1715041545825)]

[外链图片转存中…(img-Kd8M6Kje-1715041545825)]

[外链图片转存中…(img-KnI7wibz-1715041545826)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值