SQL Server基础指令(创建与检索)

news/2024/7/27 9:06:57/文章来源:https://blog.csdn.net/weixin_61908666/article/details/136518169

数据库demo

数据库RUNOOB

表Websites

元素:

创建

  1. 创建数据库 create database xxx

Create database school

  1. 创建数据表 create table xxx

create table student

  1. 数据表插入记录 insert into
  1. 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name

VALUES (value1,value2,value3,...);

  1. 第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)

VALUES (value1,value2,value3,...);

  1. 更新表中的记录 update

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;

  1. 删除表中的行 delete

DELETE FROM table_name

WHERE condition;

Deletedrop的区别:DELETE用于删除行级别的记录,而DROP用于删除表级别的对象。DELETE只会删除表中的特定记录,而DROP将删除整个表及其关联的数据和对象。

6、复制表 select into (从一个表复制信息到另一个表)

创建 Websites 的备份复件:

SELECT *

INTO WebsitesBackup2016

FROM Websites;

只复制一些列插入到新表中:

SELECT name, url

INTO WebsitesBackup2016

FROM Websites;

只复制中国的网站插入到新表中:

SELECT *

INTO WebsitesBackup2016

FROM Websites

WHERE country='CN';

复制多个表中的数据插入到新表中:

SELECT Websites.name, access_log.count, access_log.date

INTO WebsitesBackup2016

FROM Websites

LEFT JOIN access_log

ON Websites.id=access_log.site_id;

7、复制并插入表 insert select into (从一个表复制数据,然后把数据插入到一个已存在的表中)

复制 "apps" 中的数据插入到 "Websites" 中:

INSERT INTO Websites (name, country)

SELECT app_name, country FROM apps;

只复 id=1 的数据到 "Websites" 中:

INSERT INTO Websites (name, country)

SELECT app_name, country FROM apps

WHERE id=1;

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

  1. not null - 指示某列不能存储 NULL
  2. unique - 保证某列的每行必须有唯一的值。
  3. primary key ( NOT NULL 和 UNIQUE 的结合)。主键,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
    主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

  1. foreign key 外键。保证一个表中的数据匹配另一个表中的值的参照完整性。

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。

  1. check - 保证列中的值符合指定的条件。
  2. default - 规定没有给列赋值时的默认值。

9、新记录自动生成 identity(初始值,增幅)  (auto increment会在新记录插入表中时生成一个唯一的数字)

CREATE TABLE Persons

(ID int IDENTITY(1,1) PRIMARY KEY)

IDENTITY 的开始值是 1,每条新记录递增 1

10、创建索引 create index (在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据)

CREATE INDEX index_name

ON table_name (column_name)

11、撤销/删除 drop (撤销索引、撤销表以及撤销数据库)

  1. 删除索引

DROP INDEX table_name.index_name

  1. 删除表

drop table table_name

  1. 删除数据库

drop database database_name

  1. 如果我们仅仅需要删除表内的数据,但并不删除表本身,使TRUNCATE TABLE语句:

TRUNCATE TABLE table_name

12、修改表 alter (用于在已有的表中添加、删除或修改列)

如需在表中添加列,请使用下面的语法:

ALTER TABLE table_name

ADD column_name datatype

如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):

ALTER TABLE table_name

DROP COLUMN column_name

要改变表中列的数据类型,请使用下面的语法:

ALTER TABLE table_name

ALTER COLUMN column_name datatype

13、视图 view

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

14、日期 data

15、触发器 trigger

create trigger trigger_insert_score
on score 
after insert 
as 
begin
if not exists 
(select* from student where sno in   (select sno from inserted)
)
begin
rollback transaction
begin transaction
end
endcreate trigger trigger_delete_student
on student 
for delete
as
begin
delete from score 
where sno in(select sno from deleted) 
endcreate trigger trigger_protect_grade
on score 
for update
as
begin
rollback transaction
begin transaction
end

查询

1、元素不重复distinct

SELECT DISTINCT column1, column2, ...

FROM table_name;

2、元素过滤(选择) where

SELECT column1, column2, ...

FROM table_name

WHERE condition;

3、元素与和或条件 and & or

SELECT * FROM Websites

WHERE country='CN'

AND alexa > 50;

SELECT * FROM Websites

WHERE country='USA'

OR country='CN';

4、元素排序 order by(默认升序)

SELECT column1, column2, ...

FROM table_name

ORDER BY column1, column2, ... ASC|DESC;

ASC:表示按升序排序。

DESC:表示按降序排序。

5、规定要返回的记录的数目(返回前几条)top

SELECT TOP number|percent column_name(s)

FROM table_name;

number:表示返回前几个数

percent:表示返回前百分之几

6、搜索列中的指定模式 like

SELECT * FROM Websites

WHERE name LIKE 'G%';

7、通配符(与LIKE 操作符一起使用)

SQL 通配符 | 菜鸟教程 (runoob.com)

8、在where子句中规定多个值 in

SELECT * FROM Websites

WHERE name IN ('Google','菜鸟教程');

9、选取介于两个值之间的数据范围内的值 between

SELECT * FROM Websites

WHERE alexa BETWEEN 1 AND 20;

10、别名 as

SELECT column_name AS alias_name

FROM table_name;

11、连接 join(LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN)默认inner

SELECT column1, column2, ...

FROM table1

JOIN table2 ON condition;

11-1、内连接 inner joinINNER JOIN JOIN 是相同的。)

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name=table2.column_name;

11-2、左连接 left join (从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL)

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name=table2.column_name;

11-3、右连接 right join (从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL)

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name=table2.column_name;

11-4、满连接 full outer join (只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行)[结合了 LEFT JOIN RIGHT JOIN 的结果]

SELECT column_name(s)

FROM table1

FULL OUTER JOIN table2

ON table1.column_name=table2.column_name;

12、合并查询union (合并两个或多个 SELECT 语句的结果)

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2;    

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SELECT column_name(s) FROM table1

UNION ALL

SELECT column_name(s) FROM table2;

SQL Server 数据类型

String 类型:

数据类型

描述

存储

char(n)

固定长度的字符串。最多 8,000 个字符。

Defined width

varchar(n)

可变长度的字符串。最多 8,000 个字符。

2 bytes + number of chars

varchar(max)

可变长度的字符串。最多 1,073,741,824 个字符。

2 bytes + number of chars

text

可变长度的字符串。最多 2GB 文本数据。

4 bytes + number of chars

nchar

固定长度的 Unicode 字符串。最多 4,000 个字符。

Defined width x 2

nvarchar

可变长度的 Unicode 字符串。最多 4,000 个字符。

nvarchar(max)

可变长度的 Unicode 字符串。最多 536,870,912 个字符。

ntext

可变长度的 Unicode 字符串。最多 2GB 文本数据。

bit

允许 01 NULL

binary(n)

固定长度的二进制字符串。最多 8,000 字节。

varbinary

可变长度的二进制字符串。最多 8,000 字节。

varbinary(max)

可变长度的二进制字符串。最多 2GB。

image

可变长度的二进制字符串。最多 2GB

Number 类型:

数据类型

描述

存储

tinyint

允许从 0 255 的所有数字。

1 字节

smallint

允许介于 -32,768 与 32,767 的所有数字。

2 字节

int

允许介于 -2,147,483,648 2,147,483,647 的所有数字。

4 字节

bigint

允许介于 -9,223,372,036,854,775,808 与 9,223,372,036,854,775,807 之间的所有数字。

8 字节

decimal(p,s)

固定精度和比例的数字。

允许从 -10^38 +1 10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 38 之间的值。默认是 18

s 参数指示小数点右侧存储的最大位数。s 必须是 0 p 之间的值。默认是 0

5-17 字节

numeric(p,s)

固定精度和比例的数字。

允许从 -10^38 +1 到 10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

5-17 字节

smallmoney

介于 -214,748.3648 214,748.3647 之间的货币数据。

4 字节

money

介于 -922,337,203,685,477.5808 与 922,337,203,685,477.5807 之间的货币数据。

8 字节

float(n)

-1.79E + 308 1.79E + 308 的浮动精度数字数据。

n 参数指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53

4 8 字节

real

从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。

4 字节

Date 类型:

数据类型

描述

存储

datetime

1753 1 1 9999 12 31 日,精度为 3.33 毫秒。

8 字节

datetime2

从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。

6-8 字节

smalldatetime

1900 1 1 2079 6 6 日,精度为 1 分钟。

4 字节

date

仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。

3 bytes

time

仅存储时间。精度为 100 纳秒。

3-5 字节

datetimeoffset

与 datetime2 相同,外加时区偏移。

8-10 字节

timestamp

存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 值基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。

其他数据类型:

数据类型

描述

sql_variant

存储最多 8,000 字节不同数据类型的数据,除了 textntext 以及 timestamp

uniqueidentifier

存储全局唯一标识符 (GUID)。

xml

存储 XML 格式化数据。最多 2GB

cursor

存储对用于数据库操作的指针的引用。

table

存储结果集,供稍后处理。

SQL 函数


SQL 拥有很多可用于计数和计算的内建函数。


SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

  • AVG() - 返回平均值
  • COUNT() - 返回行数
  • FIRST() - 返回第一个记录的值
  • LAST() - 返回最后一个记录的值
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符,MySql 中使用
  • SubString(字段,1,end) - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式

特别说明函数:

1GROUP BY 语句(GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。)

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;          

2HAVING 子句 (在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。)

SELECT column1, aggregate_function(column2)

FROM table_name

GROUP BY column1 HAVING condition;

3EXISTS 运算符 (EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。)

SELECT column_name(s)

FROM table_name

WHERE EXISTS

(SELECT column_name FROM table_name WHERE condition);

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

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

相关文章

【算法训练营】:数字三角形,背包问题1,背包问题2(python实现)

数字三角形 时间限制&#xff1a;2 sec 空间限制&#xff1a;256 MB 问题描述 给定一个高度为 n 的“数字三角形”&#xff0c;其中第 i 行&#xff08;1<i<n&#xff09;有 i 个数。&#xff08;例子如下图所示&#xff09; 初始时&#xff0c;你站在“数字三角形”的顶…

卡哇伊龙猫404页面源码

卡哇伊龙猫404页面&#xff0c;具有动态下雨&#xff0c;龙猫微笑等动态特效 HTML单页源码&#xff0c;喜欢的朋友可以下载 下载地址 https://www.qqmu.com/2416.html

初次安装WordPress后如何进行网站设置(主题安装、插件安装、网站美化、网站备份、安全性提升、伪静态、多域名设置等)WordPress网站常见问题设置指南

专栏地址: WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么?为什么用它建站?怎么安装与部署? 使用腾讯云快速搭建WordPress网站流程详解 ...... 1. 前言 专栏上几篇文章介绍了小白零基础如何使用腾讯…

文件定时自动备份方法

备份文件&#xff1a;数据安全的坚实保障 在数字化时代&#xff0c;我们的生活和工作已经离不开电子文件。这些文件可能包含重要的工作资料、珍贵的个人照片、无法替代的创意作品等。然而&#xff0c;电脑硬盘的损坏、病毒的侵袭、甚至误操作都可能导致文件丢失&#xff0c;给…

【硬件工程师面经整理21_其它】

文章目录 1 为何电源的滤波电路常常是大电容配合小电容滤波2 小信号敏感信号是什么&#xff0c;如何保护敏感信号3 555定时器4 CMOS不用输入管脚该怎么处理。5 为什么一个标准的倒相器中 P 管的宽长比要比 N 管的宽长比大&#xff1f;6 S11和反射系数和插损的关系7 眼图的功能8…

44、网络编程/数据库相关操作练习20240306

一、代码实现数据库的创建&#xff08;员工信息表&#xff09;&#xff0c;并存储员工信息&#xff08;工号、姓名、薪资&#xff09;&#xff0c;能实现增加人员信息、删除人员信息、修改人员薪资操作。 代码&#xff1a; #include<myhead.h>int do_update(sqlite3 *p…

计算机网络|Socket

文章目录 Socket并发socket Socket Socket是一种工作在TCP/IP协议栈上的API。 端口用于区分不同应用&#xff0c;IP地址用于区分不同主机。 以下是某一个服务器的socket代码。 其中with是python中的一个语法糖&#xff0c;代表当代码块离开with时&#xff0c;自动对s进行销毁…

pinia报错does not provide an export named ‘hasInjectionContext

你们好&#xff0c;我是金金金。 场景 我这里是uniappvue3编写的一个小程序项目&#xff0c;在集成pinia过程当中遇到此问题&#xff0c;报错请求的模块 未提供 导出名hasInjectionContext&#xff08;位于 pinia.mjs:6:10&#xff09; 以下我项目当中vue和pinia的具体依赖版本…

学习vue3使用在线官方开发环境play.vuejs.org进行测试

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…

如何使用 CSS object-fit 进行图片的缩放和裁剪

简介 在处理图片时&#xff0c;你可能会遇到需要保持原始宽高比的情况。保持宽高比可以防止图片被拉伸或压缩而出现失真。解决这个问题的常见方法是使用 background-image CSS 属性。更现代的方法是使用 object-fit CSS 属性。 在本文中&#xff0c;你将探索 object-fit CSS …

Pytorch 复习总结 6

Pytorch 复习总结&#xff0c;仅供笔者使用&#xff0c;参考教材&#xff1a; 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为&#xff1a;Pytorch 计算机视觉。 本文先介绍了计算机视觉中两种常见的改进模型泛化性能的方法&#xff1a…

子矩阵的和 刷题笔记 {二维前缀和}

首先我们的目标是让 s[i][j]表示为其左方和上方形成的矩阵所有元素的和 加上s[i-1][j]和s[i][j-1]后 s[i-1][j-1]部分重复了所以减去 最后加上a[i][j]即可完成目标 s[i][j]s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; 然后看题目要求 要求x1,y1,x2,y2围成的小正方形内的元素和…

Vue中如何进行非父子组件通信?

当谈及Vue中非父子组件通信时&#xff0c;我们通常会考虑使用Event Bus或者Vuex来实现。以下是我为您准备的一些面试题内容和示例代码&#xff1a; 面试题&#xff1a;“Vue中如何进行非父子组件通信&#xff1f;” 在Vue中&#xff0c;父子组件之间的通信通常是通过props和e…

ChatGPT提问技巧——控制温度和TOP-P样本

ChatGPT提问技巧——控制温度和TOP-P样本 “控制温度和Top-P抽样”在自然语言处理中&#xff0c;控制温度是指通过调整生成文本的随机性和多样性&#xff0c;而Top-P抽样是一种生成文本的策略&#xff0c;它选择概率最高的前P个词作为候选词汇。这两个技术常用于生成文本的质量…

降低85%的gc发生率:ES的GC调优实践!

#大数据/ES #经验 #性能 问题背景 客户方面反馈的问题是ES入库速度变慢&#xff0c;延迟升高到几百毫秒&#xff0c;导致数据积压过多&#xff0c;影响了业务。 排查发现ES的服务日志出现不少的gc overhead现象&#xff0c;下面是一个示例的日志片段&#xff1a; [yyyy-MM-…

算法刷题day22:双指针

目录 引言概念一、牛的学术圈I二、最长连续不重复序列三、数组元素的目标和四、判断子序列五、日志统计六、统计子矩阵 引言 关于这个双指针算法&#xff0c;主要是用来处理枚举子区间的事&#xff0c;时间复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N) &#xf…

【机器学习】三要素——数据、模型、算法

机器学习三要素 数据模型模型是怎么得到的&#xff1f;算法 我 在学习过程中,对于“模型”和“算法”的概念不清晰&#xff0c;一直混淆&#xff0c;通过查阅了一些资料在此总结一下。 数据、模型与算法被称为机器学习的三要素&#xff0c;因为它们在机器学习中具有不可分割的作…

Jmeter高效组织接口自动化用例

1、善用“逻辑控制器”中的“简单控制器”。可以把简单控制器像文件夹一样使用&#xff0c;通过它来对用例进行分类归档&#xff0c;方便后续用例的调试和执行。 2、同编写测试用例一样&#xff0c;这里的接口测试用例应该进行唯一性编号&#xff0c;这样在运行整个用例计划出现…

【深度学习笔记】计算机视觉——FCN(全卷积网络

全卷积网络 sec_fcn 如 :numref:sec_semantic_segmentation中所介绍的那样&#xff0c;语义分割是对图像中的每个像素分类。 全卷积网络&#xff08;fully convolutional network&#xff0c;FCN&#xff09;采用卷积神经网络实现了从图像像素到像素类别的变换 :cite:Long.Sh…

「滚雪球学Java」:常用类(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…