MySQL篇

来源:https://www.cnblogs.com/val-record/archive/2020/06/04/13042314.html
-Advertisement-
Play Games

1、一張表,裡面有 ID 自增主鍵,當 insert 了 17 條記錄之後,刪除了第 15,16,17 條記錄, 再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ? (1)如果表的類型是 MyISAM,那麼是 18 因為 MyISAM 表會把自增主鍵的最大 ...


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 的區別:
  1. 浮點數以 8 位精度存儲在 FLOAT 中,並且有四個位元組。
  2. 浮點數存儲在 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 <UserName> -p <password>   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 <tablename>;   28.、LIKE 聲明中的%和_是什麼意思? %對應於 0 個或更多字元,_只是 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 子句結合使用。 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 是 0, 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 支持表鎖和行鎖,預設為行鎖 表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖衝突的概率最高,併發量最 低 行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖衝突的概率小,併發度最高
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 結合其他同學和自己的筆記總結如下 什麼是hive? 基於Hadoop的開源的數據倉庫工具,用於處理海量結構化數據。 Hive把HDFS中結構化的數據映射成表。 Hive通過把HiveSQL進行解析和轉換,最終生成一系列在hadoop上運行的mapreduce任務,通過執行這些任務完成數據分析與處理。 ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題二十四:查詢學生平均成績及其名次 SELECT s.St ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題二十三:統計列印各科成績各分數段人數:課程ID,課程名稱 ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題二十二:查詢如下課程成績第3名到第6名的學生成績單:企業 ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題二十一:查詢不同老師所教不同課程平均分從高到低顯示 SE ...
  • 在本地搭建好偽分散式環境,打開虛擬機進入linux系統,如果是在root用戶下則需要切換至Hadoop用戶 su - hadoop 按需輸入hadoop密碼 在hadoop家目錄下啟動Hadoop集群 start-all.sh 查看進程,檢查是否正常啟動 jps 進入Hive安裝目錄 (具體目錄可能 ...
  • 通過 此SQL,您可以從一個表複製信息到另一個表。 INSERT INTO SELECT 語句從一個表複製數據,然後把數據插入到一個已存在的表中。 語法 從一個表中複製所有的列插入到另一個已存在的表中 INSERT INTO table2 SELECT * FROM table1; 選擇指定的列 I ...
  • 1、'' is null為true,''和null是同一個東西。 神經病寫法:無論vc_itemids是null還是'',or後面的那一句都為false,判空只能使用is null 或者 is not null。下麵的vc_itemids只需要前面的判空就可以了。 分析: 2.低效的子查詢 神經病寫 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...