SQL Server 数据库基本知识点

时间:2024.4.13

SQL Server 数据库基本知识点

一、数据类型

二、     常用语句 (用到的数据库Northwind)

查询语句

简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 
表或视图、以及搜索条件等。例如,下面的语句查询Customers 表中公司名称为“Alfreds Futterkiste”的ContactName字段和Address字段。 
SELECT ContactName, Address
FROM Customers
WHERE CompanyName='Alfreds Futterkiste' 

(一) 选择列表 
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 

1、选择所有列 
例如,下面语句显示Customers表中所有列的数据: 
SELECT * 
FROM Customers

2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 
例如: 
SELECT ContactName, Address
FROM Customers

3、更改列标题 
在选择列表中,可重新指定列标题。定义格式为: 
列标题 as 列名 
列名 列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: 
SELECT ContactName  as 联系人名称, Address as地址
FROM Customers

4、删除重复行 
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 
为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 
SELECT DISTINCT(Country)
FROM Customers

5、限制返回的行数 
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 
表示一百分数,指定返回的行数等于总行数的百分之几。 
例如: 
SELECT TOP 2 * 
FROM Customers
SELECT TOP 20 PERCENT * 
FROM Customers

(二)FROM子句 
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 
所属的表或视图。例如在Orders和Customers表中同时存在CustomerID列,在查询两个表中的CustomerID时应 
使用下面语句格式加以限定: 
select * from Orders,Customers

where Orders.CustomerID =Customers.CustomerID
在FROM子句中可用以下两种格式为表或视图指定别名: 
表名 as 别名 
表名 别名 
select * from  Orders as a,Customers as b

where a.CustomerID =b.CustomerID

SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 
例如: 

select * from Customers where CustomerID in (select CustomerID from Orders where EmployeeID=4)

此例中,将SELECT返回的结果集合给予一别名CustomerID,然后再从中检索数据。 

(三) 使用WHERE子句设置查询条件 
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: 
select CustomerID from Orders where EmployeeID=4

WHERE子句可包括各种条件运算符: 
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!< 
范围运算符(表达式值是否在指定的范围):BETWEEN…AND… 
NOT BETWEEN…AND… 
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) 
NOT IN (项1,项2……) 
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE 
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL 
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR 
1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30 
2、列表运算符例:country IN ('Germany','China') 
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、 
varchar、text、ntext、datetime和smalldatetime等类型查询。 
可使用以下通配字符: 
百分号%:可匹配任意类型和长度的字符

插入语句

语法:Insert into 表(字段1,字段2,….字段n) values(值1,值2,….值n)

例如:Insert into Region(RegionID, RegionDescription)values(5,'Southern')

更新语句

语法:update 表 set 字段1 = 值1,字段2=值2,字段n=值n where 条件

如:

update Customers set ContactName='John',Address ='Avda. de la'  where CustomerID='ALFKI'

where 条件同查询语句

删除语句

语法:delete from 表 where 条件

如:

delete from Customers where CustomerID='ALFKI'

where 条件同查询语句

清空表:

truncate table 表 清空表中所有数据,表中如果有自增长字段,该字段在插入时会重新开始

注意:

由于更新语句与删除语句会更改表数据对公司业务主要表进行更新与删除操作时一定要先进行备份,然后进行操作

备份语句

select * into Customers20101019 from Customers
目标表(Customers20101019)不存在时会自动创建

三、       存储过程

优点:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量

4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

语法

CREATE PROC[ EDURE ] [ owner. ] procedure_name [ ; number ]

    [ { @parameter data_type }

        [ VARYING ] [ = default ] [ OUTPUT ]

    ] [ ,...n ]

[ WITH

    { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]

参数

owner

    拥有存储过程的用户 ID 的名称。owner 必须是当前用户的名称或当前用户所属的角色的名称。

procedure_name

    新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。

;number

    是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name 前后使用适当的定界符。

@parameter

    过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值,或者该值设置为等于另一个参数)。存储过程最多可以有 2.100 个参数。

使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。

data_type

    参数的数据类型。除 table 之外的其他所有数据类型均可以用作存储过程的参数。但是,cursor 数据类型只能用于 OUTPUT 参数。如果指定 cursor 数据类型,则还必须指定 VARYING 和 OUTPUT 关键字。对于可以是 cursor 数据类型的输出参数,没有最大数目的限制。

VARYING

    指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。

default

    参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。

OUTPUT

表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。

如:

CREATE PROCEDURE CustOrdersDetail @OrderID int

AS

SELECT ProductName,

    UnitPrice=ROUND(Od.UnitPrice, 2),

    Quantity,

    Discount=CONVERT(int, Discount * 100),

    ExtendedPrice=ROUND(CONVERT(money, Quantity * (1 - Discount) * Od.UnitPrice), 2)

FROM Products P, [Order Details] Od

WHERE Od.ProductID = P.ProductID and Od.OrderID = @OrderID

GO

四:游标:

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。

1.      声明游标

2.      打开游标

3.      读取游标数据

4.      关闭游标

5.      释放游标

常用于需要把多行的数据 进行拼接处理

如:

declare @ContactName varchar(50)

                     declare @AllContactName varchar(5000)

                     set @AllContactName =’’

                     DECLARE GetContactName_Cursor CURSOR

                     FOR select ContactName from Customers where CustomerId = 'ALFKI'

                     OPEN GetContactName_Cursor

                     FETCH NEXT FROM GetContactName_Cursor into @ContactName

                     WHILE @@FETCH_STATUS = 0

                     BEGIN

                            set @ AllContactName= AllContactName+@ContactName

                            print @ AllContactName

                           

                     FETCH NEXT FROM GetContactName_Cursor into @ContactName

                     END

                     CLOSE GetContactName_Cursor

                     DEALLOCATE GetContactName_Cursor

五:常用系统函数和变量:

       系统变量:

select @@ERROR     --返回最后执行的 Transact-SQL 语句的错误代码(integer)
select @@IDENTITY    --返回最后插入的标识值
Select USER_NAME()     --返回用户数据库用户名
select @@ERROR    --返回最后执行的 Transact-SQL 语句的错误代码
select @@CONNECTIONS   --返回自上次SQL启动以来连接或试图连接的次数。
select GETDATE() --当前时间
select @@CPU_BUSY/100   --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒
USE tempdb Select @@DBTS   --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDENTITY --返回最后插入的标识值
Select @@IDLE   --返回SQL自上次启动后闲置的时间,单位为毫秒
Select @@IO_BUSY    --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒
Select @@LANGID    --返回当前所使用语言的本地语言标识符(ID)。
Select @@LANGUAGE    --返回当前使用的语言名
Select @@LOCK_TIMEOUT   --当前会话的当前锁超时设置,单位为毫秒。
Select @@MAX_CONNECTIONS   --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值
EXEC sp_configure   --显示当前服务器的全局配置设置
Select @@MAX_PRECISION --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS   --返回当前 SET 选项的信息。
Select @@PACK_RECEIVED   --返回SQL自启动后从网络上读取的输入数据包数目。
Select @@PACK_SENT   --返回SQ自上次启动后写到网络上的输出数据包数目。
Select @@PACKET_ERRORS   --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。
Select @@SERVERNAME --返回运行SQL服务器名称。
Select @@SERVICENAME --返回SQL正在其下运行的注册表键名
Select @@TIMETICKS --返回SQL服务器一刻度的微秒数
Select @@TOTAL_ERRORS   --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。
Select @@TOTAL_READ   --返回 SQL服务器自启动后读取磁盘的次数。
Select @@TOTAL_WRITE   --返回SQL服务器自启动后写入磁盘的次数。
Select @@TRANCOUNT   --返回当前连接的活动事务数。
Select @@VERSION   --返回SQL服务器安装的日期、版本和处理器类型。

系统函数:

1.     字符转换函数

LOWER()和UPPER()
LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写

STR() 把数值型数据转换为字符型数据。

2.    去空格函数
LTRIM() 把字符串头部的空格去掉。
RTRIM() 把字符串尾部的空格去掉。

3.    取子串函数

left() 
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。

RIGHT() 
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。

SUBSTRING()
SUBSTRING (<expression>, <starting_ position>, length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。

4.     字符串比较函数

CHARINDEX()
返回字符串中某个指定的子串出现的开始位置。

PATINDEX()
返回字符串中某个指定的子串出现的开始位置。

5.    字符串操作函数

REPLACE()
返回被替换了指定子串的字符串。

SPACE()
返回一个有指定长度的空白字符串。

6.     数据类型转换函数

CAST()

CAST (<expression> AS <data_ type>[ length ])

CONVERT()

CONVERT (<data_ type>[ length ], <expression> [, style])


1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2)length用于指定数据的长度,缺省值为30。
3)把CHAR或VARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。
4)TEXT类型到CHAR或VARCHAR类型转换最多为8000个字符,即CHAR或VARCHAR数据类型是最大长度。
5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。
6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。
7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。
8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。
9)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。

7.     日期函数

DATEADD()
DATEADD (<datepart>, <number>, <date>)
返回指定日期date 加上指定的额外日期间隔number 产生的新日期。

DATEDIFF()
DATEDIFF (<datepart>, <date1>, <date2>)
返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

DATEPART()
DATEPART (<datepart>, <date>)
以整数值的形式返回日期的指定部分。此部分由datepart 来指定。
DATEPART (dd, date) 等同于DAY (date)
DATEPART (mm, date) 等同于MONTH (date)
DATEPART (yy, date) 等同于YEAR (date)

GETDATE()
以DATETIME 的缺省格式返回系统当前的日期和时间

更多相关推荐:
数据库知识点总结

二、名词解释1.数据冗余定义:同一数据存储在不同的数据文件中的现象。2.DBA数据库管理员3.事务(unit)。4.数据字典:数据库中所有对象及其关系的信息集合。5.数据独立性包括数据的物理独立性和逻辑独立性。…

数据库知识点总结

1、数据(Data)——是数据库中存储的基本对象;2、数据库(Database,简称DB)3、数据库数据具有永久存储、有组织、可共享三个基本特点。4、数据库管理系统(DatabaseManagementSyst…

数据库知识点总结

第一章绪论1.数据库系统概述(1)数据、数据库、数据库管理系统、数据库系统(2)数据管理技术的产生和发展(3)数据库系统的特点2.数据模型(1)两大类数据模型(2)数据模型的组成要素(3)概念模型(4)最常用的…

数据库知识点总结

第一章(1解决多用户,多个应用进程共享数据的需求计算机系统在引入数据库后的所构成的系(3描述和存储,具有较小的冗余度,据库中的同一模式可以有任意多个外模式,对于每一个外模式,都存在一个外模式/模式映像,它确定了…

数据库知识点总结

题型:选择,填空,简答,综合题:1.SQL语句2.会画ER图3.ER图与关系模式的转换4.视图的创建,更新,修改,删除5.关系代数表达式6.模式分解(第四章的P60-70页要好好看看,这里会出题,然后就是把P6…

access数据库知识点总结

SELECT查询包括条件项、内连接、分组汇总(含HAVING)、排序、简单子查询(不考EXISTS)及一些输出选项。数据库管理系统(DBMS)特点(1)数据结构化(2)数据共享性好、冗余度低、(3)数据独立性强…

数据库知识点总结

文件处理系统存在问题:数据的冗余和不一致,数据访问困难,数据孤立,完整性问题,原子性问题,并发访问异常,安全性问题数据库三级抽象物理层:最低层次的抽象,描述数据实际上是怎样存储的。逻辑层:比物理层层次稍高的抽象…

分布式数据库知识点整理

局部数据只提供本站点的局部应用所需要的数据全局数据虽然物理上存储在个站点上但是参与全局应用局部用户一个用户或一个应用如果只访问他注册的那个站点上的数据称为本地或局部用户或本地应用全局用户如果访问涉及两个或两个以...

数据结构知识点归纳

一数据结构的章节结构及重点构成数据结构学科的章节划分基本上为概论线性表栈和队列串多维数组和广义表树和二叉树图查找内排外排文件动态存储分配对于绝大多数的学校而言外排文件动态存储分配三章基本上是不考的在大多数高校的...

数据结构复习重点归纳

数据结构复习重点归纳适于清华严版教材一数据结构的章节结构及重点构成数据结构学科的章节划分基本上为概论线性表栈和队列串多维数组和广义表树和二叉树图查找内排外排文件动态存储分配对于绝大多数的学校而言外排文件动态存储...

数据结构复习重点归纳(适于清华严版教材)

数据结构复习重点归纳适于清华严版教材一数据结构的章节结构及重点构成数据结构学科的章节划分基本上为概论线性表栈和队列串多维数组和广义表树和二叉树图查找内排外排文件动态存储分配对于绝大多数的学校而言外排文件动态存储...

数据结构知识点总结

数据结构知识点总结1数据结构定义是数据的逻辑结构和存储结构及其操作2数据结构主要是增删改查排序等功能的实现3数据结构之间的关系有三种逻辑存储数据运算4数据结构的存储结构分为两种顺序和链式而常用的有顺序链式索引散...

数据库知识点总结(35篇)