SQLServer2005宝典学习笔记(数据操纵部分)
摘要:本文主要是我学习SQL2005宝典的笔记(只是第二部分),少许平时记录的知识点。主要内容:1、系统函数;2、几种联接;3、CTE公用表表达式;4、已有数据库结构的修改;5、数据库的备份与恢复;6、CSV文件加载数据和Excel复制数据;7、存储过程:加密与获
摘要:本文主要是我学习SQL2005宝典的笔记(只是第二部分),少许平时记录的知识点。主要内容:1、系统函数;2、几种联接;3、CTE公用表表达式;4、已有数据库结构的修改;5、数据库的备份与恢复;6、CSV文件加载数据和Excel复制数据;7、存储过程:加密与获得源码,存储过程返回数据;8、触发器的定义与应用;9、索引相关;10、 SQL通配符;11、SQL注入分析;12、其他:一些优化注意点,关键字Pivot ,between and 的注意点。
1、系统函数
每个数据库都可以查看系统函数的,只要有环境就可以,如下图是NorthWind数据库中查找系统函数的截图:
这里只介绍一些常见的函数:
1.0、Left和Right获得左边或右边的指定长度的字符串,语法:Left(string,count);
1.1、Rtrim和Ltrim去除字符串左边或右边的空格;
1.2、Upper和Lower将指定的字符串转换成大写(或小写);
1.3、Len求字符串的长度;
1.4、SubString,抽取指定位置开始的指定长度字符串,语法SubString(string,position,length);
1.5、CharIndex返回字符串中指定表达式的起始位置,例如:CharIndex ('a',id)表示id中’a’的位置;
1.6、Replace(source,search,replace)在字符串中将指定字符串换成另外一种字符串;
1.7、Cast/Convert类型转换,例如Cast (sales AS char(20)) ;Convert (char(20), sales) ;
1.8、str(number,length,decimal)将数字转换成字符串;
1.9、Stuff函数,格式化字符串,
例将123456789转换成123-45-6789;
Stuff(Stuff(‘123456789’,4,0,’-‘),7,0,’-‘),内层在第四个位置加上‘-’;
2、几种联接
2.1、form a,b ….与a inner join b等价;
2.2、Full join全外联接,查询所有数据,一般可用来查找所有问题数据;Cross join返回笛卡尔乘积记录集;
2.3、Union联合默认删除重复的行,所以无需再加distinct画蛇添足;
2.4、子查询类似于联接,使用联接从两个数据源取回数据后可以对其进行筛选和操纵。如果必须在联接前对数据进行操纵,应使用子查询;
3、CTE公用表表达式,CTE(Common Table Expression)
语法:With CTEName (parameters)
AS (Simple Subquery……)
Select ……From CTEName
注:在性能上子查询和CTE几乎没有什么区别。
4、已有数据库结构的修改
4.1、修改数据库名(运用系统存储过程sp_renamedb)
Use Test0113; exec sp_renamedb 'Test0113', 'new_name'
4.2、删除数据库
USE MASTER GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Test0113') DROP DATABASE [Test0113]
4.3、删除表
USE MASTER GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Test0113') DROP DATABASE [Test0113]
4.4、修改表
4.41、增加一列:
ALTER TABLE tableName ADD columnName columnType NULL ALTER TABLE tableName ADD columnName columnType NOT NULL DEFAULT colvalue
4.42、修改列的属性(列名除外);
--(注意语法,有一次忘了COLUMN,怎么也没查到错误) ALTER TABLE tableName ALTER COLUMN columnName columnType NULL
4.43、修改列名,索引名;
EXEC sp_rename ‘tableName.columnName’,’newColumnName’,’COLUMN’
4.44、删除有数据的一个表的其中一列
ALTER TABLE tableName DROP COLUMN columnName
5、数据库的备份与恢复
5.1、备份:
backup DataBase Test2011 to Disk='C:\Test.bak' With name='Test2011Back'
5.2、恢复数据库:
Use master; Restore Database Test2011 From Disk=’C:\Test2011Back.bak’
6、CSV文件加载数据和Excel复制数据
CREATE TABLE Test1220 ( TestID int primary key, TestContent char(10) ) BULK INSERT Test1220 FROM 'C:\Test.csv' WITH(FirstRow=1,FieldTerminator=',',RowTerminator='\n')
FirstRow表示从CSV的第几行开始读取,1表示从第一行开始读取,如果有标题则为2, RowTerminator表示分隔符的字符。
通过Excel将数据复制到表中(注意类型要对应,非空的一定要有值,一些约束也需符合)
7、存储过程:加密与获得源码,存储过程返回数据
7.1、加密存储过程源码
Create Procedure procName Encryption AS ……
7.2、获得存储过程的源码
Sp_helptext procName
7.3、存储过程返回值
7.31、方法一:
Create Procedure Test ( @para1 int , @outPara2 ) --调用时 Declare @returnValue int; Exec Test 1,@returnValue OutPut
7.32、方法二:return 关键字
注意对于每个返回的记录集SQL Server在默认的情况下都发送一条消息,指出返回了或者影响了多少行记录,经过测试,最多甚至降低17%的性能,所以在有返回值的存储过程AS后面加上 Set NoCount ON
8、触发器的定义与应用
8.1、触发器的定义
Create Trigger trigName on tableName After Upder /*insert,delete均可*/ AS ……
8.2、根据触发器的知识解决以前一个问题:
一个用户注册了之后,注册日期一经确定就不可以再改变。
写了一个类似的例子:
Create table Test1220( TestID int Primary Key, TestContent Char(10) Default ‘Hello’ ) Create Trigger trig on Test1220 After Update AS If Update(TestContent) RollBack
9、索引相关
9.1、创建主键为非聚焦索引
TestID int Primary Key NonClustcred
9.2、创建聚焦索引
Create Clustered index IxOrderID On OrderDetail(OrderID)
9.3、组合聚焦索引
Create Clustered index IxGuideName On Guide(LastName,FirstName);
9.4、创建非聚焦索引
Create NonClustered index IndexName On TableName(columnName)
9.5、创建唯一索引 Unique index
9.6对于预期将在Where,Order By ,Group By子句中的每列基于它创建一个单列索引;索引的选择性,当数据重复密度高时不适合使用索引。
9.7、索引优化
关于索引,通俗点的理解就是目录,查字典时如果没有目录就得将字典从前到后翻一遍查找所需的字。SQL查询数据库时也是一样,如果不用索引就得全表扫描。
运用索引优化过的分页语句:
--运用max和top实现查找第31-40的数据 --66万条数据,瞬间秒杀(环境SQL2000,测试时精度不高) SELECT top 10* FROM Orders WHERE OrderID> ( SELECT max(OrderID) FROM ( SELECT top 20 OrderID FROM Orders ORDER BY OrderID ASC )a ) ORDER BY OrderID ASC --相比之下,没有运用索引优化的方法: --运用top和not in实现 --66万条数据耗时3秒(环境SQL2000,测试时精度不高,但性能还是和前者有明显的差距) SELECT top 10* FROM Orders WHERE OrderID not in ( SELECT top 20 OrderID FROM Orders ) ORDER BY OrderID ASC
10、 SQL通配符
(1)%多个字符,例如Like ‘m%’
(2)_下划线,表示单个字符,例如Like ‘pingf_n’,注意有几个下划线就匹配几个字符
(3)[]匹配指定范围中的字符,例如Like ’[a-g]’
(4)[^]匹配不在指定范围内的字符,Like’[^m-t]’
注意:如果要匹配以F%15开头的,有两种解决方案,其一用[]将通配符括起来,Like’F[%]15%’,这是SQL Server特有的,其二前面加上自定义转义字符,Like’F&%15%’ escape ‘&’,这是一般通用的。
11、SQL注入分析
11.1、SQL注入分析
(1)恶意代码:123’;delete OrderDetail--
(2)使用 or 1=1 :例如123’ or 1=1
(3)绕开密码保护:
UserName: Jack’--注意左边是两个连接符,也就是SQL中注释符号
PassWord: Who Cases
11.2、防范注入攻击的一些方法
(1)采用存储过程
(2)检查参数是否包含语句结束符(例如分号,注释符等)
(3)避免动态SQL
(4)屏蔽出错信息。
12、其他
12.1、将数据列定义成not null,有利于简化查询,因为不需要检查值的null属性,有利于检索引擎做出判断;
12.2、SQL优化小结;
(1)表的字段设置要恰当,尽可能减少占用空间;
(2)避免对大容量的数据段做无谓的检索;
(3)合理使用索引,提高查询效率;
12.3、使用列序号来指定排序的列
Select ID,Name From Student Order By 1则按第1列ID排序。
12.4、between and 的注意点
Between A and B 是闭区间[A,B]
注意: between ‘07/01/01’ and ‘08/31/01’ 表示从07/01/01 00:00:00.000到08/31/01 00:00:00.000,这就遗漏了8月31日0点之后的数据,另外还要注意毫秒的精确度。
12.5关键字Pivot
http://msdn.microsoft.com/zh-cn/library/ms177410.aspx (官方资料)。
后记说明:写本文为了巩固所学知识,毕竟不是所有的知识都立即在工作中用到,我感到没用到的很容易忘,有些没有理解的没有写出,绝大多数内容都是源于SQLServer2005宝典的第二部分—使用Select操纵数据,如果冒犯了本书原作者或者翻译者的版权什么的请通知。Pivot部分资料点此下载(搜集的网上的Pivot资料,具体第一个作者是谁我也不知道,感觉找到的版本都一样,如果冒犯了原作者的版权什么的请通知)。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

小紅書筆記怎麼刪除?在小紅書APP中是可以編輯筆記的,多數的用戶不知道小紅書筆記如何的刪除,接下來就是小編為用戶帶來的小紅書筆記刪除方法圖文教程,有興趣的用戶快來一起看看吧!小紅書使用教學小紅書筆記怎麼刪除1、先打開小紅書APP進入到主頁面,選擇右下角【我】進入到專區;2、之後在我的專區,點擊下圖所示的筆記頁面,選擇要刪除的筆記;3、進入到筆記頁面,右上角【三個點】;4、最後下方會展開功能欄,點選【刪除】即可完成。

0.這篇文章乾了啥?提出了DepthFM:一個多功能且快速的最先進的生成式單目深度估計模型。除了傳統的深度估計任務外,DepthFM還展示了在深度修復等下游任務中的最先進能力。 DepthFM效率高,可以在少數推理步驟內合成深度圖。以下一起來閱讀這項工作~1.論文資訊標題:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

DDREASE是一種用於從檔案或區塊裝置(如硬碟、SSD、RAM磁碟、CD、DVD和USB儲存裝置)復原資料的工具。它將資料從一個區塊設備複製到另一個區塊設備,留下損壞的資料區塊,只移動好的資料區塊。 ddreasue是一種強大的恢復工具,完全自動化,因為它在恢復操作期間不需要任何干擾。此外,由於有了ddasue地圖文件,它可以隨時停止和恢復。 DDREASE的其他主要功能如下:它不會覆寫恢復的數據,但會在迭代恢復的情況下填補空白。但是,如果指示工具明確執行此操作,則可以將其截斷。將資料從多個檔案或區塊還原到單

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

作為一名小紅書的用戶,我們都曾經遇到過發布過的筆記突然不見了的情況,這無疑讓人感到困惑和擔憂。在這種情況下,我們該怎麼辦呢?本文將圍繞著「小紅書發布過的筆記不見了怎麼辦」這個主題,為你詳細解答。一、小紅書發布過的筆記不見了怎麼辦?首先,不要驚慌。如果你發現筆記不見了,保持冷靜是關鍵,不要慌張。這可能是由於平台系統故障或操作失誤引起的。檢查發布記錄很簡單。只要打開小紅書App,點擊“我”→“發布”→“所有發布”,就可以查看自己的發布記錄。在這裡,你可以輕鬆找到之前發布的筆記。 3.重新發布。如果找到了之

在iPhone上面臨滯後,緩慢的行動數據連線?通常,手機上蜂窩互聯網的強度取決於幾個因素,例如區域、蜂窩網絡類型、漫遊類型等。您可以採取一些措施來獲得更快、更可靠的蜂窩網路連線。修復1–強制重啟iPhone有時,強制重啟設備只會重置許多內容,包括蜂窩網路連線。步驟1–只需按一次音量調高鍵並放開即可。接下來,按降低音量鍵並再次釋放它。步驟2–過程的下一部分是按住右側的按鈕。讓iPhone完成重啟。啟用蜂窩數據並檢查網路速度。再次檢查修復2–更改資料模式雖然5G提供了更好的網路速度,但在訊號較弱

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

哭死啊,全球狂煉大模型,一網路的資料不夠用,根本不夠用。訓練模型搞得跟《飢餓遊戲》似的,全球AI研究者,都在苦惱怎麼才能餵飽這群資料大胃王。尤其在多模態任務中,這問題尤其突出。一籌莫展之際,來自人大系的初創團隊,用自家的新模型,率先在國內把「模型生成數據自己餵自己」變成了現實。而且還是理解側和生成側雙管齊下,兩側都能產生高品質、多模態的新數據,對模型本身進行數據反哺。模型是啥?中關村論壇上剛露面的多模態大模型Awaker1.0。團隊是誰?智子引擎。由人大高瓴人工智慧學院博士生高一鑷創立,高
