SQL温习笔记【SQL Server】

embedded/2024/11/13 9:40:17/

SQL温习笔记【SQL Server】

  • 一些重要的DDL语句
  • select查询语句
  • insert插入语句
  • update更新语句
  • delete删除语句
  • join连接
  • 表约束constraints
  • 数据类型

一些重要的DDL语句

CREATE DATABASE 数据库名 - 创建新数据库
ALTER DATABASE 数据库名 - 修改数据库
CREATE TABLE 表名(列1 数据类型,列2 数据类型...) - 创建新表
ALTER TABLE - 变更数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

注:truncate、delete和drop都是删除,但有不同:
truncate:仅删除表内的数据,不删除表本身,且不激活触发器,删除不能回滚。
delete:仅删除表内的数据,不删除表本身,激活触发器,删除可回滚。
drop:表的结构、属性、索引都将被删除,且不激活触发器,删除不能回滚。

select查询语句

从表里选取列的值:SELECT 列名称 FROM 表名称
注:列名处用星号( * )则选取所有列,且SQL 语句对大小写不敏感

从表的列中选取唯一、不同的值:SELECT DISTINCT 列名称 FROM 表名称

根据条件选取值:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
注:SQL中,文本值用单引号,数值不用

sql">        运算符表
操作符	         描述
=		         等于
<>!=)		 不等于
>		         大于
<		         小于
>=		         大于等于
<=		         小于等于
BETWEEN		     在某个范围内
LIKE	         搜索某种模式

对结果集排序:order by (默认按升序 asc,降序用desc关键字)
示例:
先按列1的逆序(降序)排列,如列1有相同值则按列2升序再排:
select 列1,列2,列3 from 表名 order by 列1 desc, 列2 asc

选取头几条记录:SELECT TOP 数字|百分比数 列名 FROM 表名
示例:
选头50%的记录:SELECT TOP 50 PERCENT * FROM 表名

搜索列中有指定模式的记录:SELECT 列名 FROM 表名 WHERE 列名 LIKE 'pattern'
"%"用于定义通配符(模式中缺少的字母)
示例:
以N开头的模式:like 'N%'
以N结尾的模式:like '%N'
包含LON的模式:like '%LON%'

搜索不包含指定模式的记录:NOT LIKE

sql">                                通配符表
通配符(须与like一起用)	     描述                     示例
%	                         替代一个或多个字符
_	                         仅替代一个字符
[charlist]	                 字符列中的任何单一字符    '[ABC]%'以A或B或C开头的
[^charlist]或者[!charlist]   不在字符列中的任何单一字符     

在where子句中规定多个值:SELECT 列名 FROM 表名 WHERE 列名 IN (值1,值2,...)

选取介于两个值之间的数据范围:SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2
选取不介于两个值之间的数据范围:NOT BETWEEN
注:值可以是数值、文本或日期。不同的数据库对between…and的处理方式有差异,可能会列出值1、值2间但不包含值1、值2的数据,可能包含双边,也可能只包含单边

为表名指定别名:SELECT 列名 FROM 表名 AS 别名(简化SQL语句)
为列名指定别名:SELECT 列名 AS 别名 FROM 表名(改变列名的显示)

合并多个select语句的结果集:SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2
注:union操作符会选取不同的值。若表1、表2里有A值,则结果集只会选取表1的A。
如允许重复的值出现在结果集,则用SELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2
注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。结果集中的列名总是等于 第一个 SELECT 语句中的列名。

从当前数据库中的表选取数据插入新表中,常用于创建表的备份或者对记录进行存档(会创建新表):SELECT 列名 INTO 新表 FROM 旧表
向其他数据库中拷贝数据:SELECT 列名 INTO 新表 IN '数据库名.mdb' FROM 旧表

insert插入语句

插入新行:INSERT INTO 表名 VALUES (值1, 值2,....)

在指定列插入新一行数据:INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)

update更新语句

修改(更新)表中的数据:UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 某值

delete删除语句

删除行:DELETE FROM 表名 WHERE 列名 = 值

删除所有行的数据:DELETE FROM 表名DELETE * FROM 表名

join连接

inner join: 只查询匹配得上筛选结果的条件。
示例:select * from 表1 inner join 表2 on 条件

join:如果表中至少有一个匹配,则返回行。(效果等于 inner join 和 where)

left join:即使右表中没有匹配,也从左表返回所有的行。(=left outer join)

right join:即使左表中没有匹配,也从右表中返回所有的行。(=right outer join)

full join:返回左、右表所有的行,即使没有匹配。(=full outer join)

表约束constraints

可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。

约束列不接受NULL值:create table 表名(列名 数据类型 not null,...)

约束唯一标识数据库表中的每条记录:create table 表名(列名 数据类型 unique,...)
为多个列定义unique约束:create table 表名(列1...,列2..., constraint 约束名 unique()数据类型 unique,...)
为已有的列加unique约束:alter table 表名 add unique(列名)
为已有的多个列加unique约束:alter table 表名 add constraint 约束名 unique(列1,列2...)
撤销unique约束:alter table 表名 drop constraint 约束名

主键约束:唯一标识数据库表中的每条记录。主键列必须是唯一且不为空的值。每个表都应有且只能有一个主键。
创建表时创建主键约束:create table 表名(列名 数据类型 primary key,...)
为多个列定义主键约束:create table 表名(...,constraint 约束名 primary key(列1,列2,...))
为已存在的列创建主键约束:alter table 表名 add primary key(列名)
为已存在的多个列创建主键约束:alter table 表名 add constraint 约束名 primary key(列1,列2,...)

注:如果用 alter table语句添加主键,须把主键列声明为不含 NULL 值(在表首次创建时)。

数据类型

Character 字符串:

sql">数据类型	              描述	                                   存储
char(n)   	    固定长度的字符串。最多 8,000 个字符。	            n
varchar(n)	    可变长度的字符串。最多 8,000 个字符。	 
varchar(max)	可变长度的字符串。最多 1,073,741,824 个字符。	 
text	        可变长度的字符串。最多 2GB 字符数据。

Unicode 字符串:

sql">数据类型	              描述	
nchar(n)	    固定长度的 Unicode 数据。最多 4,000 个字符。	 
nvarchar(n)	    可变长度的 Unicode 数据。最多 4,000 个字符。	 
nvarchar(max)	可变长度的 Unicode 数据。最多 536,870,912 个字符。	 
ntext	        可变长度的 Unicode 数据。最多 2GB 字符数据。

Binary 类型:

sql">数据类型         	  描述	
bit	            允许 01NULL	 
binary(n)	    固定长度的二进制数据。最多 8,000 字节。	 
varbinary(n)	可变长度的二进制数据。最多 8,000 字节。	 
varbinary(max)	可变长度的二进制数据。最多 2GB 字节。	 
image	        可变长度的二进制数据。最多 2GB。

Number 类型:

sql">数据类型	              描述	                                         存储
tinyint	        允许从 0255 的所有数字。	                        1 字节smallint	    允许从 -32,76832,767 的所有数字。	2 字节int	            允许从 -2,147,483,6482,147,483,647 的所有数字。	4 字节bigint	        允许介于 -9,223,372,036,854,775,8089,223,372,036,854,775,807 之间的所有数字。	        8 字节decimal(p,s)	固定精度和比例的数字。允许从-10^38+110^38-1之间的数字。p参数指示可以存储的最大位数(小数点左侧和右侧)。  5-17p必须是138之间的值。默认是18。s参数指示小数点右侧     字节存储的最大位数。s必须是0到p之间的值。默认是 0numeric(p,s)    固定精度和比例的数字。允许从 -10^38 +110^38 -1 之间的数字。p参数指示可以存储的最大位数(小数点左侧     5-17和右侧)。p必须是138之间的值。默认是18。s参数指示     字节小数点右侧存储的最大位数。s必须是0到p之间的值。默认是 0。smallmoney	    介于-214,748.3648214,748.3647之间的货币数据。	    4 字节
money	        介于-922,337,203,685,477.5808922,337,203,685,477.5807 之间的货币数据。	        8 字节float(n)-1.79E+3081.79E+308的浮动精度数字数据。参数n指示该字段保存4字节还是8字节。float(24)保存4字节,而     48float(53) 保存 8 字节。n 的默认值是 53。	            字节real-3.40E+383.40E+38的浮动精度数字数据。	            4 字节

Date 类型:

sql">数据类型	              描述	                                        存储
datetime175311 日 到 99991231 日,       8 bytes精度为 3.33 毫秒。	datetime2	    从 175311 日 到 99991231 日,     6-8 bytes精度为 100 纳秒。	                                smalldatetime	从 190011 日 到 207966 日,         4 bytes精度为 1 分钟。	date000111 日 到 99991231 日。       3 bytes仅存储日期。time	        仅存储时间。精度为 100 纳秒。	                    3-5 bytesdatetimeoffset	与 datetime2 相同,外加时区偏移。	               8-10 bytestimestamp	    存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。	

其他数据类型:

sql">数据类型	              描述
sql_variant	      存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及timestamp。
uniqueidentifier  存储全局标识符 (GUID)。
xml	              存储 XML 格式化数据。最多 2GB。
cursor	          存储对用于数据库操作的指针的引用。
table	          存储结果集,供稍后处理。

http://www.ppmy.cn/embedded/31462.html

相关文章

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

Spring boot + dubbo 项目启动报错 ClassNotFoundException WebServerFactoryCustomizer

1 背景 代码和包依赖等信息没做任何修改&#xff0c;之前项目启动没问题的&#xff0c;有一天项目在测试环境突然启动报错 了&#xff0c;生产环境可以正常启动。报错信息如下所示。 Caused by: java.lang.ClassNotFoundException: org.springframework.boot.web.server.Web…

汇报进度26届cpp,目前来说之后的规划,暑假打算回家10天就留校沉淀了

汇报一下进度吧&#xff0c;26双非菜鸡&#xff0c;cpper. 但目前学了一些go &#xff0c;辅修吧&#xff0c;距离发的上个动态已经过去3个月了&#xff0c;真的觉得找实习时间来不及&#xff0c;现在leetcode 100多道题&#xff0c;前几天蓝桥杯整了个省二&#xff0c;把OS和…

020、Python+fastapi,第一个Python项目走向第20步:ubuntu 24.04 docker 安装mysql8、redis(一)

系列文章 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 docker安装起来比较方便&#xff0c;不影响系统整体&#xff0c;和前面虚拟环境有异曲同工之妙&#xff0c;今天把老笔记本T400拿出来装了个ubuntu24…

在Ubuntu上怎么卸载qemu-system-x86_64

2024年5月3日&#xff0c;周五晚上 要在Ubuntu上卸载QEMU&#xff0c;你可以使用以下命令&#xff1a; sudo apt remove qemu-system-x86这个命令将卸载QEMU系统模拟器&#xff08;x86架构&#xff09;。你也可以使用purge参数来彻底删除QEMU及其配置文件&#xff1a; sudo a…

helm安装 AWS Load Balancer Controller

1、创建AmazonEKSLoadBalancerControllerRole角色 亚马逊文档 创建文档 2&#xff09;、使用 eksctl 创建 IAM 角色 a、安装eksctl eksctl安装文档 使用以下命令下载并提取最新版本的 eksctl curl --silent --location "https://github.com/weaveworks/eksctl/releases/l…

np.concatenate在图像处理中的使用

np.concatenate在图像处理中的使用【单通道转换为多通道】 np.concatenate 是 NumPy 库中的一个函数&#xff0c;用于沿着指定轴将一系列数组连接起来。以下是对 np.concatenate 的使用示例&#xff1a; 单通道转换为3通道&#xff08;RGB&#xff09; import numpy as np# …

contentprovider一直报错,发现是android 的manifest中 provider 放在activity后面不行

在Android应用的AndroidManifest.xml文件中&#xff0c;所有的组件&#xff08;如activity、service、receiver和provider&#xff09;必须在该文件中按正确的顺序声明。在Android 8.0&#xff08;API 级别 26&#xff09;及更高版本中&#xff0c;如果provider组件放置在activ…