如果你在為即將到來的事情做準備SQL麵試你來對地方了!這個關於SQL麵試問題的博客分為不同的部分。無論你是一個新生,一個開發人員,或一個有經驗的專業人士,有SQL麵試問題來滿足你的需求,幫助你在麵試中取得好成績!
讓我們開始吧!
- 大一新生的SQL麵試問題
- 針對有經驗的專業人士的SQL麵試問題
- 針對開發人員的SQL麵試問題
- SQL加入麵試問題
- 高級SQL麵試問題
- SQL Server麵試問題
- SQL中的常見問題
- 通過SQL測試來評估自己
下載高級SQL麵試問題PDF免費
難以清除SQL訪問?
這裏是一個免費訪問高級SQL麵試問答的頂級跨國公司
關係數據庫仍然是使用最廣泛的數據庫數據庫管理係統.訪問和分析數據是當前最需要的,而SQL使您能夠做到這一點。雇主對擁有SQL技能的個人有很高的需求。因此,你必須準備好SQL麵試常見問題如果你想找到理想的工作!
大一新生的SQL麵試問題
1.<聖rong>數據庫是什麼?
一個數據庫是一個幫助收集、存儲和檢索數據的係統。數據庫可能很複雜,這類數據庫是使用設計和建模方法開發的。
2.<聖rong>DBMS是什麼?
DBMS代表數據庫管理係統負責數據庫的創建、更新和管理。
3.RDBMS是什麼?它和DBMS有什麼不同?
RDBMS代表關係數據庫管理係統它以表集合的形式存儲數據,並且可以定義這些表的公共字段之間的關係。
4.SQL是什麼?
SQL是結構化查詢語言的縮寫。它是與數據庫交互的主要語言。在…的幫助下SQL,我們可以從數據庫中提取數據,修改該數據,並在有需求時更新它。這種查詢語言是常青的,被廣泛應用於各行各業。例如,如果一個公司的數據庫中有其員工的所有詳細信息的記錄。在SQL的幫助下,可以在很短的時間內查詢所有這些數據,從而找到有價值的見解。
5.如何在SQL中創建表?
在sql中創建表的命令非常簡單:
CREATE TABLE table_name (column1, column2, column3, ....);
我們首先給出關鍵字CREATE TABLE,然後給出表的名稱。在此之後,我們將在大括號中列出所有列及其數據類型。
例如,如果我們想創建一個簡單的員工表:
創建表雇員(姓名varchar(25),年齡int,性別varchar(25), ....);
3.如何刪除SQL表?
從sql中刪除表有兩種方法:DROP和TRUNCATE。DROP TABLE命令用於從數據庫中完全刪除表。命令如下:
刪除表table_name;
上麵的命令將完全刪除表中存在的所有數據以及表本身。
但是如果我們隻想刪除表中存在的數據,而不刪除表本身,那麼我們將使用truncate命令:
刪除表table_name;
4.如何在SQL中更改表名?
這是在SQL中修改表名的命令:
ALTER TABLE table_name
重命名new_table_name;
首先給出關鍵字ALTER TABLE,然後給出表的原始名稱,然後給出關鍵字RENAME TO,最後給出新的表名。
例如,如果我們想將" employee "表更改為" employee_information ",下麵的命令是:
ALTER TABLE員工
重命名employee_information;
為了更徹底地準備,請查看我們的SQL麵試問題免費課程在偉大beplay2018官网學習學院。在本課程中,我們從關於SQL基礎知識的麵試問題開始。然後,我們深入研究規範化和子查詢的問題。最後,我們有兩個項目的麵試問題。”寬帶管理係統和“HR DBMS”。你也可以拿起軟件工程師證書Great Learning與頂尖大beplay2018官网學合作提供的課程。beplay2018官网Great Learning提供職業幫助和專門的導師支持,以幫助您的職業發展。
5.如何在SQL中刪除一行?
我們將使用DELETE查詢從表中刪除現有的行:
刪除從table_name
(條件);
我們首先給出關鍵字DELETE FROM,然後給出表的名稱,然後給出WHERE子句,並給出刪除行所依據的條件。
例如,從employee表中,如果我們想刪除所有的行,其中員工的年齡等於25,那麼這將命令:
刪除員工
(= 25歲);
6.如何用SQL創建數據庫?
數據庫是sql中的一個存儲庫,它可以包含多個表。
這是在sql中創建數據庫的命令:
創建數據庫database_name。
7.什麼是SQL中的規範化?
歸一化用於將較大的複雜表分解為簡單表和較小表。這有助於我們刪除所有冗餘數據。
通常,在一個表中,我們會有很多不必要的冗餘信息,所以最好將這個複雜的表劃分為多個隻包含唯一信息的小表。
第一範式:
關係模式在1NF中,當且僅當:
-關係中的所有屬性都是原子的(不可分割的值)
-沒有重複的元素或元素組。
第二範式:
一個關係被稱為2NF,當且僅當:
它在1中聖正常的形式。
非鍵屬性與鍵屬性之間不存在部分依賴關係。
第三範式:
當且僅當:關係R被稱為3NF:
它是2NF。
非鍵屬性和鍵屬性之間不存在通過另一個非鍵屬性傳遞的依賴關係
8.什麼是SQL中的連接?
連接用於根據兩個或多個表之間的相關列組合它們的行。
類型的連接:
•<聖rong>內連接−當兩個表都匹配時返回行。
•<聖rong>左連接−返回左表中的所有行,即使右表中沒有匹配項。
•<聖rong>正確的連接−返回右表中的所有行,即使左表中沒有匹配的行。
•<聖rong>全外連接−當其中一個表中有匹配時返回行。
•<聖rong>自我加入−用於將一個表與自身連接,就像這個表是兩個表一樣,在SQL語句中臨時重命名至少一個表。
•<聖rong>笛卡爾連接(交叉連接)−返回來自兩個或多個連接表的記錄集的笛卡爾積。
內連接:
INNER JOIN根據連接謂詞組合兩個表(table1和table2)的列值,從而創建一個新的結果表。該查詢將table1的每一行與table2的每一行進行比較,以查找滿足連接謂詞的所有行對。
語法:
選擇表。col1,表二。col2,…,表1。table1.commonfield = table2.commonfield;
左連接:
LEFT JOIN返回來自左表的所有值,加上來自右表的匹配值,如果沒有匹配的連接謂詞,則返回NULL。
語法:
選擇表。col1,表二。col2,…,表1。JOIN table2 ON table1.commonfield = table2.commonfield;
正確的連接:
RIGHT JOIN返回來自右表的所有值,加上來自左表的匹配值,如果沒有匹配的連接謂詞,則返回NULL。
語法:
選擇表。col1,表二。col2,…,表1。JOIN table2 ON table1.commonfield = table2.commonfield;
全外連接:
FULL OUTER JOIN結合了左右外部連接的結果。連接的表將包含來自兩個表的所有記錄,並為兩邊缺失的匹配填充null。
語法:
選擇表。col1,表二。col2,…,表1。JOIN table2 ON table1.commonfield = table2.commonfield;聯盟選擇表。col1,表二。col2,…,表1。JOIN table2 ON table1.commonfield = table2.commonfield;
自我加入:
SELF JOIN將一個表與自身連接起來;臨時重命名SQL語句中的至少一個表。
語法:
選擇a.col1、b.col2……WHERE a.commonfield = b.commonfield;
9.什麼是SQL server?
要了解SQL Server究竟是什麼,我們需要了解什麼是DBMS和RDBMS.DBMS代表數據庫管理係統。當我們有一個巨大的數據庫時,我們需要一個適當的管理係統來幫助我們組織這個數據庫。數據庫管理係統有四種類型:
- 分層
- 網絡
- 關係
- 麵向對象的。
在這些數據庫管理係統中,SQL Server屬於關係數據庫管理係統的範疇。關係數據庫是指使用行和列的結構化格式存儲數據的數據庫。這使得定位和訪問數據庫中的特定值更加容易。它是“關係型”的,因為每個表中的值彼此相關。關係結構使一次跨多個表運行查詢成為可能。
10.如何在SQL中插入日期?
如果RDBMS是MYSQL,我們可以這樣插入日期:
" INSERT INTO tablename (col_name, col_date) VALUES (' DATE: Manual DATE ', ' 2020-9-10 ') ";
11.什麼是SQL中的主鍵?
主鍵是SQL中的一個約束。因此,在理解主鍵到底是什麼之前,讓我們先了解一下SQL中的約束到底是什麼。約束是對表上的數據列實施的規則。這些參數用於限製可以進入表的數據類型。約束可以是列級或表級。
讓我們來看看SQL中存在的不同類型的約束:
約束 | 描述 |
非空 | 確保列不能有NULL值。 |
默認的 | 如果未指定列,則為列提供默認值。 |
獨特的 | 確保列中的所有值都是不同的 |
主要的 | 唯一標識數據庫表中的每一行/記錄 |
外國 | 唯一標識任何其他數據庫表中的行/記錄 |
檢查 | CHECK約束確保列中的所有值都滿足特定條件。 |
指數 | 用於非常快速地從數據庫創建和檢索數據。 |
你可以認為主鍵約束是UNIQUE和NOT NULL約束的組合。這意味著如果一個列被設置為主鍵,那麼這個特定的列中不能有任何空值,而且這個列中的所有值都必須是唯一的。
12.如何在SQL中查看表?
要在SQL中查看表,你需要做的就是給出下麵的命令:
顯示表;
13.PL / SQL是什麼
PL SQL代表結構化查詢語言的過程語言構造。SQL PL是Oracle為了克服純sql的局限性而引入的。因此,pl sql在普通sql的基礎上增加了過程語言的方法。
這裏需要注意的一點是pl sql隻適用於oracle數據庫。如果你沒有Oracle數據庫,那麼您就不能使用PL SQL。
雖然在sql的幫助下,我們能夠進行DDL和DML查詢,但在PL sql的幫助下,我們將能夠創建函數、觸發器和其他過程結構。
14.MYSQL是什麼?
去了解到底是什麼MYSQL我們需要了解什麼是DBMS和RDBMS。數據庫管理係統代表數據庫管理係統。當我們有一個巨大的數據庫時,我們需要一個適當的管理係統來幫助我們組織這個數據庫。數據庫管理係統有四種類型:
- 分層
- 網絡
- 關係
- 麵向對象。
在這些數據庫管理係統中,MYSQL屬於關係數據庫管理係統的範疇。關係數據庫是指使用行和列的結構化格式存儲數據的數據庫。這使得定位和訪問數據庫中的特定值更加容易。它是“關係型”的,因為每個表中的值彼此相關。關係結構使一次跨多個表運行查詢成為可能。
15.如何在SQL中查看所有表?
不同的數據庫管理係統有不同的查詢來查看所有的表。
要查看MYSQL中的所有表,我們必須使用這個查詢:
顯示表;
以下是我們如何查看ORACLE中的所有表:
SELECT table_name FROM User_tables;
這是我們如何在SQL Server中提取所有表:
SELECT * FROM Information_schema.tables;
16.什麼是SQL中的ETL ?
ETL代表提取、轉換和加載。這是一個三步過程,我們必須從從數據源提取數據開始。一旦我們整理了來自不同來源的數據,我們得到的就是原始數據。這些原始數據必須轉換成整潔的格式,這將在第二階段實現。最後,我們必須將這些整潔的數據加載到工具中,以幫助我們找到見解。
17.如何安裝SQL?
SQL代表結構化查詢語言,它不是你可以安裝的東西。要實現sql查詢,您需要一個關係數據庫管理係統。有不同種類的關係數據庫管理係統,例如:
- 甲骨文
- MYSQL
- SQL Server
因此,要實現sql查詢,我們需要安裝這些關係數據庫管理係統中的任何一個。
18.SQL中的update命令是什麼?
update命令位於sql的DML(數據操作語言)部分之下,用於更新表中的現有數據。
更新員工
設置last_name =“科恩”
employee_id = 101;
使用這個update命令,我將更改雇員的姓氏。
19.如何在SQL Server中重命名列名?
在SQL Server中,無法通過ALTER TABLE命令重命名列,隻能使用sp_rename。
20.SQL查詢的類型是什麼?
我們有四種類型的SQL查詢:
- DDL(數據定義語言):創建對象
- DML(數據操作語言):數據操作
- DCL(數據控製語言):權限的分配和刪除
- TCL(事務控製語言):保存並恢複對數據庫的更改
讓我們看看DDL下的不同命令:
命令 | 描述 |
創建 | 在數據庫中創建對象 |
改變 | 更改數據庫對象的結構 |
下降 | 從數據庫中刪除對象 |
截斷 | 從表中永久刪除所有記錄 |
評論 | 向數據字典添加注釋 |
重命名 | 重命名一個對象 |
21.寫一個查詢來顯示在每個地區工作的員工數量?
SELECT region, COUNT(gender) FROM employee GROUP of region;
22.什麼是嵌套觸發器?
觸發器可以通過使用INSERT、UPDATE和DELETE語句實現DML。這些包含DML並為數據修改查找其他觸發器的觸發器稱為嵌套觸發器。
23.編寫SQL查詢來獲取工資大於或等於20000,小於或等於10000的員工姓名.
通過在where子句中使用BETWEEN,我們可以檢索工資為>= 20000和<=10000的員工的Employee id。SELECT FullName FROM EmployeeDetails WHERE EmpId IN (SELECT EmpId FROM EmployeeSalary WHERE薪資在5000到10000之間)
24.給定一個包含列empName和empId的表Employee,下麵的SQL查詢的結果將是什麼?select empName from Employee order by 2 asc
當SELECT語句中至少使用了2列時,“按2排序”是有效的。在這裏,該查詢將拋出錯誤,因為SELECT語句中隻使用了一列。
25.OLTP是什麼?
OLTP代表在線事務處理。和是一類能夠支持麵向事務的程序的軟件應用程序。OLTP係統的一個基本屬性是其維護並發性的能力。
26.什麼是數據完整性?
數據完整性是保證數據在整個生命周期內的準確性和一致性,是任何存儲、處理或檢索數據的係統的設計、實現和使用的關鍵方麵。它還定義了完整性約束,以便在將數據輸入到應用程序或數據庫時對數據實施業務規則。
27.OLAP是什麼?
OLAP是在線分析處理的縮寫。還有一類軟件程序,其特點是網上交易的頻率相對較低。查詢通常太複雜,並且涉及到一堆聚合。
28.從表中查找Constraint信息?
很多時候,用戶需要找出表的特定約束信息。SELECT * From User_Constraints;SELECT * FROM user_con_columns;
29.你能拿到同工資的員工名單嗎?
選擇不同的e.empid e.empname e。員工e,員工e1的工資,其中e。工資和e.empid
30.SQL中TOP子句的替代方案是什麼?
1.ROWCOUNT函數
2.設置rowcount 3
3.Select * from employee order by empid desc設置rowcount為0
31.下麵的語句會輸出error還是0 ?選擇AVG(空)
錯誤。操作數數據類型NULL對於Avg操作符無效。
32.這個表的笛卡爾積是什麼?
交叉連接的輸出稱為笛卡爾積。它返回組合第一個表的每一行和第二個表的每一行的行。例如,如果我們連接兩個有15和20列的表,兩個表的笛卡爾積將是15×20=300行。
33.SQL中的模式是什麼?
我們的數據庫由許多不同的實體組成,如表、存儲過程、函數、數據庫所有者等等。為了理解所有這些不同的實體是如何相互作用的,我們需要模式的幫助。因此,可以將模式視為數據庫中存在的所有不同實體之間的邏輯關係。
一旦我們對圖式有了清晰的理解,這在很多方麵都有幫助:
- 我們可以決定哪個用戶可以訪問數據庫中的哪些表。
- 我們可以修改或添加數據庫中不同實體之間的新關係。
總的來說,您可以將模式視為數據庫的藍圖,它將為您提供不同對象如何相互交互以及哪些用戶可以訪問不同的實體的完整圖像。
34.SQL中的WHERE子句是什麼?
Where子句用於根據條件從表中提取元素。
假設,我們有一個這樣的表:
現在,如果你想提取所有記錄“where”的值“Sepal。長度”大於6,那麼你可以使用這樣的查詢:
- select * from虹膜where萼片長度> 6
正如您所看到的,我們已經提取了所有的記錄,其中值' Sepal。長度'大於6。
類似地,如果你想提取所有“物種”為Virginia的記錄,這將是查詢:
2.select * from iris where where Species= ' virginica '
35.如何在SQL中刪除列?
要在SQL中刪除一個列,我們將使用DROP column方法:
ALTER TABLE員工
刪除列年齡;
我們首先給出關鍵字ALTER TABLE,然後給出表的名稱,然後給出關鍵字DROP COLUMN,最後給出我們想要刪除的列的名稱。
36.SQL中的唯一鍵是什麼?
唯一鍵是SQL中的一個約束。因此,在理解主鍵到底是什麼之前,讓我們先了解一下SQL中的約束到底是什麼。約束是對表上的數據列實施的規則。這些參數用於限製可以進入表的數據類型。約束可以是列級或表級。
獨特的關鍵:
每當我們給一個列賦予unique key的約束時,這將意味著該列中不能有任何重複的值。換句話說,這個列中的所有記錄必須是唯一的。
37.如何使用WHERE子句實現多個條件?
我們可以使用AND, OR操作符實現多個條件:
查詢員工first_name = ' Steven '且工資<=10000
在上述命令中,我們給出了兩個條件。條件確保我們隻提取那些雇員的名字是“Steven”的記錄,而第二個條件確保雇員的工資低於10,000美元。換句話說,我們隻提取這些記錄,其中員工的名字是“Steven”,這個人的工資應該低於10,000美元。
如果你想了解更多關於結構查詢語言的知識,你可以參考這個SQL初學者教程
針對有經驗的專業人士的SQL麵試問題
1.什麼是SQL注入?
SQL注入是一種黑客技術,被黑帽黑客廣泛用於從您的表或數據庫中竊取數據。比方說,如果你去一個網站,輸入你的用戶信息和密碼,黑客就會在那裏添加一些惡意代碼,這樣他就可以直接從數據庫中獲取用戶信息和密碼。如果您的數據庫包含任何重要信息,最好保持它的安全性,以免受到SQL注入攻擊。
2.SQL中的觸發器是什麼?
觸發器是數據庫中的存儲程序,它自動響應插入、更新或刪除等DML操作的事件。換句話說,它隻是一個跨所有數據庫表發生的事件的審計員。
讓我們看一個觸發器的例子:
CREATE TRIGGER bank_trans_hv_alert BEFORE UPDATE ON bank_account_transaction FOR EACH ROW begin if(abs(:new.transaction_amount)>999999)THEN RAISE_APPLICATION_ERROR(-20000, '賬戶交易超過儲蓄賬戶每日存款');如果;結束;
3.如何在SQL中插入多行?
要在SQL中插入多行,我們可以遵循以下語法:
INSERT INTO table_name (column1, column2,column3…)值(value1, value2, value3…),(value1, value2, value3 ....), ...(value1, value2, value3);
首先給出關鍵字INSERT INTO,然後給出我們想要插入值的表的名稱。接下來是列的列表,我們必須為這些列添加值。然後,我們將輸入VALUES關鍵字,最後,我們將給出值列表。
這裏有一個相同的例子:
INSERT INTO employees (name, age, salary) VALUES ('Sam', 21,75000), (' 'Matt', 32,85000), ('Bob', 26,90000);
在上麵的例子中,我們將多個記錄插入到名為employees的表中。
4.如何找出SQL中第n高的薪水?
這就是我們如何使用TOP關鍵字在SQL SERVER中找到第n高的薪水:
從(選擇不同的前N個工資從#員工順序工資DESC)作為臨時順序工資
這是我們如何使用LIMIT關鍵字找到MYSQL中第n高的工資:
從員工訂單中選擇工資按工資分配限額n - 1,1
5.如何複製表在SQL?
我們可以使用SELECT INTO語句將數據從一個表複製到另一個表。我們可以複製所有數據,也可以隻複製某些特定的列。
下麵是我們將所有列複製到一個新表的方法:
SELECT * FROM oldtable WHERE condition;
如果我們隻想複製一些特定的列,我們可以這樣做:
SELECT column1, column2, column3,…從oldtable轉換成newtable
6.如何在SQL中添加一個新列?
我們可以使用alter命令在SQL中添加一個新列:
添加列聯係人INT(10);
這個命令幫助我們在employees表中添加一個名為contact的新列。
7.如何在SQL中使用LIKE ?
LIKE運算符檢查屬性值是否與給定的字符串模式匹配。下麵是一個LIKE運算符的例子
SELECT * FROM employees WHERE first_name為' Steven ';
使用這個命令,我們將能夠提取所有名字類似於“Steven”的記錄。
8.如果我們刪除一個表,它是否也刪除相關的對象,如約束、索引、列、默認值、視圖和排序過程?
是的,SQL服務器刪除了所有相關的對象,這些對象存在於表中,如約束、索引、列、默認值等。但是刪除表不會刪除視圖和排序過程,因為它們存在於表之外。
9.我們能關閉一個觸發器嗎?如果是,如何?
是的,我們可以使用" disable trigger triggerName on <> "來禁用數據庫上的單個觸發器。我們也可以使用" disable trigger all on all SERVER "選項來禁用所有觸發器。
10.什麼是活鎖?
活鎖是指由於一係列重疊的共享鎖不斷幹擾,對排他鎖的請求被反複拒絕的鎖。當讀事務創建表或頁時,也會發生活動鎖。
11.如何從表中獲取備用記錄?
可以為奇數和偶數行號獲取記錄-以顯示偶數-。Select employeeId from (Select rowno, employeeId from employee) where mod(rowno,2)=0顯示奇數-。Select employeeId from (Select rowno, employeeId from employee) where mod(rowno,2)=1
12.定義COMMIT並給出一個例子?
當事務中執行COMMIT時,事務中所做的所有更改都將永久寫入數據庫。例如:開始事務;刪除從人力資源。JobCandidate WHERE JobCandidateID = 20;提交事務;上麵的示例刪除SQL服務器中的職位候選人。
13.您可以自己連接表嗎?
如果希望創建一個結果集,將表中的記錄與同一表中的其他記錄連接起來,則可以使用自連接將表與自身連接起來。
14.用例子解釋Equi連接
當使用相等運算符連接兩個或多個表時,此類別稱為相等連接。我們隻需要專注於condition =(=)在表中列之間。例如:選擇a.Employee_name, b。員工a的部門名,員工b的部門名
15.如何避免在查詢中獲得重複的條目?
SELECT DISTINCT用於使用查詢從表中獲取不同的數據。下麵的SQL查詢隻從“Customers”表中的“Country”列中選擇DISTINCT值:
16.如何從現有表創建空表?
這裏,我們將student表複製到另一個具有相同結構的表,但沒有複製任何行。
17.寫一個查詢顯示奇數記錄從學生表?
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY student_no) AS rowwid FROM student) WHERE row_id %2!= 0
18.用例子解釋非裝備連接?
1.當兩個或多個表在不等於條件下連接時,這種連接稱為非相等連接。這裏可以使用任何操作符,即<>,!=,<,>,Between。例如:選擇b.Department_ID, b。department_id from Employee a,Department b where a. department_id <> b. department_id;
19.如何刪除沒有主鍵的表中的重複記錄?
使用SET ROWCOUNT命令。它限製受命令影響的記錄數量。讓我們舉一個例子,如果您有兩個重複的行,您將設置ROWCOUNT 1,執行DELETE命令,然後設置ROWCOUNT 0
20.NVL和NVL2函數的區別?
NVL(exp1, exp2)和NVL2(exp1, exp2, exp3)函數都檢查值exp1,看它是否為空。對於NVL(exp1, exp2)函數,如果exp1不為空,則返回exp1的值;否則,將返回exp2的值,但返回的數據類型與exp1相同。對於NVL2(exp1, exp2, exp3)函數,如果exp1不為空,則返回exp2;否則返回exp3的值。
21.聚集索引和非聚集索引之間的區別是什麼?
- 與非聚類索引相比,聚類索引可以快速讀取。
2.聚集索引將數據物理地存儲在表或視圖中,而非聚集索引不將數據存儲在表中,因為它與數據行有獨立的結構。
22.這個查詢說明了什麼?GRANT privilege_name ON object_name TO {user_name|PUBLIC|role_name} [WITH GRANT OPTION];
給定的語法表明用戶也可以將訪問權限授予另一個用戶。
23.MyISAM表存儲在哪裏?
每個MyISAM表都存儲在磁盤上的三個文件中。
1." .frm "文件存儲表定義。
2.數據文件有一個'。MYD”(MYData)擴展。
3.索引文件有一個'。MYI”(MYIndex)擴展。
24.myisamchk是做什麼的?
它壓縮了MyISAM表,從而減少了它們的磁盤或內存使用量。
25.ISAM是什麼?
ISAM簡稱為索引順序訪問方法。它是由IBM開發的,用於在二級存儲係統(如磁帶)上存儲和檢索數據。
26.什麼是數據庫白盒測試?
白盒測試包括:數據庫一致性和ACID屬性數據庫觸發器和邏輯視圖決策覆蓋率、條件覆蓋率和語句覆蓋率數據庫表、數據模型和數據庫模式參考完整性規則。
27.SQL沙盒有哪些不同類型?
有3種不同類型的SQL沙盒:
1.安全訪問沙箱:在這裏,用戶可以執行SQL操作,如創建存儲過程、觸發器等,但不能訪問內存,也不能創建文件。
2.外部訪問沙箱:用戶可以訪問文件,而沒有操作內存分配的權限。
3.不安全訪問沙盒:它包含不受信任的代碼,用戶可以在其中訪問內存。
28.什麼是數據庫黑盒測試?
本次測試涉及1。數據映射2。數據存儲和檢索3。使用黑盒測試技術,例如等價分區和邊界值分析(BVA)。
29.用例子解釋右外連接?
當用戶需要Right表(Second表)中的所有記錄,而隻需要First表或left表中相等或匹配的記錄時,此連接是可用的。不匹配的記錄被認為是空記錄。例如:選擇t1.col1 t2.col2……t ' n 'col“n”。。where t1.col(+)=t2.col;
30.什麼是子查詢?
子查詢是嵌套在更大查詢中的SQL查詢。示例:SELECT employeeID, firstName, lastName FROM employees WHERE departmentID IN (SELECT departmentID FROM departments WHERE locationID = 2000) ORDER BY firstName, lastName;
針對開發人員的SQL麵試問題
1.如何在SQL中找到重複的記錄?
在SQL中有多種方法可以找到重複的記錄。讓我們看看如何使用groupby找到重複的記錄:
SELECT x, y, COUNT(*) exists FROM z1 GROUP BY x, y have COUNT(*) > 1;
我們還可以使用rank在表中找到重複項:
SELECT * FROM (SELECT eid, ename, eage, Row_Number() OVER(PARTITION BY ename, eage ORDER BY ename) AS Rank FROM employees) AS X WHERE Rank>1
2.什麼是SQL中的Case WHEN ?
如果你有其他的知識編程語言,那麼你應該已經學習了if-else語句。您可以將Case WHEN視為類似的情況。
在Case WHEN中,會有多個條件,我們會在這些條件的基礎上進行選擇。
下麵是CASE WHEN的語法:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;
我們首先給出CASE關鍵字,然後接著給出多個WHEN、then語句。
3.如何在SQL中找到第二高的薪水?
下麵是查找SQL中第二高薪的語法:
SELECT name, MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees)
4.如何刪除SQL中重複的行
在SQL中有多種方法可以刪除重複的記錄。
下麵是使用rank刪除重複記錄的代碼:
alter table emp add sid int identity(1,1) delete e from emp e inner join (select *, RANK() OVER (PARTITION BY eid,ename ORDER BY id DESC) RANK from emp)T on e.sid= T。1 .修改表emp,刪除列sno
下麵是使用groupby和min刪除重複記錄的語法:
alter table emp add sno int identity(1,1) delete E from emp E left join (select min(sno) sno from emp group by empid,ename) T on E.sno=T。修改表emp刪除列sno
5.SQL中的遊標是什麼?
SQL中的遊標用於存儲數據庫表。遊標有兩種類型:
- 隱式遊標
- 顯式遊標
隱式遊標:
這些隱式遊標是自動創建的默認遊標。用戶不能創建隱式遊標。
顯式遊標:
顯式遊標是用戶定義的遊標。這是創建顯式遊標的語法:
聲明cursor_name CURSOR FOR SELECT * FROM table_name
首先給出by關鍵字DECLARE,然後給出遊標的名稱,然後給出關鍵字cursor FOR SELECT * FROM,最後給出表的名稱。
6.如何使用SQL Server創建存儲過程?
如果您使用過其他語言,那麼您應該了解函數的概念。您可以認為SQL中的存儲過程類似於其他語言中的函數。這意味著我們可以將SQL語句存儲為存儲過程,並且可以隨時調用該存儲過程。
下麵是創建存儲過程的語法:
CREATE PROCEDURE PROCEDURE;
我們首先給出關鍵字CREATE PROCEDURE,然後繼續給出這個存儲過程的名稱。在此之後,我們給出AS關鍵字,並在後麵加上SQL查詢,我們希望將其作為一個存儲過程。最後,我們給出GO關鍵字。
一旦創建了存儲過程,就可以這樣調用它:
EXEC procedure_name;
我們將輸入關鍵字EXEC,然後給出存儲過程的名稱。
讓我們看一個存儲過程的例子:
SELECT * FROM employees WHERE location = @location;
在上麵的命令中,我們創建了一個存儲過程,它將幫助我們提取屬於特定位置的所有員工。
EXEC employee_location @location = 'Boston';
有了這個,我們就能救出所有波士頓的員工。
7.如何在SQL中創建索引?
我們可以用這個命令創建一個索引:
CREATE INDEX index_name ON table_name (column1, column2, column3…);
我們首先給出關鍵字CREATE INDEX,然後緊接著給出索引的名稱,然後給出關鍵字ON。然後,我們將給出要在其上創建索引的表的名稱。最後,在括號中,我們將列出所有具有索引的列。讓我們看一個例子:
建立雇員工資指數(工資)
在上麵的例子中,我們在' Employees '表的' salary '列上創建了一個名為salary的索引。
現在,讓我們看看如何創建一個唯一的索引:
CREATE UNIQUE INDEX ON table_name (column1, column2,column3…);
我們從關鍵字CREATE UNIQUE INDEX開始,然後給出索引的名稱,然後給出ON關鍵字並在後麵加上表的名稱。最後,在括號中,我們將給出我們想要在其上獲得唯一索引的列的列表。
8.如何在SQL中更改列數據類型?
我們可以使用alter表更改列的數據類型。下麵是命令:
修改表的數據類型:
我們首先給出關鍵字ALTER TABLE,然後給出表的名稱。之後,我們將輸入關鍵字MODIFY COLUMN。接下來,我們將輸入我們想要更改其數據類型的列的名稱,最後我們將輸入我們想要更改的數據類型。
9.SQL和NoSQL數據庫的區別?
SQL是結構化查詢語言的縮寫,主要用於查詢關係數據庫中的數據。當我們談論SQL數據庫時,它將是一個關係數據庫。
但是當涉及到NoSQL數據庫時,我們將使用非關係數據庫。
SQL加入麵試問題
1.如何在SQL中更改列名?
在不同的RDBMS中,更改列名的命令是不同的。
這是修改MYSQL中某一列名稱的命令:
修改表中客戶地址Addr char(50)
在MYSQL中,我們首先使用ALTER TABLE關鍵字,然後輸入表的名稱。在此之後,我們將使用CHANGE關鍵字並給出列的原始名稱,在該名稱之後,我們將給出我們想要重命名列的名稱。
在ORACLE中修改一個列的名稱:
將表Customer的列地址改為地址
在ORACLE中,我們首先使用ALTER TABLE關鍵字,然後輸入表的名稱。在此之後,我們將使用RENAME COLUMN關鍵字並輸入列的原始名稱,隨後我們將輸入TO關鍵字,最後給出我們想要重命名列的名稱。
在SQL Server中,無法通過ALTER TABLE命令重命名列,隻能使用sp_rename。
2.SQL中的視圖是什麼?
視圖是使用Select Query創建的具有複雜邏輯的數據庫對象,因此視圖被認為是物理數據的邏輯表示,即視圖的行為就像一個物理表,用戶可以在SQL查詢的任何部分使用它們作為數據庫對象。
讓我們看看視圖的類型:
- 簡單的視圖
- 複雜的視圖
- 內聯視圖
- 物化視圖
簡單的視圖:
使用使用單個表編寫的選擇查詢創建簡單視圖。下麵是創建一個簡單視圖的命令:
創建Simple_view為Select * from BANK_CUSTOMER
複雜的視圖:
創建VIEW Complex_view為SELECT bc。customer_id,英航。bank_account From Bank_customer bc JOIN bank_account ba Where bc。customer_id =英航。customer_id和英航。餘額> 300000
內聯視圖:
當且僅當子查詢在SELECT查詢的FROM子句中調用時,子查詢也作為內聯視圖調用。
SELECT * FROM (SELECT bc.)customer_id,英航。bank_account From Bank_customer bc JOIN bank_account ba Where bc。customer_id =英航。customer_id和英航。平衡> 300000)
3.如何在SQL中刪除一列?
要刪除一個SQL列,我們將使用下麵的命令:
刪除列的性別
我們首先給出關鍵字ALTER TABLE,然後給出表的名稱,然後給出關鍵字DROP COLUMN,最後給出我們想要刪除的列的名稱。
4.如何刪除SQL中的重複行?
在SQL中有很多方法可以刪除重複的行。讓我們來看這個例子:
SELECT[名稱],[年齡],[性別],COUNT(*) AS CNT FROM [mydata].[dbo]。[雇員]GROUP BY[姓名],[年齡],[性別]HAVING COUNT(*) > 1;
在上麵的命令中,我們使用group by並必須計算重複的記錄。
5.如何在SQL中連接兩個表?
連接用於根據兩個或多個表之間的相關列組合它們的行。
類型的連接:
•<聖rong>內連接−當兩個表都匹配時返回行。
•<聖rong>左連接−返回左表中的所有行,即使右表中沒有匹配項。
•<聖rong>正確的連接−返回右表中的所有行,即使左表中沒有匹配的行。
•<聖rong>全外連接−當其中一個表中有匹配時返回行。
•<聖rong>自我加入−用於將一個表與自身連接,就像這個表是兩個表一樣,在SQL語句中臨時重命名至少一個表。
•<聖rong>笛卡爾連接(交叉連接)−返回來自兩個或多個連接表的記錄集的笛卡爾積。
6.如何在SQL中使用BETWEEN ?
BETWEEN操作符檢查範圍內的屬性值。下麵是一個BETWEEN操作符的例子:
查詢工資在10000 - 20000之間的員工
有了這個命令,我們將能夠提取員工工資在10000到20000之間的所有記錄。
高級SQL麵試問題
1.SQL的子集是什麼?
a. DDL(數據定義語言):用於定義由CREATE、ALTER、DROP等命令組成的數據結構。
b. DML(數據操作語言):用於操作數據庫中已經存在的數據,命令如SELECT, UPDATE, INSERT
c. DCL(數據控製語言):用於控製對數據庫中數據的訪問,如GRANT、REVOKE等命令
2.SQL中CHAR和VARCHAR2數據類型的區別?
CHAR用於存儲定長字符串,VARCHAR2用於存儲變長字符串
3.如何使用列別名對列進行排序?
通過使用ORDER By中的列別名而不是where子句進行排序
4.COALESCE()和ISNULL()的區別?
COALESCE()接受兩個或多個參數,一個可以應用兩個或更多個參數,但它隻返回第一個非NULL參數。
ISNULL()隻接受2個參數。
檢查第一個參數是否為NULL值,如果為NULL則返回第二個參數,否則返回第一個參數。
5.SQL中的“觸發器”是什麼?
觸發器允許您在對特定表運行插入、更新或刪除命令時執行一批SQL代碼,因為觸發器據說是每當給出插入、更新或刪除等命令時執行的一組操作。
6.寫一個查詢來顯示員工的詳細信息和年齡?
SELECT * DATEDIFF(yy, dob, getdate())作為雇員的年齡
7.寫一個查詢來顯示員工的詳細信息和年齡?
從雇員中選擇SUM(工資)
8.編寫一個SQL查詢,從名為employee_table的表中獲取雇員的第三個最高工資。
SELECT TOP 1 salary FROM (SELECT employee_table ORDER BY salary DESC) AS emp ORDER BY salary ASC
9.什麼是集合函數和標量函數?
聚合函數用於計算數學計算並返回單個值。這可以從表中的列計算出來。標量函數根據輸入值返回單個值。
——示例。Aggregate - max(), count -相對於numeric進行計算。Scalar - UCASE(), NOW() -根據字符串計算。
10.什麼是死鎖?
這是一種不希望出現的情況,即兩個或多個事務無限期地等待另一個事務釋放鎖。
11.用例子解釋左外連接?
如果希望從左表(第一個表)獲取所有記錄,而隻匹配從第二個表獲取的記錄,則左外連接非常有用。不匹配的記錄是空記錄。示例:使用“+”操作符左外部連接選擇t1.col1,t2.col2....t ' n 'col“n”。。where t1.col=t2.col(+);
12.什麼是SQL注入?
SQL注入是一種代碼注入技術,用於入侵數據驅動的應用程序
13.什麼是UNION操作符?
UNION操作符通過刪除重複行來合並兩個或多個Select語句的結果。SELECT語句中的列和數據類型必須相同。
14.解釋SQL限製嗎?
SQL的約束用於指定表中的數據類型規則。可以在創建和更改表時指定它們。下麵是SQL中的約束:NOT NULL CHECK DEFAULT唯一主鍵外鍵
15.什麼是ALIAS命令?
這個命令為表或列提供另一個名稱。它可以在使用“as”關鍵字的SQL查詢的WHERE子句中使用。
16.什麼是團體功能?我們為什麼需要它們?
組函數處理一組行,每個組返回一個結果。常用的群函數有AVG, MAX, MIN, SUM, VARIANCE, COUNT
17.如何執行動態SQL ?
- 通過執行帶有參數的查詢
- 通過使用EXEC
- 通過使用sp_executesql
18.NVL()函數的用法是什麼?
此函數用於將NULL值轉換為另一個值。
19.寫一個查詢顯示屬於ECE部門的員工詳細信息?
SELECT EmpNo, EmpName, Salary FROM employee WHERE deptNo in (SELECT deptNo FROM dept WHERE deptName = ' ECE ')
20.#temp表和@table變量之間的主要區別是什麼?
1.SQL server可以在#temp表上創建列統計信息。
2.可以在#temp表上創建索引
3.@table變量被存儲在內存中,直到某個閾值
21.條款是什麼
SQL子句的定義是通過向查詢提供條件來限製結果集。這通常從整個記錄集中過濾一些行。示例-具有WHERE條件的查詢
22.什麼是遞歸存儲過程?
一個存儲過程,它自己調用,直到達到某個邊界條件為止。這個遞歸函數或過程可以幫助程序員多次使用同一組代碼。
23.什麼是模式?
模式是數據庫中針對特定用戶/所有者的數據庫對象的集合。對象可以是表、視圖、索引等。
24.BCP命令做什麼?
大容量複製是一種實用工具或工具,可將數據從表導出/導入到文件中,反之亦然。
25.什麼是交叉連接?
在SQL交叉連接中,兩個表的每一行的組合都包含在結果集中。這也叫做叉乘集。例如,如果表A有10行,表B有20行,如果SQL語句中有NOWHERE子句,結果集將有10 * 20 = 200行。
26.在模式匹配查詢中使用哪個操作符?
LIKE算子用於模式匹配,可作為- 1使用。% -匹配零個或多個字符。2._(下劃線)-精確匹配一個字符。
27.寫一個SQL查詢來獲得當前的日期?
選擇CURDATE ();
28.在SQL中說明案例操作函數?
1.LOWER:將所有字符轉換為小寫。
2.UPPER:將所有字符轉換為大寫。
3.INITCAP:將每個單詞的初始字符轉換為大寫
29.如何向現有表添加列?
ADD(性別,男,女)
30.定義鎖升級?
查詢首先使用最小行級別的最低級別鎖。當鎖定的行太多時,鎖定將升級為範圍鎖或頁鎖。如果鎖定的頁麵太多,則可能升級為表鎖定。
31.如何在SQL Server表內存儲視頻?
通過使用SQL Server 2008中引入的FILESTREAM數據類型。
32.說明SQL SELECT?
SQL SELECT子句的順序是:SELECT, FROM, WHERE, GROUP BY, HAVING, Order BY。隻有SELECT和FROM子句是必需的。
33.IN和EXISTS的區別是什麼?
:適用於列表結果集不適用於產生多列虛擬表的子查詢比較結果列表中的每個值。
存在:Works on Virtual表用於相互關聯的查詢,當找到匹配時退出比較
34.如何將數據從一個表複製到另一個表?
INSERT INTO table2 (column1, column2, column3,…)
35.列出確保處理數據庫事務的ACID屬性
ACID(原子性、一致性、隔離性、持久性)是一組保證數據庫事務得到可靠處理的屬性。
36.如果員工表有10條記錄,那麼下麵的Query的輸出是什麼?
從員工中回滾SELECT *
當在事務中執行TRUNCATE時,該查詢將返回10條記錄。TRUNCATE本身不保存日誌,但是BEGIN TRANSACTION跟蹤TRUNCATE命令。
37.存儲過程是什麼意思?我們如何使用它?
存儲過程是一組SQL語句的集合,可作為訪問數據庫的函數使用。我們可以在使用它之前創建這些存儲過程,並通過向它應用一些條件邏輯在需要的地方執行它們。存儲過程還用於減少網絡流量和提高性能。
38.GRANT命令做什麼?
該命令用於向具有SQL權限的管理員以外的用戶提供數據庫訪問權限。
39.第一範式是做什麼的?
第一標準表單(1NF):它從表中刪除所有重複的列。它為相關數據創建一個表,並標識惟一的列值。
40.如何向表中添加e條記錄?
INSERT語法用於在表中添加一條記錄。INSERT into table_name VALUES (value1, value2..);
41.mysql中有哪些不同的表?
MYSQL中有5個表。
1.MyISAM
2.堆
3.合並
4.為人DB
5.ISAM
42.什麼是MySQL中的BLOB和TEXT ?
BLOB代表大型二進製對象。它用於保存可變數量的數據。TEXT是一個不區分大小寫的BLOB。TEXT值是非二進製字符串(字符串)。
43.mysql_close()有什麼用?
Mysql_close()不能用來關閉持久連接。盡管它可以用來關閉由mysql_connect()打開的連接。
44.怎麼從25號開始還一百本書?
SELECT book_titile FROM books LIMIT 25,100;
45.如何選擇電話號碼為NULL的所有用戶?
SELECT user_name FROM users WHERE ISNULL(user_phonenumber);
46.如何在mysql中運行批處理模式?
SELECT user_name FROM users WHERE ISNULL(user_phonenumber);
47.編寫一個SQL查詢來顯示表中第二高的工資。
如果工資不存在(從員工中選擇最大(工資))
48.編寫一個SQL查詢,從一個表中獲取三個最高工資。
SELECT count(distinct Salary) from worker b WHERE a.Salary <= b.Salary) order by a.Salary desc;
49.NOW()和CURRENT_DATE()有什麼區別?
NOW()命令用於以小時、分、秒顯示當前年、月、日。CURRENT_DATE()隻顯示當前的年、月和日期。
50.如何在Unix和MySQL時間戳之間轉換?
UNIX_TIMESTAMP是將MySQL時間戳轉換為Unix時間戳的命令。FROM_UNIXTIME是將Unix時間戳轉換為MySQL時間戳的命令。
51.什麼是非標準字符串類型?
以下是非標準字符串類型:
1.非常小的文本串
2.文本
3.簡單
4.量變
52.group by子句是用來幹什麼的?
group by子句組合了在特定字段或任何字段組中具有相同值的所有記錄。
53.如果沒有max函數,如何得到最後一個id ?
SELECT ID from table order by ID desc limit
54.編寫一個SQL查詢,隻從表中獲取偶數行。
使用相同的Row_Number(),並檢查餘數除以2時為0- SELECT E.EmpId, E. project, E. salary FROM (SELECT *, Row_Number() OVER(ORDER by EmpId) AS RowNumber FROM EmployeeSalary) E WHERE E.RowNumber % 2 = 0
55.編寫一個SQL查詢,用從另一個表複製的數據和結構創建一個新表。
使用SELECT INTO命令——SELECT * INTO newTable FROM EmployeeDetails;
56.排序靈敏度有哪些不同類型?
區分大小寫:A和A被區別對待。重音敏感度:a和á被區別對待。假名敏感度:日本假名字符平假名和片假名被區別對待。寬度敏感性:用單字節(半寬)和雙字節(全寬)表示的相同字符將被區別對待。
57.寫一個查詢,找出數據之間的範圍?
在日常活動中,用戶需要找出某個範圍之間的數據。為了實現這一點,用戶需要使用Between..and操作符或大於和小於操作符。
查詢1:使用Between..和運算符
從工資在25000到50000之間的雇員中選擇*
查詢2:使用運算符(大於和小於)
查詢工資>= 25000且工資<= 50000的員工
58.如何計算表的行數而不使用計數函數?
有這麼多非常重要的係統表。使用係統表用戶可以計算表中的行數。Select table_name, num_rows from user_tables where table_name= ' Employee ';
59.下麵的查詢有什麼問題?查詢工資<> 6000的員工
下麵的查詢不會獲取工資為6000的記錄,但也會跳過帶有NULL的記錄。
60.下麵的語句會執行嗎?如果是,將輸出什麼?Select null +1 Select null + ' 1 '
是的,沒有錯誤。輸出將是NULL。對NULL執行任何操作都將得到NULL結果。
61.SQL和PL / SQL
比較的基礎 | SQL | PL / SQL |
基本 | 在SQL中,您可以一次執行單個查詢或命令。 | 在PL/SQL中,你可以一次執行一個代碼塊。 |
完整的形式 | 結構化查詢語言 | 過程語言,SQL的擴展。 |
目的 | 它就像要顯示的數據源。 | 它是一種創建應用程序的語言,該應用程序顯示SQL獲取的數據。 |
寫 | 在SQL中,您可以使用DDL、DML語句編寫查詢和命令。 | 在PL/SQL中,你可以編寫包含過程、函數、包或變量等的代碼塊。 |
使用 | 使用SQL,您可以檢索、修改、添加、刪除或操作數據庫中的數據。 | 使用PL/SQL,可以創建應用程序或服務器頁麵,以適當的格式顯示從SQL中獲得的信息。 |
嵌入 | 可以在PL/SQL中嵌入SQL語句。 | 不能在SQL中嵌入PL/SQL |
62.SQL有vs where
美國沒有。 | Where子句 | 有條款 |
1 | WHERE子句指定由查詢選擇的單個記錄必須滿足的條件。它可以在沒有GROUP by子句的情況下使用 | HAVING子句不能在沒有GROUP BY子句的情況下使用 |
2 | WHERE子句在分組之前選擇行 | HAVING子句在分組後選擇行 |
3. | WHERE子句不能包含聚合函數 | HAVING子句可以包含聚合函數 |
4 | WHERE子句用於對SELECT語句和單行函數施加條件,在GROUP BY子句之前使用 | HAVING子句用於對GROUP Function施加條件,在查詢中的GROUP BY子句之後使用 |
5 | SELECT Column,AVG(Column_nmae)FROM Table_name WHERE Column > value GROUP BY Column_nmae | SELECT Columnq, AVG(Coulmn_nmae)FROM Table_name WHERE Column > value GROUP BY Column_nmae column_name>或 |
63.NoSQL vs SQL
SQL數據庫 | NoSQL數據庫 | |
數據存儲模型 | 具有固定行和列的表 | 文檔:JSON文檔,鍵值:鍵值對,寬列:有行和動態列的表,圖:節點和邊 |
發展曆史 | 開發於20世紀70年代,專注於減少數據重複 | 開發於2000年代後期,主要關注於擴展和允許由敏捷而且DevOps實踐。 |
例子 | Oracle、MySQL、Microsoft SQL Server等PostgreSQL | 文檔:MongoDB和CouchDB,鍵值:Redis和DynamoDB,寬列:卡珊德拉和HBase,圖:Neo4j和Amazon Neptune |
主要目的 | 通用 | 文檔:通用,鍵值:大量數據,具有簡單的查找查詢,寬列:大量數據,具有可預測的查詢模式,圖:分析和遍曆連接數據之間的關係 |
模式 | 剛性 | 靈活的 |
擴展 | 垂直(使用更大的服務器進行擴展) | 水平(跨商品服務器向外擴展) |
多個記錄ACID事務 | 支持 | 大多數不支持多記錄ACID事務。然而,有些組織MongoDB-do。 |
連接 | 通常需要 | 通常不需要 |
數據到對象映射 | 需要ORM(對象-關係映射) | 許多不需要orm。MongoDB文檔直接映射到大多數流行編程語言中的數據結構。 |
64.SQL vs TSQL
SQL | TSQL |
一種用於編程的領域特定語言,設計用於管理關係數據庫管理係統中保存的數據 | 微軟SQL Server RDBMS的專有版本 |
結構化查詢語言 | 代表事務結構化查詢語言 |
RDBMS中管理數據的查詢語言 | 在MS SQL Server上使用的SQL的擴展 |
由IDM | 由微軟開發的 |
將SQL嵌入TSQL是可能的 | 將TSQL嵌入SQL是不可能的 |
幫助使用簡單查詢處理和分析數據 | 幫助向應用程序中添加業務邏輯 |
65.MySQL vs SQL Server
SQL Server | MySQL服務器 |
關係數據庫管理係統 | 開源關係數據庫管理係統 |
由微軟開發的 | 由甲骨文 |
支持多種語言 | 隻提供英文版本 |
支持Windows,Linux和容器 | 支持Windows、Linux和Mac |
商業 | 開源 |
用c++編程 | 在C編程和c++ |
兼容Kubernetes、Apache Spark和Hadoop分布式文件係統 | 使用Kubernetes、Apache Spark和Hadoop分布式文件係統有困難嗎 |
MongoDB vs SQL
MongoDB | MySQL |
當您需要具有自動、快速和即時數據恢複功能的高可用性數據時 | 如果您剛剛開始,數據庫不打算擴展,MYSQL將幫助您進行簡單且低維護的設置 |
在未來,如果你想發展壯大,MongoDB有內置的分片解決方案 | 如果你想在有限的預算下獲得高績效 |
如果您有一個不穩定的模式,並且希望減少模式遷移成本 | 如果你有固定的模式和數據結構不會像維基百科那樣隨時間而改變 |
如果您沒有數據庫管理員 | 如果高交易率我將是你的要求 |
如果大多數服務都是基於雲的,那麼MongoDB最適合您 | 如果數據安全是最優先考慮的,MySQL是最合適的DBMS |
SQL Server麵試問題
1.什麼是SQL server?
自從1989年由微軟公司發布以來,SQL server一直是最受歡迎的數據庫管理產品之一。該產品用於跨行業存儲和處理大量數據。它主要用於存儲和處理建立在數據關係模型上的數據。
SQL Server被廣泛用於數據分析和數據擴展。SQL Server可以與大數據工具結合使用,例如Hadoop.
SQL Server可用於處理來自各種數據源的數據,如Excel、Table、。net Framework應用程序等。
2.如何安裝SQL Server
1.請單擊下麵的SQL Server正式發布鏈接訪問最新版本:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
2.選擇要安裝的SQL Server版本類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
3.單擊Download Now按鈕。
4.將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
5.單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server。
6.安裝完成後,如果需要,請重新啟動係統,並從START菜單啟動SQL Server Management Studio應用程序。
3.如何在SQL Server中創建存儲過程
存儲過程隻不過是一個經常使用的SQL查詢。SELECT查詢等查詢通常用於在數據庫中多次檢索一組信息,可以將其保存為存儲過程。當調用存儲過程時,執行存儲過程中的SQL查詢保存。
創建Stored Proc的語法:
創建過程processre_name為sql_query(在這裏給出您經常使用的查詢)
存儲過程可以是用戶定義的,也可以是內置的。可以將各種參數傳遞到存儲過程。
4.如何安裝SQL Server 2008?
- 點擊下麵的SQL Server正式發布鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標並輸入- SQL Server 2008下載
- 單擊結果鏈接下載並保存SQL Server 2008。
- 選擇要安裝的SQL Server版本的類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
- 單擊Download Now按鈕。
- 將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
- 單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server。
- 安裝完成後,如果需要,請重新啟動係統,並啟動SQL Server Management Studio應用程序。
5.<聖rong>如何安裝SQL Server 2017?
- 點擊下麵的SQL Server正式發布鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標,輸入- SQL Server 2017下載
- 單擊結果鏈接下載並保存SQL Server 2017。
- 選擇要安裝的SQL Server版本的類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
- 單擊Download Now按鈕。
- 將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
- 單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server。
- 安裝完成後,如果需要,請重新啟動係統,並從START菜單啟動SQL Server Management Studio應用程序。
6.如何恢複SQL Server中的數據庫
啟動SQL Server Management Studio應用程序,並從對象資源管理器窗口窗格中,右鍵單擊Databases並單擊Restore。這將自動恢複數據庫。
7.如何安裝SQL Server 2014?
- 點擊下麵的SQL Server正式發布鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標,輸入- SQL Server 2014下載
- 單擊結果鏈接下載並保存SQL Server 2014。
- 選擇要安裝的SQL Server版本類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
- 單擊Download Now按鈕。
- 將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
- 單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server。
- 安裝完成後,如果需要,請重新啟動係統,並從START菜單啟動SQL Server Management Studio應用程序。
8.如何從SQL Server獲取連接字符串?
啟動SQL Server Management Studio。轉到需要連接字符串的數據庫。右鍵單擊數據庫並單擊Properties。在彈出的“屬性”窗口中,可以看到“連接字符串”屬性。
連接字符串有助於將數據庫連接到另一個登台數據庫或任何外部數據源。
9.如何安裝SQL Server 2012?
- 點擊下麵的SQL Server正式發布鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標,輸入- SQL Server 2012下載
- 單擊結果鏈接下載並保存SQL Server 2012。
- 選擇要安裝的SQL Server版本的類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
- 單擊Download Now按鈕。
- 將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
- 單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server。
- 安裝完成後,如果需要,請重新啟動係統,並從START菜單啟動SQL Server Management Studio應用程序。
10.什麼是SQL Server中的cte ?
cte是通用表表達式,用於創建可以從中檢索/使用數據的臨時結果表。帶有SELECT語句的CTE的標準語法是:
與結果
(選擇col1, col2, col3
從員工)
從結果中選擇col1, col2
cte也可以與Insert、Update或Delete語句一起使用。
以下是一些cte的例子:
查詢找到10個最高的工資。
與結果
(選擇不同的工資,dense_rank() /(按工資描述順序)作為員工的工資等級)
選擇的結果。工資從結果到結果。salaryrank = 10
查詢查找2nd最高的工資
其結果為
(選擇不同的工資,dense_rank()超過(按工資desc排序)作為員工的工資等級)
選擇的結果。工資從結果到結果。salaryrank = 2
通過這種方式,CTEs可以用來找出一個組織內第n高的工資。
11.如何修改SQL Server密碼
啟動SQL Server Management Studio。單擊要更改登錄密碼的數據庫連接。從顯示的選項中單擊Security。
單擊登錄並打開數據庫連接。輸入新的登錄密碼,然後單擊“OK”應用更改。
12.如何刪除SQL Server中重複的記錄
選擇COUNT(*)>1表中的重複記錄
添加delete語句以刪除重複的記錄。
用於查找表中重複記錄的示例查詢
(選擇col1, count(*)作為重複
從員工
GROUP BY COL1
計數(*)> 1)
13.如何卸載SQL Server
在Windows 10操作係統下,打開“開始”菜單,找到“SQL Server”。
右鍵單擊並選擇uninstall以卸載應用程序。
14.如何查看SQL Server版本
您可以運行以下查詢來查看您正在使用的SQL Server的當前版本。
選擇@@version;
15.如何在SQL Server中重命名列名
從“對象資源管理器”窗口窗格轉到列所在的表,並選擇“設計”。在“列名”下,選擇要重命名的名稱並輸入新名稱。轉到“文件”菜單並單擊“保存”。
16.SQL Server中的存儲過程是什麼?
存儲過程隻不過是一個經常使用的SQL查詢。SELECT查詢等查詢通常用於在數據庫中多次檢索一組信息,可以將其保存為存儲過程。當調用存儲過程時,執行存儲過程中的SQL查詢保存。
創建Stored Proc的語法:
創建過程processre_name為sql_query(在這裏給出您經常使用的查詢)
可以通過該命令執行存儲進程<聖rong>Exec Procedure_Name;
17.如何在SQL Server中創建數據庫
安裝所需版本的SQL Server後,創建和維護新數據庫就很容易了。
- 啟動SQL Server Management Studio
- 在對象資源管理器窗口窗格中,右鍵單擊數據庫並選擇' New Database '
- 輸入數據庫名稱並單擊“Ok”。
- 瞧!您的新數據庫已經可以使用了。
18.什麼是SQL Server中的索引?
索引是數據庫對象,它有助於快速和更有效地檢索記錄。可以在表和視圖上創建列索引。通過將Column聲明為表/視圖中的索引,用戶可以通過執行索引快速訪問這些記錄。具有多個列的索引稱為聚集索引。
語法:
創建索引INDEX_NAME
在TABLE_NAME (COL1, COL2);
刪除索引的語法是drop Index INDEX_NAME;
眾所周知,索引可以提高SQL Select查詢的效率。
19.如何在SQL Server中創建表
表是數據庫中的基本存儲對象。一張桌子通常是由
行和列。下麵的語法可用於創建一個有3列的新表。
創建表TABLE_NAME (
COLUMN1數據類型,
COLUMN2數據類型,
COLUMN3數據類型
);
或者,您可以在對象資源管理器窗口窗格中右鍵單擊“表”,並選擇“新建->表”。
您還可以在創建表時定義Primary/ Foreign/ Check約束的類型。
20.如何連接SQL Server
- 從開始菜單啟動SQL Server Management Studio。
- 在下麵顯示的對話框中,選擇“服務器類型”作為數據庫引擎,並選擇“服務器名稱”作為膝上型電腦/桌麵係統的名稱。
- 選擇適當的身份驗證類型並單擊連接按鈕。
- 將建立一個安全連接,可用數據庫的列表將加載到對象資源管理器窗口窗格中。
21.如何刪除SQL Server中重複的行
選擇COUNT(*)>1表中的重複記錄
添加delete語句以刪除重複的記錄。
用於查找表中重複記錄的示例查詢
(選擇col1, count(*)作為重複
從員工
GROUP BY COL1
具有計數(*)> 1);
22.如何下載SQL Server
SQL Server最新版本的Express和Developer(開源版本)可以從微軟官方網站下載。鏈接如下,以供參考。
https://www.microsoft.com/en-in/sql-server/sql-server-downloads
23.<聖rong>如何連接SQL Server management studio到本地數據庫
- 從開始菜單啟動SQL Server Management Studio。
- 在下麵顯示的對話框中,選擇“服務器類型”作為數據庫引擎,並選擇“服務器名稱”作為膝上型電腦/桌麵係統的名稱,然後單擊連接按鈕。
- 選擇身份驗證為“Windows身份驗證”。
- 將建立一個安全連接,可用數據庫的列表將加載到對象資源管理器窗口窗格中。
24.如何在SQL Server中更改列名
從“對象資源管理器”窗口窗格中,轉到列所在的表,並選擇“設計”。在“列名”下,選擇要重命名的名稱並輸入新名稱。轉到“文件”菜單並單擊“保存”。
25.如何下載SQL Server 2014
- SQL Server的Express版和Developer版(免費版)都可以從微軟官方網站下載。鏈接如下,以供參考。
- 點擊下麵的鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標,輸入- SQL Server 2014下載
- 單擊結果鏈接下載並保存SQL Server 2014。
26.如何卸載SQL Server 2014
從“開始”菜單中,鍵入SQL Server。右鍵單擊應用程序並選擇uninstall從係統中卸載應用程序。如果需要,重新啟動係統,使更改受到影響。
27.如何在SQL server中查找服務器名稱
運行查詢SELECT @@version;以查找您正在使用的SQL Server的版本和名稱。<聖rong>
28.<聖rong>如何啟動SQL Server
從開始菜單啟動SQL Server Management Studio。使用Windows身份驗證登錄。在對象資源管理器窗口窗格中,可以查看數據庫和相應對象的列表。
29.在SQL Server中是什麼情況?
用SQL中的語句執行許多條件,並在滿足其中一個條件時返回一個值。如果When語句中沒有滿足任何條件,則返回Else語句中提到的值。
語法:
Case當condition1 then result1當condition2 then result2 else結果結束;
查詢樣例:
在加拿大有多少個總公司/分支機構
選擇
sum (
情況下
when region_id >= 5 AND region_id <= 7 then
1
其他的
0
結束)作為加拿大
從company_regions;
嵌套的CASE語句:
選擇
SUM (
情況下
WHEN rental_rate = 0.99 THEN
1
其他的
0
結束
),“質量”,
SUM (
情況下
WHEN rental_rate = 2.99 THEN
1
其他的
0
結束
),“經濟”,
SUM (
情況下
WHEN rental_rate = 4.99 THEN
1
其他的
0
結束
)作為“奢侈品”
從
電影;
30.如何安裝SQL Server management studio
啟動穀歌,在搜索工具欄中,鍵入SQL Server Management Studio ' download。
進入路由網站,點擊鏈接下載。下載完成後,打開.exe文件安裝該文件的內容。安裝完成後,根據需要刷新或重新啟動係統。
或者,一旦SQL Server安裝並啟動,它將提示用戶啟動sqserver Management Studio的選項。
31.如何在SQL Server中編寫存儲過程
存儲過程隻不過是一個經常使用的SQL查詢。SELECT查詢等查詢通常用於在數據庫中多次檢索一組信息,可以將其保存為存儲過程。當調用存儲過程時,執行存儲過程中的SQL查詢保存。
創建Stored Proc的語法:
創建過程processre_name為sql_query(在這裏給出您經常使用的查詢)
可以通過該命令執行存儲進程<聖rong>Exec Procedure_Name;
32.什麼是SQL Server中的觸發器?
SQL Server中的觸發器是在事件發生之後或之前執行的自動函數。
例如:在員工晉升到D1級別後,觸發將工資更新到40000美元<聖rong>.它也被稱為一種存儲過程。觸發器的類型AFTER或BEFORE是在觸發器本身的語法中定義的。
33.如何打開SQL Server
從開始菜單啟動SQL Server Management Studio。使用Windows身份驗證登錄。在對象資源管理器窗口窗格中,可以查看數據庫和相應對象的列表。
34.如何連接SQL Server
連接到SQL Server最常見的方法是使用Windows身份驗證。
確保選擇服務器名稱作為桌麵或膝上型電腦係統名稱。
35.什麼是SQL Server中的複製?
複製數據庫節點是防止任何數據完全丟失的最常用方法。當複製/獲取數據庫的副本時,可以跨數據庫使用它進行數據重用和同步。除了數據備份的主要動機外,複製數據還用於大數據項目中的數據分析。
36.如何打開SQL Server配置管理器
單擊“開始”菜單並選擇“所有程序”。選擇“Microsoft SQL Server”,選擇“配置工具”,再選擇“SQL Server配置工具”。在其中,選擇SQL Server配置管理器。
37.SQL Server中的排序規則是什麼?
排序規則是SQL Server上的一組預定義規則,它在數據庫級和服務器級定義字符數據的編碼規則。<聖rong>排序規則也可以用於元數據。
38.如何使用SQL Server
SQL Server用於檢索和處理建立在關係模型上的各種數據。
可以對數據采取的一些常見操作有CREATE、DELETE、INSERT、UPDATE、SELECT、REVOKE等。
SQL Server還可以用於從不同數據源導入和導出數據。SQL Server還可以使用連接字符串連接到其他各種數據庫/ . net框架。
SQL Server還可以與Hadoop等大數據工具結合使用。
39.什麼是SQL Server中的函數?
函數是預先編寫的代碼,它返回一個值,幫助用戶完成與查看、操作和處理數據有關的特定任務。
幾個函數的例子有:
聚合函數:
MIN()-返回最小值
MAX()-返回最大值
AVG()-返回平均值
COUNT ()
字符串函數:
合並()
把()
CONCAT ()
SUBSTRING ()
日期函數:
獲取當前日期()
返回()
DATEDIFF ()
函數有許多類型,如聚合函數、日期函數、字符串函數、數學函數等。
40.如何找到第n個最高的薪水在SQL Server沒有使用子查詢
查詢十大最高工資。用於升級b10波段。
與結果
(選擇不同的工資,dense_rank()超過(按工資desc排序)作為員工的工資等級)
選擇的結果。工資從結果到結果。salaryrank = 10
查詢查找2nd最高的工資
其結果為
(選擇不同的工資,dense_rank()超過(按工資desc排序)作為員工的工資等級)
選擇的結果。工資從結果到結果。salaryrank = 2
這樣,通過替換salaryrank值,我們可以找到任何組織中第n高的工資。
41.如何在Windows 10下安裝SQL Server
- 點擊下麵的SQL Server正式發布鏈接:https://www.microsoft.com/en-in/sql-server/sql-server-downloads
- 點擊搜索圖標,輸入- SQL Server 2012下載
- 單擊結果鏈接下載並保存SQL Server 2012。
- 選擇要安裝的SQL Server版本的類型。SQL Server可以在雲平台上使用,也可以作為本地計算機係統中的開源版本(Express或Developer)使用。
- 單擊Download Now按鈕。
- 將.exe文件保存到係統中。右鍵單擊.exe文件並單擊Open。
- 單擊“Yes”允許在您的係統上進行更改,並安裝SQL Server
42.如何在SQL Server中創建臨時表
臨時表可用於從原始表中保留結構和數據的一個子集。<聖rong>
語法:
Select col1, col2 into temptable1 from origtable;
臨時表不占用任何物理內存,可用於更快地檢索數據。
43.SQL Server中的模式是什麼?
模式是數據庫的邏輯可視化表示。它建立和定義數據庫中各種實體之間的關係。它描述了應用於數據庫的Constraints的類型。它還解釋了所使用的數據類型。它也可以用於表和視圖。
有不同類型的模式。其中最流行的是星星模式和雪花模式。星形模式是實體以星形表示的模式,雪花模式是實體以雪花形狀表示的模式。
模式構成了任何數據庫設計的基礎。
SQL麵試的問題到此結束。很高興看到你現在有更好的準備去麵對麵試了。
現在讓我們來看看最常見的麵試問題在這裏。
SQL中的常見問題
1.如何準備SQL麵試?
網上有很多資源可以幫助你準備SQL麵試。你可以通過簡短的教程和免費的SQL在線課程。: Great Learningbeplay2018官网 Academy上的SQL基礎知識)來修改您的SQL知識。你也可以通過練習項目來幫助你學習這門語言的實際方麵。最後,有許多像這樣的博客列出了麵試官可能會問的所有問題。
2.SQL的5個基本命令是什麼?
五個基本的SQL命令是:
- 數據定義語言(DDL)
- 數據操作語言(DML)
- 數據控製語言(DCL)
- 事務控製語言
- 數據查詢語言(DQL)
3.SQL的基本技能是什麼?
SQL是一個廣泛的主題,有很多東西需要學習。但是SQL專業人員應該知道的最基本的技能是:
- 如何構建數據庫
- 管理數據庫
- 編寫SQL語句和子句
- 了解流行的數據庫係統,如MySQL
- 的工作知識PHP
- SQL數據分析
- 使用WAMP和SQL創建數據庫
4.如何練習SQL?
有一些在線平台可以幫助你練習SQL,如SQL Fiddle, SQLZOO, W3resource, Oracle LiveSQL, DB-Fiddle, Coding ground, GitHub和其他。
5.我可以在哪裏練習SQL問題?
有一些在線平台可以幫助你練習SQL,如SQL Fiddle, SQLZOO, W3resource, Oracle LiveSQL, DB-Fiddle, Coding ground, GitHub和其他。
你也可以參考網上的文章和博客,它們列出了最重要的SQL麵試準備問題。
6.最常見的SQL命令是什麼?
一些最常見的SQL命令是:
- 創建數據庫
- 修改數據庫
- 創建表
- ALTER TABLE
- 刪除表
- 創建索引
- 指數下降
7.SQL命令是如何分類的?
SQL命令分為四類,即
- 數據定義語言(DDL)
- 數據查詢語言(DQL)
- 數據操作語言(DML)
- 數據控製語言(DCL)
8.什麼是基本的SQL命令?
基本的SQL命令有:
- 創建數據庫
- 修改數據庫
- 創建表
- ALTER TABLE
- 刪除表
- 創建索引
- 指數下降
9.SQL編碼嗎?
是的,SQL是一種編碼語言/編程語言,屬於特定於領域的編程語言的範疇。它用於訪問關係數據庫,如MySQL。
10.什麼是SQL示例?
SQL幫助您更新、刪除和請求數據庫中的信息。SQL的一些例子是以下語句的形式:
- 選擇
- 插入
- 更新
- 刪除
- 創建數據庫
- 修改數據庫
11.SQL代碼是用來幹什麼的?
SQL代碼用於訪問數據庫並與數據庫通信。它幫助執行一些任務,例如從數據庫中更新和檢索數據。
想知道在哪裏可以免費學到人們夢寐以求的技能嗎?查閱有關課程beplay2018官网很好的學習學院.注冊任何課程,學習所需的技能,並獲得免費證書。快點!