1
、一張表,裡面有
ID
自增主鍵,當
insert
了
17
條記錄之後,删除了第
15,16,17
條記錄,
再把
Mysql
重新開機,再
insert
一條記錄,這條記錄的
ID
是
18
還是
15
?
(1)
如果表的類型是
MyISAM
,那麼是
18
因為
MyISAM
表會把自增主鍵的最大
ID
記錄到資料檔案裡,重新開機
MySQL
自增主鍵的最大
ID
也不會丢失
(
2
)如果表的類型是
InnoDB
,那麼是
15
InnoDB
表隻是把自增主鍵的最大
ID
記錄到記憶體中,是以重新開機資料庫或者是對表進行
OPTIMIZE
操作,都會導緻最大
ID
丢失
2
、
Mysql
的技術特點是什麼?
Mysql
資料庫軟體是一個用戶端或伺服器系統,其中包括:支援各種用戶端程式和庫的多
線程
SQL
伺服器、不同的後端、廣泛的應用程式程式設計接口和管理工具。
3
、
Heap
表是什麼?
HEAP
表存在于記憶體中,用于臨時高速存儲。
BLOB
或
TEXT
字段是不允許的
隻能使用比較運算符
=
,
<
,
>
,
=>
,
= <
HEAP
表不支援
AUTO_INCREMENT
索引不可為
NULL
4
、
Mysql
伺服器預設端口是什麼?
Mysql
伺服器的預設端口是
3306
。
5
、與
Oracle
相比,
Mysql
有什麼優勢?
Mysql
是開源軟體,随時可用,無需付費。
Mysql
是便攜式的
帶有指令提示符的
GUI
。
使用
Mysql
查詢浏覽器支援管理
6
、如何區分
FLOAT
和
DOUBLE
?
以下是
FLOAT
和
DOUBLE
的差別:
浮點數以
8
位精度存儲在
FLOAT
中,并且有四個位元組。
浮點數存儲在
DOUBLE
中,精度為
18
位,有八個位元組。
7
、區分
CHAR_LENGTH
和
LENGTH
?
CHAR_LENGTH
是字元數,而
LENGTH
是位元組數。
Latin
字元的這兩個資料是相同的,但是對
于
Unicode
和其他編碼,它們是不同的。
8
、請簡潔描述
Mysql
中
InnoDB
支援的四種事務隔離級别名稱,以及逐級之間的差別?
SQL
标準定義的四個隔離級别為:
read uncommited
:讀到未送出資料
read committed
:髒讀,不可重複讀
repeatable read
:可重讀
serializable
:串行事物
9
、在
Mysql
中
ENUM
的用法是什麼?
ENUM
是一個字元串對象,用于指定一組預定義的值,并可在建立表時使用。
Create table size(name ENUM('Smail,'Medium','Large');
10
、如何定義
REGEXP
?
REGEXP
是模式比對,其中比對模式在搜尋值的任何位置。
11
、
CHAR
和
VARCHAR
的差別?
以下是
CHAR
和
VARCHAR
的差別:
CHAR
和
VARCHAR
類型在存儲和檢索方面有所不同
CHAR
列長度固定為建立表時聲明的長度,長度值範圍是
1
到
255
當
CHAR
值被存儲時,它們被用空格填充到特定長度,檢索
CHAR
值時需删除尾随空格。
12
、列的字元串類型可以是什麼?
字元串類型是:
SET
BLOB
ENUM
CHAR
TEXT
VARCHAR
13
、如何擷取目前的
Mysql
版本?
SELECT VERSION();
用于擷取目前
Mysql
的版本。
14
、
Mysql
中使用什麼存儲引擎?
存儲引擎稱為表類型,資料使用各種技術存儲在檔案中。
技術涉及:
Storage mechanism
Locking levels
Indexing
Capabilities and functions.
15
、
Mysql
驅動程式是什麼?
以下是
Mysql
中可用的驅動程式:
PHP
驅動程式
JDBC
驅動程式
ODBC
驅動程式
CWRAPPER
PYTHON
驅動程式
PERL
驅動程式
RUBY
驅動程式
CAP11PHP
驅動程式
Ado.net5.mxj
16
、
TIMESTAMP
在
UPDATE CURRENT_TIMESTAMP
資料類型上做什麼?
建立表時
TIMESTAMP
列用
Zero
更新。隻要表中的其他字段發生更改,
UPDATE
CURRENT_TIMESTAMP
修飾符就将時間戳字段更新為目前時間。
17
、主鍵和候選鍵有什麼差別?
表格的每一行都由主鍵唯一辨別
,
一個表隻有一個主鍵。
主鍵也是候選鍵。按照慣例,候選鍵可以被指定為主鍵,并且可以用于任何外鍵引用。
18
、如何使用
Unix shell
登入
Mysql
?
我們可以通過以下指令登入:
[mysql dir]/bin/mysql -h hostname -u
19
、
myisamchk
是用來做什麼的?
它用來壓縮
MyISAM
表,這減少了磁盤或記憶體使用。
20
、
MYSQL
資料庫伺服器性能分析的方法指令有哪些
?
21
、如何控制
HEAP
表的最大尺寸?
Heal
表的大小可通過稱為
max_heap_table_size
的
Mysql
配置變量來控制。
22
、
MyISAM Static
和
MyISAM Dynamic
有什麼差別?
在
MyISAM
Static
上的所有字段有固定寬度。動态
MyISAM
表将具有像
TEXT
,
BLOB
等字
段,以适應不同長度的資料類型。點選這裡有一套最全阿裡面試題總結。
MyISAM Static
在受損情況下更容易恢複。
23
、
federated
表是什麼?
federated
表,允許通路位于其他伺服器資料庫上的表。
24
、如果一個表有一列定義為
TIMESTAMP
,将發生什麼?
每當行被更改時,時間戳字段将擷取目前時間戳。
25
、列設定為
AUTO INCREMENT
時,如果在表中達到最大值,會發生什麼情況?
它會停止遞增,任何進一步的插入都将産生錯誤,因為密鑰已被使用。
26
、怎樣才能找出最後一次插入時配置設定了哪個自動增量?
LAST_INSERT_ID
将傳回由
Auto_increment
配置設定的最後一個值,并且不需要指定表名稱。
27
、你怎麼看到為表格定義的所有索引?
索引是通過以下方式為表格定義的:
SHOW INDEX FROM
28.
、
LIKE
聲明中的%和
_
是什麼意思?
%對應于
個或更多字元,
_
隻是
LIKE
語句中的一個字元。
29
、如何在
Unix
和
Mysql
時間戳之間進行轉換?
UNIX_TIMESTAMP
是從
Mysql
時間戳轉換為
Unix
時間戳的指令
FROM_UNIXTIME
是從
Unix
時間戳轉換為
Mysql
時間戳的指令
30
、列對比運算符是什麼?
在
SELECT
語句的列比較中使用
=
,
<>
,
<=
,
<
,
> =
,
>
,
<<
,
>>
,
<=>
,
AND
,
OR
或
LIKE
運
算符。
31
、我們如何得到受查詢影響的行數?
行數可以通過以下代碼獲得:
SELECT COUNT(user_id)FROM users;
32
、
Mysql
查詢是否區分大小寫?
不區分
SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;
所有這些例子都是一樣的,
Mysql
不區分大小寫。
33.
、
LIKE
和
REGEXP
操作有什麼差別?
LIKE
和
REGEXP
運算符用于表示
^
和%。
SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
34.
、
BLOB
和
TEXT
有什麼差別?
BLOB
是一個二進制對象,可以容納可變數量的資料。有四種類型的
BLOB -
TINYBLOB
BLOB
MEDIUMBLOB
和
LONGBLOB
它們隻能在所能容納價值的最大長度上有所不同。
TEXT
是一個不區分大小寫的
BLOB
。四種
TEXT
類型
TINYTEXT
TEXT
MEDIUMTEXT
和
LONGTEXT
它們對應于四種
BLOB
類型,并具有相同的最大長度和存儲要求。
BLOB
和
TEXT
類型之間的唯一差別在于對
BLOB
值進行排序和比較時區分大小寫,對
TEXT
值不區分大小寫。
35
、
mysql_fetch_array
和
mysql_fetch_object
的差別是什麼?
以下是
mysql_fetch_array
和
mysql_fetch_object
的差別:
mysql_fetch_array
()
-
将結果行作為關聯數組或來自資料庫的正常數組傳回。
mysql_fetch_object -
從資料庫傳回結果行作為對象。
36
、我們如何在
mysql
中運作批處理模式?
以下指令用于在批處理模式下運作:
mysql;
mysql mysql.out
37
、
MyISAM
表格将在哪裡存儲,并且還提供其存儲格式?
每個
MyISAM
表格以三種格式存儲在磁盤上:
·“
.frm
”檔案存儲表定義
·資料檔案具有“
.MYD
”(
MYData
)擴充名
索引檔案具有“
.MYI
”(
MYIndex
)擴充名
38.
、
Mysql
中有哪些不同的表格?
共有
5
種類型的表格:
MyISAM
Heap
Merge
INNODB
ISAM
MyISAM
是
Mysql
的預設存儲引擎。
39
、
ISAM
是什麼?
ISAM
簡稱為索引順序通路方法。它是由
IBM
開發的,用于在錄音帶等輔助存儲系統上存儲和
檢索資料。
40
、
InnoDB
是什麼?
lnnoDB
是一個由
Oracle
公司開發的
Innobase Oy
事務安全存儲引擎。
41
、
Mysql
如何優化
DISTINCT
?
DISTINCT
在所有列上轉換為
GROUP BY
,并與
ORDER BY
子句結合使用。
1
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
42
、如何輸入字元為十六進制數字?
如果想輸入字元為十六進制數字,可以輸入帶有單引号的十六進制數字和字首(
X
),或者
隻用(
Ox
)字首輸入十六進制數字。
如果表達式上下文是字元串,則十六進制數字串将自動轉換為字元串。
43
、如何顯示前
50
行?
在
Mysql
中,使用以下代碼查詢顯示前
50
行:
SELECT*FROM
LIMIT 0,50;
44
、可以使用多少列建立索引?
任何标準表最多可以建立
16
個索引列。
45
、
NOW
()和
CURRENT_DATE
()有什麼差別?
NOW
()指令用于顯示目前年份,月份,日期,小時,分鐘和秒。
CURRENT_DATE
()僅顯示目前年份,月份和日期。
46
、什麼樣的對象可以使用
CREATE
語句建立?
以下對象是使用
CREATE
語句建立的:
DATABASE
EVENT
FUNCTION
INDEX
PROCEDURE
TABLE
TRIGGER
USER
VIEW
47
、
Mysql
表中允許有多少個
TRIGGERS
?
在
Mysql
表中允許有六個觸發器,如下:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
48
、什麼是非标準字元串類型?
以下是非标準字元串類型:
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
49
、什麼是通用
SQL
函數?
CONCAT(A, B) -
連接配接兩個字元串值以建立單個字元串輸出。通常用于将兩個或多個字段合
并為一個字段。
FORMAT(X, D)-
格式化數字
X
到
D
有效數字。
CURRDATE(), CURRTIME()-
傳回目前日期或時間。
NOW
()
-
将目前日期和時間作為一個值傳回。
MONTH
(),
DAY
(),
YEAR
(),
WEEK
(),
WEEKDAY
()
-
從日期值中提取給定資料。
HOUR
(),
MINUTE
(),
SECOND
()
-
從時間值中提取給定資料。
DATEDIFF
(
A
,
B
)
-
确定兩個日期之間的差異,通常用于計算年齡
SUBTIMES
(
A
,
B
)
-
确定兩次之間的差異。
FROMDAYS
(
INT
)
-
将整數天數轉換為日期值。
50
、解釋通路控制清單
ACL
(通路控制清單)是與對象關聯的權限清單。這個清單是
Mysql
伺服器安全模型的基
礎,它有助于排除使用者無法連接配接的問題。
Mysql
将
ACL
(也稱為授權表)緩存在記憶體中。當使用者嘗試認證或運作指令時,
Mysql
會按
照預定的順序檢查
ACL
的認證資訊和權限。
51
、
MYSQL
支援事務嗎?
在預設模式下,
MYSQL
是
autocommit
模式的,所有的資料庫更新操作都會即時送出,所
以在預設情況下,
mysql
是不支援事務的。
但是如果你的
MYSQL
表類型是使用
InnoDB Tables
或
BDB tables
的話,你的
MYSQL
就可以
使用事務處理
,
使用
SET AUTOCOMMIT=0
就可以使
MYSQL
允許在非
autocommit
模式,在非
autocommit
模式下,你必須使用
COMMIT
來送出你的更改,或者用
ROLLBACK
來復原你的
更改。
示例如下:
一
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
52
、
mysql
裡記錄貨币用什麼字段類型好
NUMERIC
和
DECIMAL
類型被
Mysql
實作為同樣的類型,這在
SQL92
标準允許。他們被用于
儲存值,該值的準确精度是極其重要的值,例如與金錢有關的資料。當聲明一個類是這些
類型之一時,精度和規模的能被
(
并且通常是
)
指定;點選這裡有一套最全阿裡面試題總
結。
例如:
salary DECIMAL(9,2)
在這個例子中,
9(precision)
代表将被用于存儲值的總的小數位數,而
2(scale)
代表将被用于
存儲小數點後的位數。
是以,在這種情況下,能被存儲在
salary
列中的值的範圍是從
-9999999.99
到
9999999.99
。
在
ANSI/ISO SQL92
中,句法
DECIMAL(p)
等價于
DECIMAL(p,0)
。
同樣,句法
DECIMAL
等價于
DECIMAL(p,0)
,這裡實作被允許決定值
p
。
Mysql
目前不支援
DECIMAL/NUMERIC
資料類型的這些變種形式的任一種。
這一般說來不是一個嚴重的問題,因為這些類型的主要益處得自于明顯地控制精度和規模
的能力。
DECIMAL
和
NUMERIC
值作為字元串存儲,而不是作為二進制浮點數,以便儲存那些值的小
數精度。
一個字元用于值的每一位、小數點
(
如果
scale>0)
和“
-
”符号
(
對于負值
)
。如果
scale
是
,
DECIMAL
和
NUMERIC
值不包含小數點或小數部分。
DECIMAL
和
NUMERIC
值得最大的範圍與
DOUBLE
一樣,但是對于一個給定的
DECIMAL
或
NUMERIC
列,實際的範圍可由制由給定列的
precision
或
scale
限制。
當這樣的列賦給了小數點後面的位超過指定
scale
所允許的位的值,該值根據
scale
四舍五
入。
當一個
DECIMAL
或
NUMERIC
列被賦給了其大小超過指定
(
或預設的)
precision
和
scale
隐含
的範圍的值,
Mysql
存儲表示那個範圍的相應的端點值。
我希望本文可以幫助你提升技術水準。那些,感覺學的好難,甚至會令你沮喪的人,别擔
心,我認為,如果你願意試一試本文介紹的幾點,會向前邁進,克服這種感覺。這些要點
也許對你不适用,但你會明确一個重要的道理:接受自己覺得受困這個事實是擺脫這個困
境的第一步。
53
、
MYSQL
資料表在什麼情況下容易損壞?
伺服器突然斷電導緻資料檔案損壞。
強制關機,沒有先關閉
mysql
服務等。
54
、
mysql
有關權限的表都有哪幾個?
Mysql
伺服器通過權限表來控制使用者對資料庫的通路,權限表存放在
mysql
資料庫裡,由
mysql_install_db
腳本初始化。這些權限表分别
user
,
db
,
table_priv
,
columns_priv
和
host
。
55
、
Mysql
中有哪幾種鎖?
MyISAM
支援表鎖,
InnoDB
支援表鎖和行鎖,預設為行鎖
表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的機率最高,并發量
最低