首页 > 数据库 >SQL 基础知识

SQL 基础知识

时间:2024-06-13 14:59:56浏览次数:32  
标签:语句 数据库 基础知识 SQL 服务器 Server 备份

                  **SQL 基础知识**

一、变量
1、变量分类:局部变量,全局变量
2、局部变量:局部变量以@开头,作用范围仅在程序内部。数据类型除(text,ntext,image)类型外的所有系统数据类型和用户自定义类型
如:decalre @testname char(10)
3、局部变量赋值:select 语句 ,set 语句
如:select @testname=1 或select @testname=b from a
set @testname=‘3’;
4、全部变量: 全部变量以@@开头,SQL Server 系统内部事先定义好的变量,不需用户参与定义,作用范围任何程序均可随时调用。通常存储一些SQL Server 的配置设定值和效能统计数据。
5、常用全局变量
@@CONNECTIONS:记录自最后一次服务器启动以来,所有针对这台服务器进行的连接次数,包括没有连接成功的尝试。
@@CPU_BUSY:记录自上次启动的工作时间,无论连接成功还是失败,以ms为单位的CPU工作时间。
@@CURSOR_ROWS:返回在本次服务器连接中,打开游标取出数据行的行数。
@@DBTS:返回当前数据库中timestamp数据类型的当前值
@@ERROR:返回执行上一条SQL语句所返回的错误代码。(0,成功,其他错误代码)在每一条语句执行后被清除并重置。
@@FETCH_STATUS:返回上一次使用游标FETCH操作所返回的状态值,且返回值为整型(0,成功,-1,失败或此行不在结果集中,-2,被提取的行不存在)
@@IDENTITY:返回最近一次插入的identity列的数值,返回值为numeric
@@IDLE:返回以ms为单位计算SQL Server 服务器自最近一次启动以来停顿状态的时间
@@IO_BUSY:返回以ms为单位计算SQL Server 服务器自最近一次启动以来输入和输出使用的时间
@@LOCK_TIMEOUT:当前对数据锁定的超时设置
@@PACK_RECEIVED:SQL Server服务器自最近一次启动以来从网络接收数据分组的总数
@@PACK_SENT:SQL Server服务器自最近一次启动以来从网络发送数据分组的总数
@@PROCID:当前存储过程的ID标识
@@REMSERVER:在登录记录中记载远程的SQL Server服务器名
@@ROWCOUNT :上一条SQL语句影响数据行的行数。所有不影响数据库数据的SQL语句,返回0.
@@SPID:当前服务器进行的ID标识
@@TOTAL_ERRORS:自服务器启动以来,遇到的读写错误的总数
@@TOTAL_READ:自服务器启动以来,读磁盘的次数
@@TOTAL_WRITE:自服务器启动以来,写磁盘的次数
@@TRANCOUNT:当前连接中,处于活动状态事务的总数
@@VERSION:当前SQL Server服务器安装日期,版本以及处理器的类型
二、运算符:
1、比较运算符:
!=(不等于),!<(不小于),!>(不大于)不是标准的ASNI运算符。
比较运算符的结果为布尔数据类型,值为:FALSE,TRUE,UNKNOWN.
不能将布尔数据类型指定为表列或变量的数据类型,也不能在结果集中返回布尔数据类型
2、逻辑运算符:
ALL:如果一个比较集中全部是TRUE,则值为TRUE(注意子查询必须返回一列值,以便进行逐一比较)
ANY:如果一个比较集中任何一个为TRUE,则值为TRUE(注意子查询必须返回一列值,以便进行逐一比较)
SOME:如果一个比较集中某些为TRUE,则值为TRUE.(注意子查询必须返回一列值,以便进行逐一比较)
NOT,AND ,OR 同时出现在一个表达式中,优先级NOT ,AND, OR
3、通配符(LIKE)
%:包含零个或更多字符的任意字符。
-(下划线):任意单个字符 如:k_ 可表示ka,kb,kc
[]:指定范围[a~f]或集合[abcdf]中的任意单个字符
[^]:不属于指定范围[a~f]或集合[abcdf]中的任意单个字符
三、流程控制
1、BEGIN …END :将多个SQL语句组合为一个逻辑块,必须成对使用,可以嵌套使用
2、IF IF ……ELSE:选择判断语句 ,程序块使用begin ……end包含(单条SQL,可以不加)。
3、CASE:实现多重选择的情况,
case express
when express then result
else result
END

case
when bool then result
else result
END
4、WHILE:条件为true时,循环执行SQL语句, 为FALSE,结束循环。如果一组SQL,使用begin……end,
5、CONTINUE,跳过CONTINUE命令之后的语句,回到循环开始。
6、BREAK,完全跳出循环,结束整体循环
7、RETURN:从查询或过程中无条件退出,位于RETURN之后的语句不会被执行
8、GOTO: 改变程序执行的流程,使程序跳到标识符指定的程序继续执行
goto 标识符
标识符需要在名字后加“:”
如: goto test
test: djdjlajfkdal
9、waitfor: 指定触发器,存储过程或事务执行的时间、时间间隔或事件;还可用来暂时停止程序的执行,直到锁设定的时间已过才继续往下执行。
waitfor delay|time 时间
delay:设定等待的时间,最多可大24小时
time :等待结束的时间
时间 :必须是datetime类型的数据,如"11:23:12",不能包含日期)
四、常用命令
1、DBCC:用于验证数据库完整性,查找错误和分析系统使用情况等
DBCC CHECKALLOC: 检查指定数据库的硬盘空间分配结构的一致性
如:dbcc checkalloc (‘db_test’)
DBCC SHOWCONTIG:显示指定表的数据和索引的碎片信息
如: decalre @id int ,@idindex int
set @Id=object_id(‘tb_course’)
select @idindex=index_id
from sys.indexes
where object_id=@id
and name=‘pk_tb_course’
DBCC SHOWCONTIG(@id,@idindex)
2、CHECKPOINT:检查当前工作的数据库中被更改过的数据页或日志页,并将这些数据从数据缓冲器中强制写入硬盘。
use db_test checkpoint 时间整数单位为秒(可省略,则自动调整检查持续事件)
3、DECLARE:声明一个或多个局部变量,游标变量,表变量
4、PRINT:向客户端返回一个用户自定义的信息,即下是一个字符串,局部变量,或全部变量的内容 PRINT @TEST|@@ERROE|‘FDJAKD’
5、RAISERROR:是一个用于生成错误消息的函数,它可以用来在存储过程、触发器或任何 T-SQL 脚本中引发自定义错误。这对于向调用者提供有关错误的详细信息或执行流程中的特定条件非常有用。
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,…n ] ] )
[ WITH option [ ,…n ] ]
msg_id:是存储在 sys.messages 中的用户定义错误消息的 ID。
msg_str:是用户定义的错误消息字符串。
severity:指定错误的严重性级别。
state:提供有关错误的额外信息,通常用于调试。
argument:替换 msg_str 或 sys.messages 消息中的占位符的参数。
option:控制消息的行为的选项,如 WITH NOWAIT、WITH SETERROR 等。

如:RAISERROR (‘Error occurred!’, – Message text.
16, – Severity.
1 – State.
) WITH NOWAIT, LOG(立即显示错误消息(不等待任何挂起的 I/O 操作完成),并将消息记录到 SQL Server 错误日志中);

如:假设你已经在 sys.messages 中添加了一个错误消息,其 ID 为 50001,消息文本为 ‘Error %d occurred in procedure %s.’。:
RAISERROR (50001, 16, 1, 123, ‘MyProcedure’)
生成错误消息 ‘Error 123 occurred in procedure MyProcedure.’

6、READTEXT:读取text,ntext,image 列中的值,从指定的位置读取指定的字符数
READTEXT { TABLE.COLUMN TEXT_PRT OFFSET SIZE }[HOLDLOCK]
如:
DECLARE @text_ptr varbinary(16)
SELECT @text_ptr = TEXTPTR(Resume) FROM Employees WHERE EmployeeID = 1

DECLARE @resume varchar(max)
SET @resume = (SELECT CONVERT(varchar(max), READTEXT(Employees.Resume, @text_ptr, 0, NULL)))
PRINT @resume

7、BACKUP:将数据库内容或其事务处理日志备份到存储介质上。
backup database databsename
to back_drive
[next-mirror-to]
[with differential]

  • 完整备份:使用BACKUP DATABASE命令,并指定数据库名称和备份目标位置。例如,BACKUP DATABASE AdventureWorks TO DISK='C:\AdventureWorks.BAK'
  • 差异备份:在完整备份之后,使用BACKUP DATABASE命令并添加WITH DIFFERENTIAL选项来捕获自上次完整备份以来所做的更改。例如,BACKUP DATABASE AdventureWorks TO DISK='C:\AdventureWorks.DIF' WITH DIFFERENTIAL
  • 文件备份和文件组备份:使用BACKUP DATABASE命令的FILEFILEGROUP选项来备份数据库中的特定文件或文件组。BACKUP DATABASE YourDatabaseName
    FILE = ‘YourFileLogicalName’
    TO DISK = ‘D:\Backups\YourDatabaseName_YourFileLogicalName.bak’
    WITH NOFORMAT, NOINIT, NAME = ‘YourDatabaseName_YourFileLogicalName_FullBackup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

BACKUP DATABASE YourDatabaseName
FILEGROUP = ‘YourFileGroupName’
TO DISK = ‘D:\Backups\YourDatabaseName_YourFileGroupName.bak’
WITH NOFORMAT, NOINIT, NAME = ‘YourDatabaseName_YourFileGroupName_FullBackup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

8、RESTORE:将数据库或其事务处理日志备份文件由存储介质还原到SQL SERVER系统

  • 基本格式
RESTORE DATABASE [数据库名]  
FROM DISK = '[备份文件路径]'  
[WITH 选项[, ...]]  
  • 常见选项
    • WITH MOVE:指定数据文件和日志文件的物理路径,以便在恢复时将它们移动到新的位置。
    • WITH REPLACE:如果目标数据库已存在,则替换它。
    • WITH NORECOVERY:使数据库处于无法访问的状态,以便可以进一步应用事务日志备份。
    • WITH STANDBY:在恢复过程中创建一个备用数据库,以便在恢复过程中仍然可以访问原始数据库。
    • WITH STATS:显示恢复操作的进度信息。

9、shutdown 立即停止SQL server执行
shutdown with nowait
有nowait参数时,立即终止所有的用户进程。并对每一个现行的事务发生一个回滚后,退出SQL
没有nowait:终止任何用户登录SQL SERVER ,等待未完成的SQL命令或存储过程执行功能完毕,在每个数据库中执行checkpoint命令,停止SQL server 执行

10、WRITETEXT:将一段长文本或二进制数据写入到指定的轻量级二进制形式的数据类型中,如text、ntext或image字段
DECLARE @TextPtr VARBINARY(16)
SELECT @TextPtr = TEXTPTR(MyTextColumn) FROM MyTable WHERE … – 获取有效的文本指针
WRITETEXT MyTable.MyTextColumn @TextPtr ‘这是要写入的数据’ – 写入数据

标签:语句,数据库,基础知识,SQL,服务器,Server,备份
From: https://blog.csdn.net/chenglin016/article/details/139509092

相关文章

  • [数据库] MYSQL之SQL查询(日期时间篇)
    CASE:查询当天/昨天数据#当天select*fromtablewhereto_days(时间字段)=to_days(now());#昨天select*fromtablewhereto_days(now())-to_days(时间字段名)<=1CASE:查询近N分钟/周/月/年的数据#近5分钟SELECT*FROMtableWHERE时间字段>=DATE_SU......
  • 数栈xAI:轻量化、专业化、模块化,四大功能革新 SQL 开发体验
    在这个数据如潮的时代,SQL已远远超越了简单的查询语言范畴,它已成为数据分析和决策制定的基石,成为撬动企业智慧决策的关键杠杆。SQL的编写和执行效率直接关系到数据处理的速度和分析结果的深度,对企业洞察市场动态、优化业务流程、提升决策质量起着至关重要的作用。如何在浩瀚的数......
  • mysql中group by 的用法解析
    1.groupby的常规用法groupby的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤。假设现有数据库表如下:表user_info,id主键,user_id唯一键CREATETABLE`user_info`(`id`INT(11)NOTNULLAUTO......
  • PostgreSQL的视图pg_views
    PostgreSQL的视图pg_viewspg_views是PostgreSQL中的一个系统视图,用于显示数据库中所有视图(views)的相关信息。视图是一个虚拟表,其内容由查询定义。通过查询pg_views视图,数据库管理员和开发人员可以查看当前数据库中定义的所有视图的信息。pg_views视图的主要列列名......
  • MySQL创建数据库和表的详细教程
    MySQL创建数据库和表的详细教程1.简介MySQL是一个流行的关系型数据库管理系统,它使用标准的SQL语言进行数据操作。在本文中,我们将详细介绍如何在MySQL中创建数据库和表,并通过实例代码演示整个过程。同时,我们还会分析一些常见问题并提供解决方案。2.安装MySQL首先,确保你......
  • MySQL从入门到高级 --- 15.优化 && 16.pymysql
    文章目录第十五章&&第十六章:15.优化15.1查询SQL执行效率15.2定位低效率执行SQL15.3explain分析执行计划-基本使用15.4explain分析执行计划-id15.5explain分析执行计划-select_type15.6explain分析执行计划-type15.7explain分析执行计划-其他指标字段15......
  • 快速上手 GreatSQL 8.0.32-25 with openEuler 24.03 LTS
    5月底,openEuler24.03LTS发布,详情戳:恭喜!openEuler24.03LTS版本发布:首个AI原生开源操作系统在诸多亮点特性中,有一条值得注意:集成GreatSQL数据库,适用于金融级应用场景,具有高可用、高性能、高兼容、高安全等特性。那么,本文就来介绍一下如何安装openEuler24.0......
  • MySQL MariaDB 安装
    MySQLMariaDB安装指南MariaDB是MySQL数据库管理系统的一个分支,旨在保持与MySQL兼容并添加更多的功能和改进。以下是如何在不同操作系统上安装MariaDB的详细步骤。在Linux上安装MariaDB1.在Ubuntu/Debian上安装MariaDB首先,更新你的软件包索引:sudoaptu......
  • 记录一次mysql从ibd文件恢复数据的过程
    mysql5.7版本中,一个表会对应两个文件,一个是.frm一个是.ibd如果是分区表,会有多个.ibd文件,并以格式tablename#P#partitionname.ibd格式命名8.x版本中,没有frm文件,只有ibd文件新建库新建表discard表空间ALTERTABLE$TABLE_NAMEDISCARDTABLESPACE;ALTERTABLE$TABLE_N......
  • mysql查询数据库大小
    我们可以使用MySQL命令来查看数据库的数据量大小。首先打开命令行终端,进入MySQL的安装目录,然后执行以下命令:mysql-uusername-p其中,username是你的MySQL用户名。执行命令后,会提示你输入密码。输入正确的密码后,你将进入MySQL命令行界面。接下来,选择你要查看的数据库。假设你想......