SQL Server特性

一、创建表

在sql server中使用create table来创建新表。

create table Customers(
id int primary key identity(1,1),
name varchar(5)
)

该表名为Customers其中包含了2个字段,分别为id(主键)以及name。

1、数据类型

整数类型:

tinyint(1字节,从 0 到 255)

smallint(2字节,从 -32,768 到 32,767)

int(四字节,从 -2,147,483,648 到 2,147,483,647)

bigint(八字节,从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)

浮点数类型:

float(单精度或双精度浮点数)

real(精确到 7 位小数的近似数值数据类型)

字符类型:

char(x)(固定存储,只能存储x个字符长度,最大长度为 8000 个字符)

varchar(x)(可变存储,可以存储0到x的字符长度,最大长度为 8000 个字符,如果x为max,那么可以存储2^31-1 个字符)

nchar(x)(固定长度的 Unicode 字符序列,最大长度为 4000 个字符)

nvarchar(x)(可变长度的 Unicode 字符序列,最大长度为 4000 个字符)

日期类型:

date(仅存储日期部分)

time(仅存储时间部分)

datetime(存储日期和时间部分)

datetime2(高精度的datetime)

二进制类型:

binary(x)(固定长度的二进制数据)

varbinary()(可变长度的二进制数据)

 如果数据中有中文字符、日文、韩文等多字节字符,建议存放数据类型为nvarchar,可以有效避免乱码。

二、定义函数

函数通常使用BEGIN...END块来定义函数体,使用CREATE FUNCTION创建函数。以力扣177题第n高的薪水举列子:

表: Employee

+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+
在 SQL 中,id 是该表的主键。
该表的每一行都包含有关员工工资的信息。

查询 Employee 表中第 n 高的工资。如果没有第 n 个最高工资,查询结果应该为 null 。

定义了一个名getNthHighestSalary的函数,该函数接收一个int类型参数N并且返回一个int类型值,在BEGIN后开始我们的逻辑,RETURN具体要返回的值,以END标志结尾。

CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    RETURN (
		SELECT isnull((
			SELECT newsalary.salary 
			FROM (SELECT DENSE_RANK() OVER (ORDER BY salary DESC) AS DenseRank ,salary FROM Employee GROUP BY Salary) 
			AS newsalary WHERE newsalary.DenseRank=@N
		),null)
    );
END
GO

调用这个函数SELECT dbo.getNthHighestSalary(要传参的值);

扩展: 

DENSE_RANK()窗口函数

DENSE_RANK()函数为数据集中的每一行分配一个连续的排名,这些排名是基于指定的排序顺序进行计算的,会保留排名的连续性。也就是说,如果有两个或多个相同的值,它们会获得相同的排名,并且下一个不同值的排名会紧接着前一个排名的下一个整数,而不会跳过任何数字。

基本语法:DENSE_RANK() OVER (PARTITION BY [column] ORDER BY [column] [ASC|DESC])

ISNULL()函数

用于检查指定的表达式是否为NULL,并在表达式为NULL时返回一个指定的替代值。

基本语法:ISNULL(expression, replacement_value)

expression:要检查是否为NULL的表达式。

replacement_value:在expression为NULL时返回的替代值。

三、索引 

聚集索引

表中只能有一个,它决定了表中数据的物理存储顺序,在sql server中通常会默认依据主键创建一个聚集索引。

列如我们创建一个表cs,对其中的id字段不设置主键,那么我们对这个表创建完成之后,不会有默认的聚集索引。

create table cs(
id int
)

 1de547a2d9d04a9ab506414388622a72.png

但是如果我们对该表cs的id字段添加primary key设置为主键,那么在创建表的同时会默认根据id这个主键创建一个索引。

create table cs(
id int primary key
)

 eee5d0bcfeb649eabe591d77ff1962b8.png

查看该索引的属性,我们可以看到,是根据id字段进行创建的该索引。 

804a1880329844cc8ae5517c210de455.png

非聚集索引

聚集索引一张表中只能存在一个,而非聚集索引一张表可以存在多个,它与表中的数据分开存储,包含指向表中数据的指针。

列如创建一个school表,其中包含三个字段,现在我用name列创建一个名idx_school的非聚集索引,创建完成之后,我们对school表中的name字段进行查询。

--创建表school
create table school(
id int identity(1,1),--id
name varchar(5),--姓名
age int--年龄
)

--创建非聚集索引
CREATE NONCLUSTERED INDEX idx_school  
ON school(name);

--查询
select name from school

我们可以在执行计划中看到Index Scan,这表示我们成功使用了索引进行查询,使用的索引是[school].[idx_school]索引(就是school表下的idx_school索引),就是我们所创建的非聚集索引。

bb87fd7cebd04136b3383dbd5741a421.png

复合索引

由多个列组成的索引,根据列的顺序来决定查询速度的快慢,本质上也是非聚集索引。

同样使用非聚集索引的表,如果我们要使用非聚集索引查询年龄为多大的姓名,在使用idx_school索引时,是不会触发索引查询的。

select name from school where age=12

 我们在执行计划中可以看到Table Scan这表示为表扫描,对整张表[school]进行扫描查询。

3f5e07734beb4803950eeb940cdf3fd8.png

在这种情况下,我们就需要创建复合索引,创建完复合索引之后再执行相同的查询语句。

--创建复合索引
CREATE NONCLUSTERED INDEX idx_name_age
ON school (name ASC, age ASC);--ASC为升序,DESC为降序

--查询
select name from school where age=12

现在我们在执行计划中就看到Index Scan,使用的是[school].[idx_name_age]索引。 

0f6f2344a19c45aba6ddb0a7e699b422.png

删除索引:DROP INDEX 索引名 ON 表名

四、视图 

视图是一种虚拟的表,其内容由查询定义,本身不存储数据,而是根据查询结果动态生成数据,其每次查询视图时都会执行背后的SQL查询。

创建视图

对school表中的name和age字段创建一个名newschool的视图。

create view newschool as
select name,age from school

使用视图 

和查询普通表一样进行查询视图。

select * from newschool

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/769861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NAT地址转换实验,实验超简单

实验拓扑 实验目的 将内网区域&#xff08;灰色区域&#xff09;的地址转换为172.16.1.0 实验过程 配置静态NAT&#xff08;基于接口的静态NAT&#xff09; R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname R1 [R1]un in en I…

探索 Apache Paimon 在阿里智能引擎的应用场景

摘要&#xff1a;本文整理自Apache Yarn && Flink Contributor&#xff0c;阿里巴巴智能引擎事业部技术专家王伟骏&#xff08;鸿历&#xff09;老师在 5月16日 Streaming Lakehouse Meetup Online 上的分享。内容主要分为以下三个部分&#xff1a; 一、 阿里智能引擎…

流程表单设计器开源优势多 助力实现流程化!

实现流程化办公是很多职场企业的发展目标。应用什么样的软件可以实现这一目的&#xff1f;低代码技术平台、流程表单设计器开源的优势特点多&#xff0c;在推动企业降本增效、流程化办公的过程中作用明显&#xff0c;是理想的软件平台。那么&#xff0c;流程表单设计器开源的优…

VS开发QT程序图标修改

VS开发QT程序图标修改 1.双击打开UI界面 2.选择编辑资源 3.添加文件 4.选择ico文件 5.ok确定 6.点击保存 7.选择windowsIcon,倒三角图标 8.选择资源 9.选择图标&#xff0c;点击ok 10.保存 编译运行&#xff1a; 任务栏&#xff1a; 或者代码设置: 添加图标后&#xff0c;打…

Qt中文乱码如何解决

目录 一、使用建议 二、其它设置 一、使用建议 Qt对中文的支持不是很友好&#xff0c;使用QtCreator会出现各种乱七八糟的中文代码问题&#xff0c;如何处理这种问题&#xff1f; &#xff08;1&#xff09;粘贴别人的代码时&#xff0c;先在记事本里粘贴一遍&#xff0c;再…

应用于空气和液体抑菌的静态UVC LED抑菌模组-WH-UVC001-VO

WH-UVC001-VO是一款用于空气和液体抑菌的静态UVC LED抑菌模组。适用于带水箱、密闭的腔体结构。可安装于顶部、侧壁及底部&#xff0c;出光面符合IP65的防水要求&#xff0c;即使安装于水箱底部也不用担心漏水。 使用的UVC LED的波长范围为260-280nm&#xff0c;具有优良高效的…

线上网络课堂知识付费小程序源码系统 带的安装代码包以及搭建部署教程

系统概述 本系统是一款专为线上教育设计的全栈解决方案&#xff0c;集课程管理、用户管理、支付系统、互动交流于一体&#xff0c;旨在帮助内容创作者轻松搭建知识付费平台&#xff0c;实现内容变现。系统基于成熟的技术栈&#xff08;如Node.js、Vue.js等&#xff09;开发&am…

奥比中光astra_pro相机使用记录

一、信息获取 1、官网 用于了解产品信息 http://www.orbbec.com.cn/sys/37.html 2、开发者社区 咨询问题下载开发部https://developer.orbbec.com.cn/ 二 、windowvs19 1、相机型号 orbbec_astro_pro 根据对应的型号找到需要的包工具 踩坑1&#xff0c;因为这个相机型号…

OpenSSH远程代码执行漏洞风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了OpenSSH远程代码执行漏洞(CVE-2024-6387)。该漏洞发生在OpenSSH < 4.4p1 且未安装CVE-2006-5051/CVE-2008-4109补丁或8.5p1< OpenSSH < 9.8p1上。 目前厂商官方已针对相关漏洞进行…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 30 节&#xff09; P30《29.数据持久化-用户首选项》 实现数据持久化在harmonyOS中有很多种方式&#xff0c;比较常见的是以下两…

大模型剪枝概述

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;从而导致模型变得越来越大&#xff0c;因此&#xff0c;我们需要一些大模型压缩技术来降低模型部署的成本&#xff0c;并提升模型的推理性能。而大模型压缩主…

游戏推荐: 植物大战僵尸杂交版

下载地址网上一搜就有. 安装就能玩. 2是显血. 4显示植物血, 5是加速. 都是左手主键盘的按钮, 再按是取消. 比较刺激: ps: 设置里面还能打开自动收集阳光和金币.

无人机之运动状态篇

悬停 悬停状态是四旋无人机具有的一个显著特点。在悬停状态下&#xff0c;四个旋翼具有相等的转速&#xff0c;产生的上升合力正好与自身重力相等&#xff0c;并且因为旋翼转速大小相等&#xff0c;前后端转速方向相反&#xff0c;从而使得飞行器总扭矩为0&#xff0c;使得飞行…

【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算

原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…

如何在忘记密码的情况下删除华为ID激活锁

当您手中拥有最新的华为手机时&#xff0c;您会忍不住探索新的可能性&#xff0c;以从您的设备中获得最大价值。您可以下载新的应用程序、Android 启动器等&#xff0c;但这些应用程序中的大多数都会给您的手机带来错误和安全威胁&#xff0c;如果不恢复出厂设置&#xff0c;可…

阿里云 ECS 服务器的安全组设置

阿里云 ECS 服务器的安全组设置 缘由安全组多个安全组各司其职一些常见的IP段百度 IP 段华为云 IP 段搜狗蜘蛛 IP 段阿里云 IP 段 。。。 缘由 最近公司规模缩减&#xff0c;原有的托管在 IDC 机房的服务器&#xff0c;都被处理掉了&#xff0c;所有代码都迁移到了阿里云的云服…

DolphinScheduler部署安装or基础介绍(一)

DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用 DolphinScheduler核心架构 DolphinScheduler的主要角色如下&#xff1a; Ma…

迅狐多语言跨境电商系统源码-提供简单可定制解决方案

随着全球化的不断发展&#xff0c;跨境电商已经成为企业拓展市场、提升销售额的重要手段。然而&#xff0c;由于语言和文化差异&#xff0c;跨境电商经常面临着多语言支持的问题。为了解决这个问题&#xff0c;迅狐多语言跨境电商系统源码应运而生。 多语言跨境电商系统源码是一…

adb push 报错 ...error: failed to copy...

一、现象&#xff1a; 原因&#xff1a;没有权限导致的 二、解决方法&#xff1a; adb root adb remount #重新加载文件系统三、再次尝试&#xff1a;adb push xxx.apk /system/app 结果&#xff1a;成功

Qt Group与华为合作开发OpenHarmony版本,打造无缝跨设备操作系统

在华为开发者大会2024上&#xff0c;跨平台软件开发和质量保证工具的领先供应商 Qt Group&#xff08;Nasdaq, Helsinki: QTCOM&#xff09;荣幸地宣布成为OpenHarmony生态系统合作伙伴。这是继近几年华为采用Qt开发框架和自动化测试工具Squish的商业许可后&#xff0c;Qt Grou…