SQL Server 从入门到项目实践(超值版)读书笔记 02

第3章 SQL基础知识

3.1.认识SQL

3.1.1 SQL的标准

不知道说的是啥,一些名词也不知道读啥。
我就只记住了一点,SQL虽然有不同版本,但在各种数据库种使用,大致相同
比如:SELECT\UPDADE\DELETE\INSERT\WHERE

3.1.2 SQL的种类
SQL共分为四大种类:
(1) 数据查询语句(DQL):SELECT语句
(2) 数据操作语句(DML):INSERT\UPDATE\DELETE语句
(3) 数据定义语句(DDL):DROP\CREATE\ALTER语句
(4) 数据控制语句(DCL):GRANT\REVOKE\COMMIT\ROLLBACK语句

3.1.3 SQL的功能
一句话,SQL的主要功能是管理数据库。
通过插入、更新、删除、查询等功能语句,以单独或者组合的形式管理数据库

3.2.常量

常量也称为文字值或标量值,它是表示一个特定数据值的符号。
它的格式由它所表示的值的数据类型决定,根据数据类型不同,常量可分为数字常量、字符串常量、日期和时间常量以及符号常量。

3.2.1 数字常量
在SQL中,数字常量包括整数常量、小数常量以及浮点常量
(1) 整数常量在SQL中被写成普通的整型数字,而且全部为数字,它们不包含小数,但前面可以加上正负号,如:-3,4,0
(2) 小数常量由没有引号括起来并且包含小数点的数字字符串来表示,如:3.1415926
(3) 浮点常量使用科学记数法表示,如:0.34E-2
(4) 货币常量前缀冠以货币符号后跟数字字符串表示,如:¥238 $59.9
在使用数字常量的时候,以“-”开始表示其为负数,“+”或缺省表示其为正数。

3.2.2 字符串常量
用英文下的单引号括起来的一串文本/数字/符号,称为字符串。单引号可以嵌套使用,最外层的单引号定义了里面内容为字符串,里面的单引号就纯粹是一组单引号,如:‘Time’、‘123456’、‘它表达的是’你好’的意思!’

3.2.3 日期和时间常量
在SQL中,日期和时间常量使用特定的字符日期值来表示,并用单引号括起来,如:‘March 1,2025’,‘250301’,‘03/01/25’

3.2.4 符号常量
在SQL中,除了为用户提供数字常量、字符串常量、日期和时间常量外,还提供了一些特殊的符号常量,这些常量代表不同的常用数值,如:CURRENT_DATE(当前系统日期),CURRENT_TIME(当前系统时间)

3.3.变量

变量——
可以保存查询之后的结果,
可以在查询语句中使用变量,
也可以将变量中的值插入到数据表中,
在SQL中,变量的使用非常灵活方便,可以在任何语句中声明使用,根据其使用周期,可以分为:全局变量和局部变量

3.3.1 局部变量
由用户自定义的一个能够拥有特定数据类型的对象,其作为范围进限制在程序内部。
被引用时要在其名称前加上“@”标志,而且必须先用DECLARE命令声明后才可以使用。
如:DECLARE pearl(定义了一个名为“珍珠”的局部变量)

3.3.2 全局变量
由系统提供的内部使用的变量,无需用户自定义,其作用范围可以是任何程序中随时取用。
被引用时要在其名称前加上“@@”标志,并且只能调用,不能修改
在定义局部变量时,应注意避免与全部变量名称重复,以免程序错误

SQL Server中常用的全局变量
全局变量名称含义
@@connections返回SQL Server自上次启动以来尝试的连接数,无论连接是否成功
@@cpu_busy返回SQL Server自上次启动后的工作时间。其结果以CPU时间增量或“滴答数”表示,此值为所有CPU时间的累积,因此可能会超出实际占用的时间。乘以@@timeticks即可转换为微秒
@@cursor_rows返回连接上打开的上一个游标中的当前限定行的数目。为了提高性能,SQL Server可异步填充大型键集和静态游标。可调用@@cursor_rows以确定当其被调用时检索了游标符合条件的行数
@@datefirst针对会话,返回set datefirst的当前值
@@dbts返回当前数据库的当前timestamp数据类型的值。这一时间戳值在数据库中必须是唯一的
@@error返回执行的上一个Transact SQL语句的错误号
@@fetch_status返回针对连接当前打开的任何游标,发出的上一条游标Fetch语句的状态
@@identity返回插入到表的identity列的最后一个值
@@idle返回SQL Server自上次启动后的空闲时间。结果以CPU时间增量或“时钟周期”表示,并且是所有CPU的累积,因此该值可能超过实际经过的时间。乘以@@timeticks即可转换为微秒
@@io_busy返回自从SQL Server最近一次启动以来,SQL Server已经用于执行输入和输出操作的时间。结果以CPU时间增量或“时钟周期”表示,并且是所有CPU的累积,因此该值可能超过实际消耗的时间。乘以@@timeticks即可转换为微秒
@@langid返回当前使用的语言的本地语言标识符(ID)
@@language返回当前使用的语言的名称
@@lock_timeout返回当前会话的当前锁定超时设置(毫秒)
@@max_connections返回SQL Server实例允许同时进行的最大用户连接数。返回的数值不一定是当前配置的数值
@@max_precision按照服务器中的当前设置,返回decimal和numeric数据类型作用的精度级别,默认情况下,最大精度返回38
@@nestlevel返回对本地服务器上执行的当前存储过程的嵌套级别(初始值为0)
@@options返回有关当前SET选项的信息
@@pack_received返回SQL Server自上次启动后从网络读取的输入数据包数
@@pack_sent返回SQL Server自上次启动后写入网络的输入数据包数
@@packet_errors返回上次启动SQL Server后,在SQL Server链接上发生的网络数据包错误数
@@rowcount返回上一次语句影响的数据行的行数
@@procid返回SQL当前模块的对象标识符(ID)。SQL模块可以是存储过程、用户定义函数或触发器。不能在CLR模块或进程内数据访问接口中指定@@procid
@@servername返回运行SQL Server的本地服务器的名称
@@servicename返回SQL Server正在其下运行的注册表项的名称。若当前实例为默认实例,则@@servicename返回MSSQLSERVER;若当前实例是命名实例,则该函数返回该实例名称
@@spid返回当前用户进程的会话ID
@@textsize返回SET语句的textsize选项的当前值,它指定select语句返回的text或image数据类型的最大长度,其单位为字节
@@timeticks返回每隔时钟周期的微秒数
@@total_errors返回自上次启动SQL Server之后,SQL Server所遇到的磁盘写入错误数
@@total_read返回SQL Server自上次启动后,由SQL Server读取(非缓存读取)的磁盘的数目
@@total_write返回自上次启动SQL Server以来,SQL Server所执行的磁盘写入数
@@version返回当前安装的日期、版本和处理器类型
@@trancount返回当前连接的活动事务数
3.4.运算符

它们就是一些符号,能够执行算术,连接,赋值及比较。
在SQL Server中,运算符主要有六大类:

3.4.1 算术运算符
可以在两个数据类型的表达式上执行数学运算。SQL中的算术运算符有加“+”、减“-”、乘“*”、除“/”、余“%”五种。

运算符作用举例
+加法运算,也可对日期和时间类型的数据执行算术运算17+4=21
-减法运算17-4=13
*乘法运算17*4=68
/除法运算,返回商17/4=4
%求余运算,返回整余数17%4=1

3.4.2 比较运算符
可以比较两个表达式的大小,表达式可以是字符、数字或日期数据,其比较结果是布尔值。
除了text、ntext、image数据类型的表达式外,比较运算符可以用于所有表达式。

运算符读作含义
=加法运算,也可对日期和时间类型的数据执行算术运算17+4=21
>减法运算17-4=13
<乘法运算17*4=68
>=除法运算,返回商17/4=4
<=求余运算,返回整余数17%4=1
! =加法运算,也可对日期和时间类型的数据执行算术运算17+4=21
! >减法运算17-4=13
! <乘法运算17*4=68

3.4.3 逻辑运算符
逻辑运算符可以把多个逻辑表达式连接起来测试,以获得其真实情况,返回带有true、false或unknown值的Boolean数据类型。

运算符含义结果
all如果一组的比较都为truetrue
and如果两个布尔表达式都为truetrue
any如果一组的比较中,有任何一个为truetrue
between如果操作数在某个范围内true
exists如果子查询包含一些行true
in如果操作数等于表达式列表中的一个true
like如果操作数与一种模式相匹配true
not对任何其他布尔运算符的值取反----
or如果两个布尔表达式中的其中一个为truetrue
some如果在一组表达式中,有些为truetrue

3.4.4 连接运算符
加号(+)是字符串串联运算符,可以将两个或以上的字符串合并成一个字符串。

3.4.5 按位运算符
在两个表达式之间执行位操作

运算符含义
&位与
|位或
^位异或
~返回数字的非

3.4.6 运算符的优先级

级别运算符
1~(位非)
2*(乘)、/(除)、%(余)
3+(正)、-(负)、+(加)、-(减)、+(连接)、&(位与)、
4=、>、<、>=、<=、<>、!=、!>、!<
5not
6and
7all、any、between、in、like、or、some
8=(赋值)
3.5.通配符与注释符

通配符一般与like运算符一起使用,实现模糊查询。
注释符是对代码给出解释或者说明。

3.5.1 通配符
查询时,有时无法给出一个明确的查询条件,可以使用通配符来代替一个或多个字符。

通配符说明
%匹配任意长度的字符,甚至包括零字符
_匹配任意单个字符
[字符合集]匹配字符合集中的任何一个字符
[^] 或 [!]匹配不在括号中的任何字符

3.5.2 注释符
为执行语句标注上注释符,则该代码就不会参与程序的编译。
通常用于针对代码的说明性文字或对程序的调试。

3.5.2.1 单行注释
以两个连续的“–"短横线开始,作用于该行结束,如

create database demo --创建一个名为“demo”的数据库(针对代码的说明性文字)

create table Department
(
DepartmentID int primary key identity(1,1,
DepartmentName varchar(50) not null,
--DepartmentRemark char(500)  (屏蔽程序执行该行)
)

3.5.2.2 多行注释
以“/*”开始,并以“*/”结束,中间被包含的代码全部被程序屏蔽

create database demo 

create table Department
(
/*DepartmentID int primary key identity(1,1),
DepartmentName varchar(50) not null,*/
DepartmentRemark char(500) 
)

第4章 SQL语句的应用

4.1.数据定义语句

DDL负责数据结构定义与数据库对象定义,由create、alter、drop、rename四个语句组成。

4.1.1 创建数据库–create
create语句主要用于数据库对象的创建,凡是数据库、数据表、索引、函数、触发器等对象,都可以使用create语句来创建
如:创建一个名为demo的数据库

create database demo

又如:创建一张数据表,包括表的行和列,具体语法格式如下:

create table table_Name
(
    column_Name1 data_type(size),
    column_Name2 data_type(size),
    column_Name3 data_type(size)
)

• column_Name:列名
• data_type:规定该列的数据类型(字符型、整数型、日期型等)
• (size):设定该列的最大长度

创建一个名为persons的表,包含ID\Name\Address\City四列。SQL语句如下:

create table persons        --创建新表,表名persons
(
    ID int,                 --列名ID,整数类型
    Name varchar(20),       --列名Name,字符型,最长20个字符
    Address varchar(200),   --列名Address,字符型,最长200个字符
    City varchar (20)       --列名City,字符型,最长20个字符
)

除数据库与数据表外,在数据库中,还可以使用create语句创建其他对象
create index–创建数据表索引
create procedure–创建预存程序
create function–创建用户函数
create view–创建视图
create tringger–创建触发器

4.1.2 修改数据库–alter
alter语句主要用于修改数据库中的对象,相对于create语句来说,该语句不需要定义完整的数据对象参数,还可以依照要修改的幅度来决定使用的参数
如:需要在表中添加字段列,语法如下

alter table persons
add Birthday date           --向表persons里添加birthday字段,类型为日期类型
drop City                   --删除persons表中的City字段
alter column Birthday year  --更改persons表中,birthday字段类型为year
add age int not null        --向persons表里添加age字段,类型为整型,并且不允许为空

4.1.3 删除数据库–drop
通过drop语句,可以轻松地删除数据库中的索引、表、数据库,语法如下:

drop index index_name  --删除名为index_name的索引
drop table table_name  --删除名为table_name的表
drop database database_name --删除名为database_name的数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值