天天看點

mysql中grade字段降序排列,MySQL面試題

闡述JDBC操作資料庫的步驟

建立資料庫連接配接connection

書寫sql語句

執行對象PrepareStatement

執行sql語句

如果是查詢操作,擷取結果集ResultSet,處理結果集

講一下資料庫的左連接配接右連接配接 ?

左連接配接又稱為左外連接配接,是外連接配接中的一種,他的關鍵字是 left join on/left outter join on

在兩個表的查詢中,左連接配接時左表的記錄會全部表示出來,而右表隻會顯示符合搜尋條件的記錄,右表記錄不足的地方均為NULL

右連接配接關鍵字是right join on/right outter join on,查詢結果和左連接配接相反

資料庫三範式

一般指在利用關系型資料庫建表時普遍需要遵循的三個規範

第一範式要求建表時要保證列的原子性,也就是一個字段隻存儲一項資訊,而不能是集合,數組等非原子資料項

(例如,在個人資訊表中的電話屬性,可能是座機号,也可能是手機号,具有可分割性,是以不符合1NF)

第二範式在第一範式的基礎上要求所有字段都依賴于主鍵,不存在對主鍵的部分依賴(例如一個表中有學号,課程,課程學分,成績四個屬性,其中所有非主鍵列

(成績,課程學分)都依賴于主鍵 (學号,課程)。 但是還存在另外一個依賴:(課程)->(課程學分)。這樣非主鍵列 ‘課程學分‘ 依賴于部分主鍵列 ’課程‘,不符合第二範式。)

第三範式在第二範式的基礎上要求每列都與主鍵有直接關系,不存在傳遞依賴

(成績依賴于姓名(非主鍵),姓名依賴于學号(主鍵),這樣成績就傳遞依賴于學号,不符合第三範式)

資料庫查詢 模糊查詢張%

select * from t where name like '張%';

資料庫了解多少,寫一個更新資料庫中記錄的SQL語句,表你自己定

update t set name = "001" where id = 10;

資料庫的增、删、改、查,去重,左右連接配接?

insert into t values(1,'JJ','math');

delete from t where id = 1;

update t set name = 'xx' where id = 1;

select * from t where id = 1;

去重

select distinct name from t;

左右連接配接

select * from a left join b on a.id = b.id;

select * from a right join b on a.id = b.id;

索引的概念、如何去優化?索引提到了B樹

資料庫索引底層原理與優化,面試重點考點!!!(強烈建議看一看,點選)

索引是提高查詢資料速度的資料結構

索引的優化就是查詢算法上的優化-BTree索引

mysql支援的索引類型有BTree索引,哈希索引等

對于Btree索引的優化政策:

最左字首比對原則

對 where,on,group by,order by 中出現的列使用索引

對較小的資料列使用索引

盡量的擴充索引,不要建立索引

不要過多建立索引(會影響插入、删除資料的速度)

什麼是資料庫的表連接配接?具體說一下

表與表之間根據關聯字段"連接配接"(join)在一起,組合成一個資料集。

内連接配接(inner join)交集

外連接配接(outer join)交集的補集

左外連接配接(left outer join)

右外連接配接(right outer join)

左連接配接(left join)

右連接配接(right join)

全連接配接(full join)

都是字面意思,了解一下就行了

資料庫中的索引原理索引失效的場景?

列與列對比(兩個列math,English都單獨建立了索引,查詢時條件為math = English)

存在Null值條件(select * from Student where id is not null;)

Like 通配符 :使用前置通配符

條件上包括函數:

select * from test where upper(name)='SUNYANG'; --不是對索引列計算

select * from test where name=upper('sunyang');--會走索引

資料類型的轉換:id為number類型,select * from sunyang where;

謂詞運算:對索引列進行函數運算

如何快速的清空資料庫中的一個表,但是不可以改變表的結構,還可以繼續往裡面寫資料?

truncate table table_name;

delete * from table_name;

truncate、delete 清空表資料的差別 :

truncate 是整體删除 (速度較快),delete是逐條删除 (速度較慢

truncate 不寫伺服器 log,delete 寫伺服器 log,也就是 truncate 效率比 delete高的原因

索引的建立?為一個已經存在的表添加主鍵索引?

create index index1_id on Student(id);

MySQL語句查詢成績大于60分的學生的資訊

select * from t where grade > 60;

查詢平均成績大于60分的學生的資訊,并按降序排列

select 8 from t where avg(grade) > 60 order by grade desc;

講一下聯合主鍵和符合主鍵

聯合主鍵:其實就是一張中間表,在多張表之間,需要每個表中的主鍵組成聯合主鍵,這樣就可以查到每個表中的每個記錄,聯合主鍵不能為空,否則違背主鍵唯一性原則

複合主鍵:當隻有一個字段作為主鍵是,會有重複的情況,這是需要兩個(以上)字段作為共同主鍵

若表已存在,alter table t add primary key(id)

若表中已有主鍵,先alter drop,再建立

忘記資料庫密碼用什麼指令查詢

bin>net stop mysql//進入 mysql 的 bin 目錄下,打開 cmd ,關閉 mysql 資料庫。

bin>mysqld --skip-grant-tables//啟動 MySQL 服務的時候跳過權限表認證

bin>mysql

mysql>use mysql

mysql>update user set password=password("123456") where user="root";

mysql>flush privileges;//重新整理權限

mysql>quit

bin>mysqladmin -u root -p shutdown//修改root密碼後需要執行該語句

bin>net start mysql//重新開機

MySQL事務的四大特性(ACID)

原子性

一緻性

隔離性

持久性

事物隔離級别

讀已送出

讀未送出

可重複化

可串行化

事務隔離級别,事務操作,ACID詳解(面試重點,強烈建議看一看,點選)

什麼是死鎖,死鎖如何處理?

事務循環等待資料鎖,則會死鎖。

死鎖處理:預防死鎖協定,死鎖恢複機制