天天看點

Java -Mysql

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

支援表鎖和行鎖,預設為行鎖

表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的機率最高,并發量

最低