1.什么是數(shù)據(jù)庫(kù)?
數(shù)據(jù)庫(kù)是組織形式的信息的集合,用于替換,更好地訪問(wèn),存儲(chǔ)和操縱。
也可以將其定義為表,架構(gòu),視圖和其他數(shù)據(jù)庫(kù)對(duì)象的集合。
數(shù)據(jù)倉(cāng)庫(kù)是指來(lái)自多個(gè)信息源的中央數(shù)據(jù)存儲(chǔ)庫(kù)。
這些數(shù)據(jù)經(jīng)過(guò)整合,轉(zhuǎn)換,可用于采礦和在線處理。
表是一種數(shù)據(jù)庫(kù)對(duì)象,用于以保留數(shù)據(jù)的列和行的形式將記錄存儲(chǔ)在并行中。
4.什么是數(shù)據(jù)庫(kù)中的細(xì)分?
數(shù)據(jù)庫(kù)表中的分區(qū)是分配用于在表中存儲(chǔ)特定記錄的空間。
記錄(也稱(chēng)為數(shù)據(jù)行)是表中相關(guān)數(shù)據(jù)的有序集合。
列是表中的垂直實(shí)體,包含與表中特定細(xì)分關(guān)聯(lián)的所有信息。
數(shù)據(jù)庫(kù)管理系統(tǒng)是程序的集合,使用戶(hù)能夠存儲(chǔ),檢索,更新和刪除數(shù)據(jù)庫(kù)中的信息。
DBMS有兩種類(lèi)型:
1.關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)
2.非關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)
RDBMS代表- [R elational d atabase中號(hào)anagement小號(hào)ystem。
RDBMS是基于關(guān)系模型的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。
可以使用結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)
Oracle,MySQL,Microsoft SQL Server,PostgreSQL,
Sybase,MongoDB,DB2和Microsoft Access等,
SQL概述:SQL代表結(jié)構(gòu)化查詢(xún)語(yǔ)言。它是美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)的標(biāo)準(zhǔn)。
它是用于訪問(wèn)和操作數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。
使用SQL,我們可以做的一些動(dòng)作是創(chuàng)建數(shù)據(jù)庫(kù),表,存儲(chǔ)過(guò)程(SP),
執(zhí)行查詢(xún),針對(duì)數(shù)據(jù)庫(kù)檢索,插入,更新,刪除數(shù)據(jù)。
SQL命令分為以下幾種類(lèi)型:
DDL –數(shù)據(jù)定義語(yǔ)言
DML –數(shù)據(jù)處理語(yǔ)言
DQL –數(shù)據(jù)查詢(xún)語(yǔ)言
DCL –數(shù)據(jù)控制語(yǔ)言
TCL –交易控制語(yǔ)言
DDL命令用于定義或更改數(shù)據(jù)庫(kù)的結(jié)構(gòu)。
CREATE:創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象
ALTER:更改現(xiàn)有的數(shù)據(jù)庫(kù)對(duì)象
DROP:刪除數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象
TRUNCATE:從表中刪除所有記錄,但不刪除其數(shù)據(jù)庫(kù)結(jié)構(gòu)
RENAME:重命名數(shù)據(jù)庫(kù)對(duì)象
DML命令用于管理數(shù)據(jù)庫(kù)中存在的數(shù)據(jù)。
SELECT:從數(shù)據(jù)庫(kù)中選擇特定數(shù)據(jù)
INSERT:將新記錄插入表中
UPDATE:更新現(xiàn)有記錄
DELETE:從表中刪除現(xiàn)有記錄
DCL命令用于創(chuàng)建角色,授予權(quán)限以及控制對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)。
GRANT:提供用戶(hù)訪問(wèn)權(quán)限
DENY:拒絕用戶(hù)權(quán)限
REVOKE:刪除用戶(hù)訪問(wèn)權(quán)限
TCL命令用于管理DML語(yǔ)句所做的更改。
COMMIT:將更改寫(xiě)入并存儲(chǔ)到數(shù)據(jù)庫(kù)
ROLLBACK:自上次提交以來(lái)還原數(shù)據(jù)庫(kù)
索引用于加快查詢(xún)的性能。它可以更快地從表中檢索數(shù)據(jù)。
可以在一個(gè)列或一組列上創(chuàng)建索引。
索引有三種類(lèi)型
1.唯一索引:唯一索引通過(guò)確保表中沒(méi)有兩行數(shù)據(jù)具有相同的鍵值來(lái)幫助維護(hù)數(shù)據(jù)完整性。定義主鍵時(shí),可以自動(dòng)應(yīng)用唯一索引。它確保索引鍵列中的值是唯一的。
2.聚集索引:聚集索引對(duì)表的物理順序進(jìn)行重新排序,并根據(jù)鍵值進(jìn)行搜索。每個(gè)表只有一個(gè)聚集索引。
3.非聚集索引:非聚集索引不會(huì)更改表的物理順序,并且會(huì)保持?jǐn)?shù)據(jù)的邏輯順序。每個(gè)表可以具有許多非聚集索引。
SQL中的聚集索引和非聚集索引之間的區(qū)別如下:
聚集索引:
用于從數(shù)據(jù)庫(kù)中輕松檢索數(shù)據(jù),并且速度更快。
一個(gè)表只能有一個(gè)聚集索引
它改變了記錄在數(shù)據(jù)庫(kù)中的存儲(chǔ)方式,因?yàn)樗ㄟ^(guò)設(shè)置為聚集索引的列對(duì)行進(jìn)行排序。
非聚集索引:
與聚集索引相比,它更慢。
一個(gè)表可以具有多個(gè)非聚集索引。
它不會(huì)改變其排序方式,但是會(huì)在一個(gè)表內(nèi)創(chuàng)建一個(gè)單獨(dú)的對(duì)象,該對(duì)象在搜索后指向原始表行。
視圖就像邏輯上存儲(chǔ)在數(shù)據(jù)庫(kù)中的表的子集。視圖是一個(gè)虛擬表。
它包含類(lèi)似于真實(shí)表的行和列。視圖中的字段是來(lái)自一個(gè)或多個(gè)實(shí)際表的字段。
視圖不包含自己的數(shù)據(jù)。它們用于限制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)或隱藏?cái)?shù)據(jù)復(fù)雜性。
視圖的一些優(yōu)點(diǎn)是
視圖不占空間
視圖用于簡(jiǎn)單地檢索需要經(jīng)常執(zhí)行的復(fù)雜查詢(xún)的結(jié)果。
視圖用于限制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)或隱藏?cái)?shù)據(jù)復(fù)雜性。
數(shù)據(jù)庫(kù)關(guān)系定義為數(shù)據(jù)庫(kù)中表之間的連接。有各種數(shù)據(jù)庫(kù)關(guān)系,即
1.一對(duì)一的關(guān)系
2.一對(duì)多的關(guān)系
3.多對(duì)一的關(guān)系
4.自指關(guān)系
數(shù)據(jù)庫(kù)查詢(xún)是從數(shù)據(jù)庫(kù)表或表組合中獲取數(shù)據(jù)或信息的請(qǐng)求。
數(shù)據(jù)庫(kù)查詢(xún)可以是選擇查詢(xún)或動(dòng)作查詢(xún)。
子查詢(xún)是另一個(gè)查詢(xún)中的SQL查詢(xún)。它是Select語(yǔ)句的子集,
其返回值用于過(guò)濾主查詢(xún)的條件。
子查詢(xún)有兩種類(lèi)型:
1.關(guān)聯(lián)的:在SQL數(shù)據(jù)庫(kù)查詢(xún)中,關(guān)聯(lián)的子查詢(xún)是使用外部查詢(xún)中的值來(lái)完成的子查詢(xún)。因?yàn)橄嚓P(guān)子查詢(xún)要求首先執(zhí)行外部查詢(xún),所以相關(guān)子查詢(xún)必須為外部查詢(xún)中的每一行運(yùn)行一次。也稱(chēng)為同步子查詢(xún)。
2.不相關(guān):不相關(guān)子查詢(xún)是其中外部查詢(xún)和內(nèi)部查詢(xún)都彼此獨(dú)立的子查詢(xún)。
局部變量:
局部變量只能在函數(shù)內(nèi)部使用或存在。這些變量未被任何其他功能使用或引用。
這些是其他功能未知的。只要調(diào)用該函數(shù)就可以創(chuàng)建變量。
全局變量:
全局變量可以在整個(gè)程序中使用或存在。在全局中聲明的相同變量不能在函數(shù)中使用。
每當(dāng)調(diào)用該函數(shù)時(shí)就無(wú)法創(chuàng)建全局變量。
數(shù)據(jù)完整性定義了存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的準(zhǔn)確性和一致性。
它還定義了完整性約束,以在將數(shù)據(jù)輸入到應(yīng)用程序或數(shù)據(jù)庫(kù)中時(shí)對(duì)數(shù)據(jù)執(zhí)行業(yè)務(wù)規(guī)則。
這是重要的Oracle DBA面試問(wèn)題之一。
自動(dòng)增量關(guān)鍵字使用戶(hù)可以創(chuàng)建一個(gè)唯一的數(shù)字,以便在將新記錄插入表中時(shí)生成該數(shù)
字。每當(dāng)使用主鍵時(shí),都可以使用自動(dòng)遞增關(guān)鍵字。在Oracle中使用自動(dòng)遞增關(guān)鍵字
在SQL Server中使用IDENTITY關(guān)鍵字。
臨時(shí)表是用于臨時(shí)存儲(chǔ)數(shù)據(jù)的臨時(shí)存儲(chǔ)結(jié)構(gòu)。
SQL SELECT DISTINCT查詢(xún)僅用于返回唯一值。它消除了所有重復(fù)的值。
“Rename”是賦予表或列的永久名稱(chēng)
“Alias”是賦予表或列的臨時(shí)名稱(chēng)。
join是一個(gè)查詢(xún),它從多個(gè)表中檢索相關(guān)的列或行。
聯(lián)接的類(lèi)型如下:
內(nèi)部聯(lián)接
左聯(lián)接
正確加入
外連接
內(nèi)部聯(lián)接:當(dāng)正在比較的兩個(gè)(或多個(gè))表之間至少有一些匹配數(shù)據(jù)時(shí),內(nèi)部聯(lián)接將返回行。
外部聯(lián)接:外部聯(lián)接從兩個(gè)表返回行,這些行包括與一個(gè)或兩個(gè)表不匹配的記錄。
SQL約束是在數(shù)據(jù)庫(kù)中插入,刪除或更新數(shù)據(jù)時(shí)實(shí)施一些約束的一組規(guī)則。
SQL中的一些約束包括–主鍵,外鍵,唯一鍵,SQL非空,默認(rèn),檢查和索引約束。
使用唯一約束來(lái)確保字段/列中沒(méi)有重復(fù)值。
一個(gè)PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的記錄。
參與主鍵約束的所有列均不得包含NULL值。
簡(jiǎn)短的答案是“否”,一個(gè)表不允許包含多個(gè)主鍵,
但是它允許一個(gè)包含兩個(gè)或更多列的復(fù)合主鍵。
復(fù)合主鍵是在表中的多個(gè)列(多個(gè)字段的組合)上創(chuàng)建的主鍵。
一個(gè)FOREIGN KEY是用于兩個(gè)表連接在一起的關(guān)鍵。
一個(gè)FOREIGN KEY 的表與鏈接的PRIMARY KEY 另一個(gè)表。
一個(gè)表可以有許多 FOREIGN KEY。
一個(gè)表中應(yīng)該只有一個(gè)PRIMARY KEY,而可以有任意數(shù)量的UNIQUE鍵。
PRIMARY KEY 不允許使用 NULL值,而Unique鍵則允許使用NULL值。
用字段NULL值是沒(méi)有值的字段。甲NULL值是從零值或包含空格的字段不同。
具有NULL值的字段是在記錄創(chuàng)建過(guò)程中留為空白的字段。
假設(shè)表中有一個(gè)字段是可選的,并且可以在不向可選字段添加值的情況下插入記錄
則該字段將以NULL值保存。
如前所述,空值是沒(méi)有值的字段,該值不同于零值和空格。
空值是沒(méi)有值的字段。
零是數(shù)字,
空格是我們提供的值。space的ASCII值為CHAR(32)。
用字段NULL值是沒(méi)有值的字段。NULL值不能與其他NULL值進(jìn)行比較。
因此,不可能使用比較運(yùn)算符(例如=,<或<>)測(cè)試NULL值。
為此,我們必須使用IS NULL和IS NOT NULL運(yùn)算符。
SELECT column_names FROM table_name WHERE column_name IS NULL;
SELECT column_names FROM table_name WHERE column_name IS NOT NULL;
NOT NULL約束用于確保字段中的值不能為NULL
CHECK約束用于限制一列或多列接受的值。
例如,“年齡”字段應(yīng)僅包含大于18的值。
CREATE TABLE EMP_DETAILS(EmpID int NOT NULL, NAME VARCHAR (30) NOT NULL, Age INT CHECK (AGE > 18), PRIMARY KEY (EmpID));
如果在插入記錄時(shí)未提供任何值,則DEFAULT約束用于在列中包括默認(rèn)值。
規(guī)范化是表設(shè)計(jì)的過(guò)程,以最大程度地減少數(shù)據(jù)冗余。
非規(guī)范化是一種數(shù)據(jù)庫(kù)優(yōu)化技術(shù),用于提高數(shù)據(jù)庫(kù)基礎(chǔ)結(jié)構(gòu)的性能。
它涉及將冗余數(shù)據(jù)添加到一個(gè)或多個(gè)表的過(guò)程。
在規(guī)范化的數(shù)據(jù)庫(kù)中,我們將數(shù)據(jù)存儲(chǔ)在單獨(dú)的邏輯表中,并嘗試最小化冗余數(shù)據(jù)。
存儲(chǔ)過(guò)程是已創(chuàng)建并存儲(chǔ)在數(shù)據(jù)庫(kù)中以執(zhí)行特定任務(wù)的SQL語(yǔ)句的集合。
該存儲(chǔ)過(guò)程接受輸入?yún)?shù)并對(duì)其進(jìn)行處理,并返回單個(gè)值,
例如數(shù)字或文本值或結(jié)果集(行集)。
觸發(fā)器是一個(gè)SQL過(guò)程,用于響應(yīng)事件(插入,刪除或更新)而啟動(dòng)操作。
當(dāng)新雇員添加到Employee_Details表中時(shí),新記錄將在相關(guān)表中創(chuàng)建,
例如Employee_Payroll,Employee_Time_Sheet等,
在SQL Server中,數(shù)據(jù)庫(kù)表中的每一列都有一個(gè)名稱(chēng)和一種數(shù)據(jù)類(lèi)型。
在創(chuàng)建SQL表時(shí),我們需要決定在表的每一列中存儲(chǔ)哪種數(shù)據(jù)類(lèi)型。
真與假
一個(gè)字節(jié)中可以表示的最大數(shù)字是11111111或255。
可能的值的數(shù)目是256(即255(最大的可能值)加上1(零)或2 8)。
SQL Operator是保留字,主要在SQL語(yǔ)句的WHERE子句中使用,以執(zhí)行諸如算術(shù)運(yùn)算和比較之類(lèi)的操作。這些用于在SQL語(yǔ)句中指定條件。
共有三種類(lèi)型的運(yùn)算符。
算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符
默認(rèn)情況下為1433
以下是ACID的四個(gè)屬性。這些保證了數(shù)據(jù)庫(kù)事務(wù)的可靠處理。
原子性
一致性
隔離
耐用性
SELECT INTO語(yǔ)句將數(shù)據(jù)從一個(gè)表復(fù)制到新表中。將使用舊表中定義的列名和類(lèi)型創(chuàng)建新表。您可以使用AS子句創(chuàng)建新的列名稱(chēng)。
SELECT * INTO newtable FROM oldtable WHERE condition;
Delete,Truncate和Drop命令之間的區(qū)別是
Delete命令是DML命令,用于從表中刪除行。可以回滾。
Truncate是DDL命令,用于刪除表中的所有行并釋放包含表的空間。它不能回滾。
Drop是DDL命令,它會(huì)刪除完整的數(shù)據(jù)以及表結(jié)構(gòu)(與truncate命令僅刪除行不同)。所有表的行,索引和特權(quán)也將被刪除。
Delete和Truncate之間的區(qū)別是
刪除 | 截短 |
---|---|
Delete語(yǔ)句用于從表中刪除行??梢曰貪L。 | Truncate語(yǔ)句用于刪除表中的所有行并釋放包含表的空間。它不能回滾。 |
我們可以在DELETE語(yǔ)句中使用WHERE條件,并可以刪除所需的行 | 我們不能在TRUNCATE語(yǔ)句中使用WHERE條件。因此,我們不能僅刪除必需的行 |
我們可以使用DELETE刪除特定的行 | 我們只能使用TRUNCATE一次刪除所有行 |
刪除是DML命令 | 截?cái)嗍荄DL命令 |
刪除維護(hù)日志,并且性能比截?cái)嗦?/td> | 截?cái)嗫勺畲笙薅鹊販p少日志并提高性能 |
我們需要對(duì)Table具有DELETE權(quán)限才能使用DELETE命令 | 我們至少需要對(duì)表具有ALTER權(quán)限才能使用TRUNCATE命令 |
這是棘手的SQL面試問(wèn)題之一。采訪者可能以另一種方式問(wèn)您這個(gè)問(wèn)題,因?yàn)椤叭?lián)盟”優(yōu)于“全聯(lián)盟”有什么優(yōu)勢(shì)。
Union和Union All都將兩個(gè)表的結(jié)果連接在一起,但是這兩個(gè)查詢(xún)處理重復(fù)表的方式不同。
聯(lián)合:省略重復(fù)的記錄,僅返回兩個(gè)或多個(gè)select語(yǔ)句的不同結(jié)果集。
全部合并: 返回不同選擇語(yǔ)句結(jié)果集中的所有行,包括重復(fù)項(xiàng)。
在性能方面,Union All比Union更快,因?yàn)?span style="color: #ca7d37;">Union
All不會(huì)刪除重復(fù)項(xiàng)。聯(lián)合查詢(xún)檢查重復(fù)值,這會(huì)花費(fèi)一些時(shí)間來(lái)刪除重復(fù)記錄。假定:表1有10條記錄,表2 有10條記錄。兩個(gè)表中的最后一條記錄是相同的。
如果運(yùn)行聯(lián)合查詢(xún)。
SELECT * FROM Table1UNIONSELECT * FROM Table2
輸出:共19條記錄
如果運(yùn)行聯(lián)合查詢(xún)。
SELECT * FROM Table1UNION ALLSELECT * FROM Table2
輸出:共20條記錄
兩個(gè)表中所有列的數(shù)據(jù)類(lèi)型應(yīng)相同。
SQL CLAUSE通過(guò)為SQL查詢(xún)提供條件來(lái)幫助限制結(jié)果集。
CLAUSE有助于從整個(gè)記錄集中過(guò)濾行。SQL子句在哪里和擁有。
Where子句用于從指定特定條件的數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),而Haveing子句
與“ GROUP BY”一起使用以獲取符合Aggregate函數(shù)指定的特定條件的數(shù)據(jù)。
Where子句不能與Aggregate函數(shù)一起使用,但是Haveing子句可以。
SQL聚合函數(shù)返回單個(gè)值,該值是根據(jù)列中的值計(jì)算得出的。
SQL中的一些匯總函數(shù)如下
AVG()–此函數(shù)返回平均值
COUNT()–此函數(shù)返回行數(shù)
MAX()–此函數(shù)返回最大值
MIN()–此函數(shù)返回最小值
ROUND()–此函數(shù)將數(shù)字字段舍入為指定的小數(shù)位數(shù)
SUM()–此函數(shù)返回總和
SQL字符串函數(shù)主要用于字符串操作。
一些廣泛使用的SQL字符串函數(shù)是
LEN()–返回文本字段中值的長(zhǎng)度
LOWER()–將字符數(shù)據(jù)轉(zhuǎn)換為小寫(xiě)
UPPER()–將字符數(shù)據(jù)轉(zhuǎn)換為大寫(xiě)
SUBSTRING()–它從文本字段中提取字符
LTRIM()–從字符串開(kāi)頭刪除所有空格
RTRIM()–刪除字符串末尾的所有空格
CONCAT()–串聯(lián)函數(shù)將多個(gè)字符串組合在一起
REPLACE()–更新字符串的內(nèi)容。
顧名思義,這些是由用戶(hù)根據(jù)其要求編寫(xiě)的。
用戶(hù)定義的函數(shù)是編寫(xiě)為在需要時(shí)使用邏輯的函數(shù)。
用戶(hù)定義的函數(shù)有三種類(lèi)型,即
·標(biāo)量函數(shù)
·內(nèi)聯(lián)表值函數(shù)
·多語(yǔ)句值函數(shù)
標(biāo)量函數(shù)返回單位,變體定義了return子句。
內(nèi)聯(lián)表值函數(shù)和多語(yǔ)句值函數(shù)以返回表的形式返回表。
自聯(lián)接是表與自身聯(lián)接的聯(lián)接,特別是當(dāng)表具有引用其自己的主鍵的外鍵時(shí)。
如果未與交叉聯(lián)接一起使用WHERE子句,則交叉聯(lián)接將產(chǎn)生一個(gè)結(jié)果集
該結(jié)果集是第一個(gè)表中的行數(shù)乘以第二個(gè)表中的行數(shù)。
這種結(jié)果稱(chēng)為笛卡爾積。如果假設(shè)在交叉聯(lián)接中使用Where子句
則查詢(xún)將像內(nèi)部聯(lián)接一樣工作。
歸類(lèi)定義為一組規(guī)則,這些規(guī)則確定如何對(duì)字符數(shù)據(jù)進(jìn)行排序和比較。
使用定義正確字符序列的規(guī)則以及用于指定區(qū)分大小寫(xiě),字符寬度,重音符號(hào),
假名字符類(lèi)型的選項(xiàng)對(duì)字符數(shù)據(jù)進(jìn)行排序。
排序規(guī)則敏感性的不同類(lèi)型如下
:區(qū)分大小寫(xiě):A和a以及B和b。
假名敏感性:日語(yǔ)假名字符。
寬度靈敏度:?jiǎn)巫止?jié)字符和雙字節(jié)字符。
口音敏感度。
實(shí)用的SQL查詢(xún)面試問(wèn)題(帶有答案的SQL Server查詢(xún)示例)
在這一部分中,我們將看到SQL實(shí)踐問(wèn)題,其中包含復(fù)雜的SQL查詢(xún)面試問(wèn)題和基本的SQL面試問(wèn)題。
讓我們看一下重要的SQL查詢(xún)以進(jìn)行面試
通過(guò)使用DISTINCT關(guān)鍵字,我們可以從表中獲得唯一記錄
SELECT DISTINCT Col1, Col2 from Table1
提取字符串的前5個(gè)字符的一些方法如下:
SELECT RIGHT(EmpName,5) AS EmployeeName FROM Employee
SELECT SUBSTRING(EmpName,1,5) AS EmployeeName FROM Employee
Employee_Name:yuhan,工資:5500,年齡:29?
INSERT into Employee_Details (Employee_Name, Salary, Age) VALUES (‘yuhan’, 5500 , 29);
ALTER TABLE Employee_Details ADD (Salary);
UPDATE Employee_Details set Salary = 7500 where Employee_Name = ‘yuhan’;
Select * from table_name;
查看特定數(shù)據(jù)庫(kù)上可用的表
USE TestDBGOSELECT * FROM sys.TablesGO
SQL Delete語(yǔ)句用于從表中刪除記錄。
DELETE FROM table_name WHERE some_column=some_value;
DELETE from Players WHERE Player_Name = ‘Sachin’
通過(guò)使用DISTINCT關(guān)鍵字,我們每個(gè)名字只能獲得一次。
SELECT DISTINCT employee_name FROM employee_table;
通過(guò)使用SQL AS關(guān)鍵字
SELECT column_name AS new_name FROM table_name;
SQL SELECT語(yǔ)句的順序如下
選擇,從,在哪里,分組依據(jù),擁有,訂購(gòu)依據(jù)。
在SQL中,有一個(gè)名為GetDate()的內(nèi)置函數(shù),該函數(shù)有助于返回當(dāng)前日期。
SELECT FirstName, LastName FROM Employee_Details;
SP_RENAME TABLE 'SCOREBOARD', 'OVERALLSCORE'
重命名表名和列名
sp_rename OldTableName,NewTableName
sp_rename 'TableName.OldColumnName', 'NewColumnName'
要從表中選擇所有偶數(shù)記錄:
Select * from table where id % 2 = 0
要從表中選擇所有奇數(shù)記錄:
Select * from table where id % 2 != 0
SQL Case語(yǔ)句允許在SELECT語(yǔ)句中嵌入if-else like子句。
select case when null = null then 'True' else 'False' end as Result;
該查詢(xún)返回“ False”。在上述問(wèn)題中,我們可以看到null = null不是比較null值的正確方法。為了將一個(gè)值與null進(jìn)行比較,我們?cè)赟QL中使用IS運(yùn)算符。
所以正確的方法如下
select case when null is null then 'True' else 'False' end as Result;
select case when null is null then 'Queries In SQL Server' else 'Queries In MySQL' end as Result;
該查詢(xún)將返回“ SQL Server中的查詢(xún)”。
單行注釋?zhuān)簡(jiǎn)涡凶⑨屢詢(xún)蓚€(gè)連續(xù)的連字符(–)開(kāi)頭,并以該行的結(jié)尾結(jié)束。
多行注釋?zhuān)憾嘈凶⑨屢?*開(kāi)頭,并以*/結(jié)尾。/*和*/之間的任何文本都將被忽略。
這三個(gè)功能以相同的方式工作。這些函數(shù)用于將NULL值替換為另一個(gè)值。Oracle開(kāi)發(fā)人員使用NVL函數(shù),MySQL開(kāi)發(fā)人員使用IFNULL函數(shù),而SQL Server開(kāi)發(fā)人員使用ISNULL函數(shù)。
假設(shè)列中的某些值是NULL。
如果在下面的語(yǔ)句中運(yùn)行,則結(jié)果為NULL
SELECT col1 * (col2 + col3) FROM Table1
假設(shè)col3中的任何值為NULL,那么正如我所說(shuō)的,您的結(jié)果將為NULL。
為了克服這個(gè)問(wèn)題,我們使用NVL()函數(shù),IFNULL()函數(shù),ISNULL()函數(shù)。
甲骨文:
SELECT col1 * (col2 + NVL(col3,0)) FROM Table1
MySQL:
SELECT col1 * (col2 + IFNULL(col3,0)) FROM Table1
另外,您可以使用COALESCE()函數(shù)
SELECT col1 * (col2 + COALESCE(col3,0)) FROM Table1
SQL Server:
SELECT col1 * (col2 + ISNULL(col3,0)) FROM Table1
它是AKA后端測(cè)試或數(shù)據(jù)測(cè)試。
數(shù)據(jù)庫(kù)測(cè)試涉及驗(yàn)證前端數(shù)據(jù)與后端數(shù)據(jù)的完整性。
它驗(yàn)證架構(gòu),數(shù)據(jù)庫(kù)表,列,索引,存儲(chǔ)過(guò)程,觸發(fā)器,數(shù)據(jù)重復(fù),孤立記錄,垃圾記錄。
它涉及更新數(shù)據(jù)庫(kù)中的記錄并在前端進(jìn)行驗(yàn)證。
GUI測(cè)試是AKA用戶(hù)界面測(cè)試或前端測(cè)試。
數(shù)據(jù)庫(kù)測(cè)試是AKA后端測(cè)試或數(shù)據(jù)測(cè)試。
GUI測(cè)試處理向用戶(hù)開(kāi)放以進(jìn)行交互的所有可測(cè)試項(xiàng)目,例如菜單,窗體等。
數(shù)據(jù)庫(kù)測(cè)試處理通常對(duì)用戶(hù)隱藏的所有可測(cè)試項(xiàng)目。
正在執(zhí)行GUI測(cè)試的測(cè)試人員無(wú)需了解結(jié)構(gòu)化查詢(xún)語(yǔ)言
正在執(zhí)行數(shù)據(jù)庫(kù)測(cè)試的測(cè)試人員無(wú)需了解結(jié)構(gòu)化查詢(xún)語(yǔ)言
GUI測(cè)試包括使文本框,復(fù)選框,按鈕,下拉菜單,表單等無(wú)效,主要是整個(gè)應(yīng)用程序的外觀
數(shù)據(jù)庫(kù)測(cè)試涉及驗(yàn)證前端數(shù)據(jù)的完整性和后端數(shù)據(jù)的完整性結(jié)束。它驗(yàn)證架構(gòu),數(shù)據(jù)庫(kù)表,列,索引,存儲(chǔ)過(guò)程,觸發(fā)器,數(shù)據(jù)重復(fù),孤立記錄,垃圾記錄。它涉及更新數(shù)據(jù)庫(kù)中的記錄并在前端進(jìn)行驗(yàn)證。
聯(lián)系客服