標籤:

sql語句面試問題?

SQL 語句 面試問哪些問題可以比較準確的反映出應聘者的開發水平


昨天自學了一下sql的基礎教程,sql是用來在sql資料庫中刪改查插排序表的一門語言。

正好做了筆記,寫的亂七八糟,將就看一下。

sql定義:sql是用語訪問和處理資料庫的標準的計算機語言

什麼是sql:

sql指結構化查詢語言

sql使我們有能力訪問資料庫

sql是一種ansi的標準計算機語言(ansi,美國國家標準化組織)

sql能做什麼?

面向資料庫執行查詢

可從資料庫取回數據

可在資料庫中插入新的記錄

可更新資料庫中的數據

可從資料庫刪除記錄

可創建新資料庫

可在資料庫中創建新表

可在資料庫中創建存儲過程

可在資料庫中創建視圖

可以設置表、存儲過程和視圖的許可權

sql是一種標準,是一門暗示的標準計算機語言,用來訪問和操作資料庫系統,可與資料庫系統協同工作,但不幸的是,存在很多不同版本的sql語言,而為了與暗示標準相兼容,它們必須以相似的方式來共同支持一些主要的關鍵詞

要創建發布資料庫中數據的網站,需要以下要素:rdbms資料庫程序,伺服器端腳本語言,sql,html/css

(rdbms:指的是關係型資料庫管理系統,是ql的基礎,是所有現代資料庫系統的基礎,rdbms中的數據存儲在被稱為表table的資料庫對象中,表是相關數據項的集合,由列和行組成)

語法:

資料庫表包含一個或多個表,每個表有一個名字標識,表包含數據記錄,表的名稱與標識名無關

sol語句select lastname from persons

sql對大小寫不敏感

分號:有些資料庫要求在每段語句末端使用分號,目的是分隔每條語句,這樣就可以在對伺服器的相同請求執行一條以上的語句

sql dml和ddl

sql可以分為兩個部分:數據操作語言dml和數據定義語言ddl

sql(結構化查詢語言)作用:是用於執行查詢的語法,也用於更新、插入、刪除記錄

查詢和更新構成dml

select-從資料庫表中獲取數據

updata-更新資料庫表中的數據

delete-從資料庫表中刪除數據

insert into-向資料庫插入數據

ddl讓我們有能力創建或刪除表格,我們可以定義索引(鍵),規定表之間的鏈接,以及施加表之間的約束

create database-創建新資料庫

alter database-修改資料庫

create table-創建新表

alter table-變更(改變)資料庫表

drop table-刪除表

create index-創建索引(搜索鍵)

drop index-刪除索引

關鍵詞select和select*

sql select語句用於從表中選取數據,結果存儲在一個結果表中(稱為結果集)表和數據表是兩個不同的表,區分開

sql select語法

select列名稱from表名稱,以及select from表名稱

select lastname,firstname from personss

結果是調出相應列的數據列

select*from persons

結果是調出所有列的快捷方式

注意select調出的是相對應的列,而select*調出的是所以列的快捷方式

在結果集(select-set)中導航

由於sql查詢程序獲得的結果存在一個結果集中,大多數資料庫軟體系統都允許使用變成函數在結果集中導航,比如Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。

類似這些編程函數不在sql的教程範圍之內,如果要學習,應該學習add教程和朴韓屏教程

關鍵詞select distinct(不同)意味查找不同的值

在表中,可能包含重複的值,有時僅僅希望看到不同的值,那麼這時候,select distinct就派上用場了

關鍵詞distinct用於返回唯一不同的值

語法:select distinct列名稱from表名稱

使用distinct關鍵詞:

select company from orders假設結果出現重複值,那麼

select distinct company from orders,這樣結果集中重複的數據只有有一次

關鍵詞where,where子句

語法:select列名稱from表名稱where列 +運算符+ 值

=,(不等於在某些版本的sql中,可以寫成!=),,&>=,比如,只希望選取居住在城市「beijing」中的人,需要在select語句中添加where子句

select*from persons where city="beijing"

注意引號的使用:大部分資料庫系統也接受雙引號,sql使用單引號來環繞文本值,如果是數值不能用引號

比如:

select*from persons where firstname="bush"

select*from persons where year&>1965

關鍵詞and和or,依舊是運用在子語句中

and和or可在where子語句中把兩個或多個條件結合起來

如果第一和第二條件都成立,則and運算符顯示一條記錄,(否則應該沒有)

如果第一和第二條件只有一個成立,則or運算符顯示一條記錄(如果兩個都成立或者沒有成立的應該不顯示,這應該定義是錯誤的)

實例

select*from persons where firstname="thomas" and lastname="carter"

select*from persons wherefirstname="thomas" or lastname"carter"

結合and和or

select*from persons where (firstname="thomas" or firstname="william")

and lastname="carter"

關鍵詞order(此處不可忽略desc)用語對結果集進行排序

order by 語句用語根據制定的列對結果集進行排序,並且是升序,而desc是降序

select company,ordernumber from orders order by company

select company,ordernumber from orders order by company,ordernumber

select company,ordernumber from orders order by company desc

select company,ordernumber from orders order by company desc ,ordernumber asc

注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。

關鍵詞insert into,insert into語句用於向表格中插入新的行

語法:

insert into表名稱values(值1,值2...)

insert into table_name(列1,列2...)values(值1,值2,...)

比如:

insert into persons values("gates","bill","xuanwumen10","beijing")

insert into persons(lastname,address)values("wilson","champs-elysees")

關鍵詞update,update語句用語修改表中的數據

語法:update 表名稱 set 列名稱=新植where列名稱=某值

更新某一行的某一列:

update person set firstname="fred"where lastname="wilson"

更新某一行的若干列:

update persons set address ="zhongshan23",city="nanjing"

where lastname="wilson"

關鍵詞delete,delete語句用語刪除表中的行

語法:delete from表名稱where 列名稱=值

刪除某一行:delete from persons where lastname="wilson"

刪除所有行,可以在不刪除表的情況下刪除所有行,這意味這表的結構、屬性和索引都是完整的

delete from table_name

delete*from table_name


無任何案例。基本的查詢 更新 刪除語句最起碼的吧 考驗技術實力的就是存儲過程 索引優化 ,我所接觸的就是存儲過程~其他調優什麼的


推薦閱讀:

如何自學SQL?
SQL 查詢按照家庭住址進行分組時,組內平均年齡小於50歲的組中成員的姓名和年齡?
索引列只要參與了計算, 查詢就會不走索引, 為什麼 MySQL 不對這種情況進行優化?
有什麼好的書籍了解sql執行細節?比如執行計劃之類的。
mysql表中查找和小於某個數的所有最前面的記錄?

TAG:SQL |