SQL Server
Microsoft SQL Server学习笔记。
大桔骑士v
微软程序员,B站账号:大桔骑士v
展开
-
【SQL Server学习笔记】23:部分可编程对象
变量声明一个变量,则它可以在声明它的同一批处理语句中引用,因为SQL Server会将批处理中的语句编译成为单个可执行单元。DECLARE @i AS INT;SET @i=10;在SQL Server 2008以后,还可以直接这样写:DECLARE @i AS INT=10;可以用标量表达式的结果赋值给符合数据类型的变量,这是很自然的。USE MyDB;DECLARE @s_name AS N原创 2017-10-15 15:37:17 · 488 阅读 · 0 评论 -
【SQL Server学习笔记】22:集合运算/多集运算(含ALL替代方案)
说是集合运算,实际上可能不是真正意义上的集合,因为查询结果可能包含重复的记录,所以可能不满足集合的元素互异性,但还是使用这样的称呼吧!基本格式输入的查询1<集合运算>输入的查询2[ORDER BY子句]可以看到是对两个查询的结果集,用中间的集合运算来判断每一行是否要包含在运算结果里,并可以用最后的ORDER BY子句对结果集进行排序。注意,集合(虽然这里是多集,没有互异性)是有无序性的,所以两原创 2017-10-15 10:11:33 · 1152 阅读 · 0 评论 -
【SQL Server学习笔记】21:四种表表达式的基本使用
表表达式通过模块化的方式简化问题的解决方案,好处体现在逻辑上而不是性能上。派生表在外部查询的FROM子句中定义,存在范围仅为定义它的外部查询。USE MyDB;SELECT *FROM( SELECT num,firstname FROM dbo.ok WHERE num>72 ) AS nu_fi;分配列别名因为不能在逻辑处理顺序先于SELECT子句的其它查询子句原创 2017-10-14 10:38:42 · 1590 阅读 · 0 评论 -
【SQL Server学习笔记】20:JOIN运算符与其三种联结查询
交叉联结就是对两个表做笛卡尔积,也就是一个表中每一行都要和另一个表中每一行结合在一起成为新的行。内联结先做笛卡尔积,然后用用户指定的谓词进行过滤。外联结首先对两个表先作内联结(笛卡尔积->过滤),然后对于保留表中按照ON条件在另一个表中完全匹配不到行的那些保留表中的行,强制追加一个行,但这些追加行毕竟没有匹配,所以行中来自另一表中的那些列被置为NULL。原创 2017-10-06 18:08:42 · 786 阅读 · 0 评论 -
【SQL Server学习笔记】19:对日期和时间数据的处理
数据类型 在SQL Server 2008以前只有前两种类型,另外后三种括号里的数字表示精度(默认是最大的7)。这些数据类型的推荐格式也不同: datetimeoffset最后那部分表示时区。字符串文字如执行:USE MyDB;SELECT *FROM dbo.TimeTestWHERE MyD='20171006'; 在作这样的比较时,实际是把字符串转换成了对应的数据类型再做比较的原创 2017-10-05 09:27:18 · 1668 阅读 · 0 评论 -
【SQL Server学习笔记】18:对字符数据的处理
数据类型字符串常量用单引号括起来,表示Unicode时前面要加一个N。 按类型分 普通字符(单字节):CHAR、VARCHAR Unicode字符(双字节):NCHAR、NVARCHAR 按是否变长分 固定长度:CHAR、NCHAR (对于固定长度的,定义是多长就会留出多长的空间) 可变长度:VARCHAR、NVARCHAR (对于变长的,按字符串实际长度保存数据,外加两个额外字节保原创 2017-10-04 14:08:34 · 850 阅读 · 0 评论 -
【SQL Server学习笔记】17:CASE表达式和T-SQL的NULL
前面学了SQL支持的三值谓词有TRUE、FALSE和UNKNOWN。前两者很好理解,在不同的语境下,SQL对UNKNOWN的处理不同。SQL对查询过滤器的条件的处理是"接受TRUE"(也就是拒绝FALSE和UNKNOWN),对CHECK约束的条件的处理是"拒绝FALSE"(也就是接受TRUE和UNKNOWN)。对UNKNOWN取反的结果仍然是UNKNOWN。对NULL值进行比较的表达式结果是UNKNOWN,这是最普原创 2017-10-03 21:45:31 · 699 阅读 · 0 评论 -
【SQL Server学习笔记】16:谓词和运算符
谓词在前面学的查询过滤器(WHERE和HAVING)以及CHECK约束中都可以指定逻辑表达式,谓词是取值为TRUE或FALSE或UNKNOWN的表达式,它和运算符一起构成了逻辑表达式。[1]IN用于检查一个值是否存在一个集合中:USE MyDB;SELECT myid,Pid,salaryFROM dbo.okWHERE myid IN(1011,1022,1033); --使用查询过滤器WH原创 2017-10-03 18:51:23 · 1171 阅读 · 0 评论 -
【SQL Server学习笔记】15:再谈SELECT语句的元素
逻辑处理顺序: - FROM - WHERE - GROUP BY - HAVING - SELECT - OVER - DISTINCT - TOP - ORDER BY原创 2017-10-03 09:59:10 · 1036 阅读 · 0 评论 -
【SQL Server学习笔记】14:三值谓词,范式,主键/唯一/外键/检查/默认约束
找到一本不错的书《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》,读它来学感觉流程更规范。四值谓词和SQL支持的三值谓词四值谓词:真、假、缺少且仍可用、缺少且不可用。在SQL中实现了三值的谓词逻辑,即TRUE、FALSE、UNKNOWN(用NULL值表示缺少值的概念)。范式范式是关系模型的规范化规则,以确保每个实体只由一个关系来表示。第一范式(1NF):...原创 2017-10-02 19:06:56 · 967 阅读 · 0 评论 -
【SQL Server学习笔记】13:用SQL做分离DB、附加DB、架构、分区表
分离数据库表示将数据库从SQL Server实例中去除,但不是物理性的删除。 使用的是sp_detach_db系统存储过程。sp_detach_db '数据库名','是否跳过更新统计信息'例如:sp_detach_db 'MyNewDB','true'附加数据库表示将分离的数据库重新附加到DBMS中。在这之前,应该确保全部数据文件和日志文件在合适的位置。 例如添加刚刚分离的数据库MyNewDB:原创 2017-09-17 12:22:13 · 1319 阅读 · 0 评论 -
【SQL Server学习笔记】12:用SQL创建和扩大数据库空间
创建只有一个文件组的数据库name逻辑文件名,filename物理文件名,size初始大小,maxsize最大值,filegrowth增长量。后面这三个量默认单位都是MB。create database MyNewDBon (name=Lzh_dat1, filename='E:\Source Program\CreatTest\Lzh_dat1.mdf', size=10原创 2017-09-12 00:29:02 · 4397 阅读 · 1 评论 -
【SQL Server学习笔记】11:视图和公用表表达式
视图视图是基于结果集的可视化的表,用于简化查询,对视图的操作不会影响到数据库本身。 ①创建视图CREATE VIEW 视图名 ASSELECT 列名表FROM 源表名例如:create view MyView asselect Cno,CName,Credit from Course可以看到在视图中多了一个文件: 查看一下: ②删除视图DROP VIEW 视图名删除后可以刷新对象资原创 2017-09-08 21:34:16 · 1017 阅读 · 0 评论 -
【SQL Server学习笔记】10:SELECT中开窗函数与OVER子句
一组行称为一个窗口,开窗函数是可以用于分区计算的函数,分为聚合函数和排名函数,分别可以放在OVER子句前以对组内的数据进行编号和运算。 本节包括:[1]聚合函数与OVER子句(聚合函数是对一组值执行计算并返回单一的值的函数,如SUM、AVG、MIN、MAX),[2]排名函数与OVER子句(排名函数是为分区中的每一行返回一个排名值的函数,如RANK、DENSE_RANK、NTILE、ROW_NUMBER)原创 2017-09-08 15:13:52 · 3730 阅读 · 1 评论 -
【SQL Server学习笔记】9:有关SELECT子查询
SELECT子查询就是嵌套在SELECT、INSERT、UPDATE或DELETE语句中的SELECT语句(并且可以带有其它子句),也叫内层查询。本节包括:[1]集合测试,[2]比较测试,[3]存在性测试,[4]替代表达式的子查询,[5]有关派生表原创 2017-09-08 11:25:44 · 1553 阅读 · 1 评论 -
【SQL Server学习笔记】8:T-SQL部分基本语法
找到一个可以快速学习SQL语法的网站(W3school SQL教程),从这上面学习一些基本语法,再来看考试书。本节包括:WHERE子句,AND & OR运算符,SQL通配符,IN操作符,BETWEEN操作符,别名Alias,JOIN根据列间关系访问多表(内连接/左连接/右连接/全连接),UNION合并行集合原创 2017-09-07 18:47:19 · 717 阅读 · 0 评论 -
【SQL Server学习笔记】7:SELECT数据查询功能的常见扩展
SELECT语句属于SQL中的DQL,用于从表中选取数据,并生成结果集。本节包括:使用DISTINCT关键字返回不同的值,使用ORDER BY子句对结果集排序,使用TOP关键字取结果集前几行,使用CASE函数按需分类,使用INTO子句将SELECT结果创建并保存在新表中。原创 2017-09-07 14:47:04 · 6502 阅读 · 0 评论 -
【SQL Server学习笔记】6:更新/删除/导出/导入数据
[1]UPDATE语句更新数据行UPDATE 表名 SET 列名=更新值,列名=更新值,...... [WHERE 更新条件]当不加WHERE条件时表示操作所有列:update newTab set SEmail='sb@sb.com' 加入WHERE条件时:update newTab set SEmail='666@666.com' where SName='刘知' 不加WHERE条件的UPD原创 2017-09-07 12:07:18 · 1523 阅读 · 2 评论 -
【SQL Server学习笔记】5:使用INSERT语句插入数据
使用SQL语句的意义是,要开发的DBAS应用程序不能像人一样通过SSMS工具来操作数据,SQL语句是应用程序和数据库通信的桥梁。而且相比手动图形化操作,SQL语句更加方便和强大。SQL(结构化查询语言)的组成①DML(数据操作语言) 插入、删除和修改数据库中的数据INSERT、UPDATE、DELETE等②DCL(数据控制语言) 用来控制存储许可,存取权限等GRANT、REVOKE等③DQL(数原创 2017-09-06 21:52:50 · 16715 阅读 · 0 评论 -
【SQL Server学习笔记】4:使用SSMS创建数据库表并完善表结构
数据表的完整性问题大多是由于设计不当引起的,创建表的时候就应当保证以后的录入是正确的,也就是错误的、不符合要求的数据应当不允许录入。要保证数据的完整性,就要实施完整性约束。本节学了:[1]四种完整性约束,[2]表中字段的常用数据类型,[3]主键约束,[4]默认值约束,[5]设置标识列,[6]外键约束,[7]检查约束,[8]创建数据库关系图,并用CHECK约束继续完善了这几张表原创 2017-09-06 18:03:20 · 18773 阅读 · 2 评论 -
【SQL Server学习笔记】3:建立用户数据库
学习SQL Server的基本用法(图形化操作),包括[1]新建一个用户数据库,[2]向用户数据库中添加数据库文件,[3]创建数据表,[4]向表中插入数据,[5]调整数据表,[6]删除数据表,[7]分离和附加数据库。原创 2017-09-06 10:39:30 · 8004 阅读 · 0 评论 -
【SQL Server学习笔记】2:在与SQL Server建立连接时出现与网络相关的或特定于实例的错误
在SSMS中无法正常登录,提示这样的错误: 还是打开SQL Server配置管理器,查看一下网络配置中的TCP/IP,保证有IP为127.0.0.1(或者自己电脑的ip地址)端口为1433并启用了,保证在IPALL里的TCP端口也是1433: 在SQL Server服务里看一下如果该启动的服务没有启动,按照上一节刚配置完的样子启动一下。(如果刚刚那步做了更改,那么这里的SQL Serve原创 2017-09-06 00:06:08 · 1166 阅读 · 2 评论 -
【SQL Server学习笔记】1:安装SQL Server 2008 R2
DBMS是数据库管理系统,用来建立、使用和维护数据库;DBAS是数据库应用系统,它是在DBMS支持下建立的计算机应用系统。 SQL(结构化查询语言)用于存取数据以及查询、更新和管理关系数据库系统,不同的DBMS用的SQL通常都是在标准的SQL上进行了扩展,如SQL Server中将之扩展为T-SQL,Oracle中将之扩展为PL/SQL。 在数据库应用开发中,需求分析和设计是放在最前面的,通常还原创 2017-09-05 18:47:41 · 1421 阅读 · 3 评论