呕心沥血三千字 《SQL server》《T-SQL》知识点梳理大全,超级详细!

连接条件关键字
and并且  or或者   not非

查询
select * from 表名 where 条件
添加
insert into 表名 values(值)
或 insert into 表名(列名)values(值)列和值一一对应
注意:不允许给标识列赋值
一次添加多列
或 insert 表名(列名)values(值),(值)
直接后面跟括号即可
修改
update 表名 set 列名='值' where 条件
注意值为要修改的值
删除
delete from 表名 where 条件
Truncate table 表名 清空表,会重置标识列(慎用)

使用order by 进行排序
语句 select * from 表名 order by 需要排序的列
可以排序多列,但前提是出现相同的值,才会进行第二组的排序

模糊查询 四个通配符(%,_,[值],[^值])
都需要配合like关键字使用
%匹配任意字符串使用
_匹配一个任意字符
[]括号中的任意一个字符
[^]不在括号中的任意一个字符

聚合函数
sum()求和
max()最大值
min()最小值
avg()平均分
count()个数

使用group by进行分组
select * from 表名 group by 列名
一般使用使用时会配合着聚合函数一起使用
例如
select sex,count(*) from 表名 group by sex
根据性别就行分组,并且显示人数

使用having进行筛选
select sex,count(*) from 表名 group by sex having count(*)>1(筛选调人数少于1个人的性别(排除人妖,哈哈哈))

看到这里依旧会发现我们的查询语言有很多分支,会有一个执行的先后顺序
Select * 
from 表名
Where 条件
Group by 列名
Having 聚合函数>60
Order by 聚合函数
先分组再筛选,最后进行排序

表连接
select  * from 表名 inner join 另一张表 on 表名.列名=另一张表.列名(博主写的比较通俗易懂,就将就将就吧)
注意:两张表连接时的列名的数据类型应该是一致的
内连接:两张表相关数据(inner join)
外连接:两张表的相关数据和另一张表的不相关数据(left join ,right join)左外连接和右外连接

(在实际工作中,很少会手动创建数据库和表,主要还是兼容性的问题,高版本可以兼容低版本,但低版本不能兼容高版本)
通过代码创建数据库和表
create database 数据库
on primary
(
   Name='名称'
   FileName='文件创建地址'
   Size=文件初始大小
   MaxSize=文件最大值
   FileGrowth=文件增长量
   注意:这个是数据文件
)
log on
(
   日志文件(和数据文件一样)
)
创建表
create table 表名
(
   列名  数据类型  约束
)
删除数据库和表(慎用,哈哈哈)
drop database 数据库名称
drop table 表名称
约束
check()检查约束
unique()唯一约束
primary key 主键约束
foreign key(列名) references 表名(列名)外键约束
identity 自增列
default 默认值

定义变量 declare关键值
可以同时定义多个变量
select和set为赋值
但set只能赋值一个,而select语句可以赋多个值
输出语句二个select 和print
显示不同,select以网格形式显示,而print以文本形式显示

数据类型转换
cast(表达式 as 数据类型)
convert(表达式,数据类型,参数)
可以去看看帮助文档选中按F1

begin-end语句相当于程序里的大括号
if-else 判断语句
while循环,注意循环条件和循环操作
case when then else end 判断分支语句相当于编程语句的switch语句
when 分数>60 then '良好' when 分数>80 then '优秀' else '该努力了' end
注意:要使用end进行结尾

使用子查询(比较运算符)
select * from 表名 where 分数>(select 分数 from 表名 where 条件)
子查询(in和not in)
select * from 表名 where 分数 in(select 分数 from 表名 where 条件)
not in 就是取反,很简单的子查询
大家肯定有点疑惑用比较运算符好还是in关键字好呢?
在特定的情况使用不同的子查询,很简单,子查询返回一个值使用比较运算符,多个值时使用in关键字
注意:子查询可以出现在sql语言的任何地点(可以看出子查询的强大能力)

使用exists关键字进行判断
博主理解吧,exists大部分是判断数据库是否存在或者是表是否存在
判断数据库是否存在语句
if exists(select * from sys.databases where name='数据库的名称')
这个当然也有not exists关键字也是取反

事务
事务:显示事务,隐式事务,自动提交事务
开始事务:begin transaction
提交事务:commit transaction
撤销事务(回滚):rollback transaction
平常会配合全局变量@@ERROR来进行配合使用,进行判断是否出错,如果出现错误将进行回滚,把执行的错误操作进行回滚,没有出错就提交保存

视图
create view 视图名称
as
查询语句
视图会把查询出来的信息放在一张新的表中(视图,便于理解),但在修改视图里的值时,表中的值也会进行修改
删除视图:drop view 视图名称
判断视图是否存在:if exists(select * from sys.objects where name='视图名称')

索引
注意:大大提高查询速度,重点适当使用,使用不恰当就会起到反作用,和填充因子有关系,可以去百度去看看,博主就不过多的解释了
create 索引类型 index 索引名称
on 表名(列名) with fillfactor=值
fillfactor表示填充因子
使用索引进行查询
select * from 表名 with(index=索引名称) where 条件
判断索引是否存在
if exists(select * from sys.indexes where name='索引名称')
删除索引
drop index 表名.索引名称
索引分为六大类型
唯一索引
主键索引
聚集索引
非聚集索引
复合索引
全文索引

下面是一些扩展
向表里添加一列
语法:alter table 表名 add 列名 数据类型
从数据库随机读取数据
select top 10 * from student order by newid()
获取数据库中所有的表名
SELECT * FROM SYSOBJECTS WHERE TYPE='U'
获取指定表的所有列名
SELECT * FROM Result WHERE ID=OBJECT_ID('TableName')
获取全部信息,1=1表示全部选择 1=2表示全部不选择
select * from student where 1=1
根据姓氏笔画进行排序
Select * From Student Order By StudentName Collate Chinese_PRC_Stroke_ci_as
清除名称两端空格
update Student set StudentName=TRIM(StudentName) 

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
当涉及到CAN总线的教程时,以下是一些重要的主题和步骤,希望能对你有所帮助: 1. 什么是CAN总线? CAN(Controller Area Network)总线是一种常见的实时通信协议,广泛应用于汽车、工业控制和其他领域。它允许多个节点在同一个总线上进行通信,具有高可靠性和高实时性。 2. CAN总线的基本组成 CAN总线由多个节点组成,其中包括一个或多个控制器和多个设备。控制器负责管理总线上的通信,而设备则是实际进行数据交换的节点。 3. CAN总线的通信方式 CAN总线使用一种基于事件的通信方式,即只有在节点有数据要发送时才会发送。这种方式称为事件驱动通信,可以最大程度地提高总线的利用率。 4. CAN总线的物理层 CAN总线的物理层(如电缆、传输速率等)需要根据具体应用来选择。通常使用双绞线作为传输介质,可选择不同的传输速率,例如CAN 2.0标准中的高速(1 Mbps)或低速(125 Kbps)。 5. CAN总线的帧格式 CAN总线使用帧来进行数据交换,包括标准帧和扩展帧。标准帧包含11位标识符,扩展帧则包含29位标识符。帧中还包含数据域、控制域和校验位等段。 6. CAN总线的错误检测和纠正 CAN总线具有强大的错误检测和纠正能力。每个节点在发送数据时都会对数据进行CRC校验,并在接收数据时验证CRC以检测错误。此外,CAN总线还具有冲突检测和错误恢复机制。 7. CAN总线的应用 CAN总线广泛应用于汽车领域,用于汽车电子系统中的各种控制单元之间的通信。它还被用于工业自动化、航空航天、医疗设备等领域。 这只是一个简要的概述,如果你对CAN总线感兴趣,可以进一步深入学习相关的资料和教程。希望这些信息能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值