多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > 【面試】【MySQL常見問題總結】【02】

【面試】【MySQL常見問題總結】【02】

來源:程序員人生   發布時間:2016-06-04 15:46:58 閱讀次數:3325次

【常見面試問題總結目錄>>>】


031 在已存在的表上創建唯1索引

  1、CREATE UNIQUE INDEX index_name ON table_name (
    field_name [(index_length)] [ASC|DESC])
  2、ALTER TABLE table_name ADD UNIQUE INDEX|KEY
    index_name(field_name [(index_length)] [ASC|DESC])

032 創建表時創建全文索引

  table_name(
    column_name
    FULLTEXT INDEX|KEY [index_name](
      field_name [(index_length)] [ASC|DESC])
  )

033 在已存在的表上創建全文索引

  1、CREATE FULLTEXT INDEX index_name ON table_name (
    field_name [(index_length)] [ASC|DESC])
  2、ALTER TABLE table_name ADD FULLTEXT INDEX|KEY
    index_name(field_name [(index_length)] [ASC|DESC])

034 創建多列索引

  和上面的方法類似
    index_name(field_name_1 [(index_length)] [ASC|DESC],
     … ,
    field_name_n [(index_length)] [ASC|DESC])

035 刪除索引

  DROP INDEX index_name ON table_name

036 創建視圖

  CREATE VIEW view_name AS select_query

037 查看視圖信息

  SHOW TABLE STATUS [FROM database_name] [LIKE ‘pattern’]

038 查看視圖設計信息

  DESC[RIBE] view_name

039 刪除視圖

  DROP VIEW view_name[, view_name]

040 修改視圖

  1、CREATE OR REPLACE VIEW view_name AS select_query
  2、ALTER VIEW view_name AS select_query

041 創建觸發器

  CREATE TIRGGER trigger_name
    BEFORE|AFTER DELETE|INSERT|UPDATE
    ON table_name FOR EACH ROW
    Triggle_statement
  Triggle_statement:觸發器被觸發要履行的語句(增、刪、改、查等等)

042 查看觸發器

  SHOW TRIGGERS

043 刪除觸發器

  DROP TRIGGER trigger_name

044 插入數據

  INSERT INTO table_name (field_1, field_2, …) VALUES (value_1, value_2, vaule_3, …)

045 查看Mysql表結構的命令,以下:

  desc 表名;
  show columns from 表名;
  describe 表名;
  show create table 表名;
  use information_schema
  select * from columns where table_name=’表名’;

046 數據庫分頁查詢

  select * from userdetail where userid limit 0,20

047 MySQL數據庫引擎種類

  (mysql⑸.5.5開始,InnoDB作為默許存儲引擎)之前是MyISAM,更早是ISAM你能用的數據庫引擎取決于mysql在安裝的時候是如何被編譯的。要添加1個新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持3個引擎:ISAM、MYISAM和HEAP。另外兩種類型INNODB和BERKLEYDB(BDB), 也常常可使用。
  ISAM是1個定義明確且歷經時間考驗的數據表格管理方法,它在設計之時就斟酌到數據庫被查詢的次數要遠大于更新的次數。因此,ISAM履行讀取操作的速度很快,而且不占用大量的內存和存儲資源。ISAM的兩個主要不足的地方在于,它不支持事務處理,也不能夠容錯:如果你的硬盤崩潰了,那末數據文件就沒法恢復了。如果你正在把ISAM用在關鍵任務利用程序里,那就必須常常備份你所有的實時數據,通過其復制特性,MYSQL能夠支持這樣的備份利用 程序。
  MYISAM是MYSQL的ISAM擴大格式和缺省的數據庫引擎(5.5之前)。除提供ISAM里所沒有的索引和字段管理的大 量功能,MYISAM還使用1種表格鎖定的機制,來優化多個并發的讀寫操作。其代價是你需要常常運行OPTIMIZE TABLE命令,來恢復被更新機制所浪費的空間。MYISAM還有1些有用的擴大,例如用來修復數據庫文件的 MYISAMCHK工具和用來恢復浪費空間的MYISAMPACK工具。
  MYISAM強調了快速讀取操作,這可能就是為何MYSQL遭到了WEB開發如此青睞的主要緣由:在WEB開發中你所進行的大量數據操作都是讀取操作。所以,大多數虛擬主機提供商和INTERNET平臺提供商只允許使用MYISAM格式。
  HEAP允許只駐留在內存里的臨時表格。駐留在內存使得HEAP比ISAM和MYISAM的速度都快,但是它所管理的數據是不穩定的,而且如果在關機之前沒有進行保存,那末所有的數據都會丟失。在數據行被刪除的時候,HEAP也不會浪費大量的空間,HEAP表格在你需要使用SELECT表達式來選擇和操控數據的時候非常有用。要記住,用完表格后要刪除表格。
  INNODBBERKLEYDB(BDB)數據庫引擎都是造就MYSQL靈活性的技術的直接產品,這項技術就是MySql++ API。在使用MySql的時候,你所面對的每個挑戰幾近都源于ISAM和MYIASM數據庫引擎不支持事務處理也不支持外來鍵。雖然要比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了對事務處理和外來鍵的支持,這兩點都是前兩個引擎所沒有的。如前所述,如果你的設計需要這些特性中的1者或二者,那你就要被迫使用后兩個引擎中的1個了。

048 MySQL鎖類型

  根據鎖的類型分,可以分為同享鎖排他鎖意向同享鎖意向排他鎖
  根據鎖的粒度分,又可以分為行鎖表鎖
  對mysql而言,事務機制更多是靠底層的存儲引擎來實現,因此,mysql層面只有表鎖,而支持事務的innodb存 儲引擎則實現了行鎖(記錄鎖(在行相應的索引記錄上的鎖)),gap鎖(是在索引記錄間歇上的鎖),next-key鎖(是記錄鎖和在此索引記錄之前的gap上的鎖的結合)。Mysql的記錄鎖實質是索引記錄的鎖,由于innodb是索引組織表;gap鎖是索引記錄間隙的鎖,這類鎖只在RR隔離級別下有效;next-key鎖是記錄鎖加上記錄之前gap鎖的組合。mysql通過gap鎖和next-key鎖實現RR隔離級別。
  說明:對更新操作(讀不上鎖),只有走索引才可能上行鎖;否則會對聚簇索引的每行上寫鎖,實際同等于對表上寫鎖。
  若多個物理記錄對應同1個索引,若同時訪問,也會出現鎖沖突;
  當表有多個索引時,不同事務可以用不同的索引鎖住不同的行,另外innodb會同時用行鎖對數據記錄(聚簇索引)加 鎖。
  MVCC(多版本并發控制)并發控制機制下,任何操作都不會阻塞讀操作,讀操作也不會阻塞任何操作,只由于讀不上鎖。
  同享鎖:由讀表操作加上的鎖,加鎖后其他用戶只能獲得該表或行的同享鎖,不能獲得排它鎖,也就是說只能讀不能寫
  排它鎖:由寫表操作加上的鎖,加鎖后其他用戶不能獲得該表或行的任何鎖,典型是mysql事務中的更新操作
  意向同享鎖(IS):事務打算給數據行加行同享鎖,事務在給1個數據行加同享鎖前必須先獲得該表的IS鎖。
  意向排他鎖(IX):事務打算給數據行加行排他鎖,事務在給1個數據行加排他鎖前必須先獲得該表的IX鎖。

049 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;

050 MYSQL相比于其他數據庫有哪些特點?

  1、可以處理具有上千萬條記錄的大型數據
  2、支持常見的SQL語句規范
  3、可移植行高,安裝簡單小巧
  4、良好的運行效力,有豐富信息的網絡支持
  5、調試、管理,優化簡單(相對其他大型數據庫

051 如何解決MYSQL數據庫中文亂碼問題?

  1、在數據庫安裝的時候指定字符集
  2、如果在安完了以后可以更改以配置文件
  3、建立數據庫時候:指定字符集類型
  4、建表的時候也指定字符集

052 如何提高MySql的安全性?

  1.如果MYSQL客戶端和服務器真個連接需要逾越并通過不可信任的網絡,那末需要使用ssh隧道來加密該連接的通訊。
  2.使用set password語句來修改用戶的密碼,先“mysql -u root”登陸數據庫系統,然后mysql> update mysql.user set password=password(‘newpwd’),最后履行flush privileges就能夠了。
  3.Mysql需要防備的攻擊有,防偷聽、篡改、回放、謝絕服務等,不觸及可用性和容錯方面。對所有的連接、查詢、其他操作使用基于acl即訪問控制列表的安全措施來完成。也有1些對ssl連接的支持。
  4.設置除root用戶外的其他任何用戶不允許訪問mysql主數據庫中的user表; 加密后寄存在user表中的加密 后的用戶密碼1旦泄漏,其他人可以隨便用該用戶名/密碼相應的數據庫;
  5.使用grant和revoke語句來進行用戶訪問控制的工作;
  6.不要使用明文密碼,而是使用md5()和sha1()等單向的哈系函數來設置密碼;
  7.不要選用字典中的字來做密碼;
  8.采取防火墻可以去掉50%的外部危險,讓數據庫系統躲在防火墻后面工作,或放置在dmz區域中;
  9.從因特網上用nmap來掃描3306端口,也可用telnet server_host 3306的方法測試,不允許從非信任網絡中訪問數據庫服務器的3306號tcp端口,需要在防火墻或路由器上做設定;
  10.為了避免被歹意傳入非法參數,例如where id=234,他人卻輸入where id=234 or 1=1致使全部顯示,所以在web的表單中使用”或””來用字符串,在動態url中加入%22代表雙引號、%23代表井號、%27代表單引號;傳遞未檢查過的值給mysql數據庫是非常危險的;
  11.在傳遞數據給mysql時檢查1下大小;
  12.利用程序需要連接到數據庫應當使用1般的用戶帳號,開放少數必要的權限給該用戶; pagedevide
  13.在各編程接口(c c++ php perl java jdbc等)中使用特定‘逃脫字符’函數; 在因特網上使用mysql數據 庫時1定少用傳輸明文的數據,而用ssl和ssh的加密方式數據來傳輸;
  14.學會使用tcpdump和strings工具來查看傳輸數據的安全性,例如tcpdump -l -i eth0 -w -src or
dst port 3306 strings。以普通用戶來啟動mysql數據庫服務;
  15.不使用到表的聯結符號,選用的參數 –skip-symbolic-links;
  16.確信在mysql目錄中只有啟動數據庫服務的用戶才可以對文件有讀和寫的權限;
  17.不準將process或super權限付給非管理用戶,該mysqladmin processlist可以羅列出當前履行的查詢 文本;super權限可用于切斷客戶端連接、改變服務器運行參數狀態、控制拷貝復制數據庫服務器;
  18.file權限不付給管理員之外的用戶,避免出現load data ‘/etc/passwd’到表中再用select 顯示出來
的問題;
  19.如果不相信dns服務公司的服務,可以在主機名稱允許表中只設置ip數字地址;
  20.使用max_user_connections變量來使mysqld服務進程,對1個指定帳戶限定連接數;
  21.grant語句也支持資源控制選項;
  22.–local-infile=0或1 若是0則客戶端程序就沒法使用local load data了,賦權的1個例子grant insert(user) on mysql.user to ‘user_name’@’host_name’;若使用–skip-grant-tables系統將對任何用戶的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;默許情況是show databases語句對所有用戶開放,可以用–skip-show-databases來關閉掉。
  23.碰到error 1045(28000) access denied for user ‘root’@’localhost’ (using password:no)毛病時,你需要重新設置密碼,具體方法是:先用–skip-grant-tables參數啟動mysqld,然后履行 mysql -u root mysql,mysql>update user set password=password(’newpassword’) where user=’root’;mysql>flush privileges;,最后重新啟動mysql就能夠了。

053 MySQL獲得當前時間的函數是?,格式化日期的函數是

  獲得當前時間用 now() 就行。在數據庫中格式化時間 用DATE_FORMAT(date, format)。根據格式串
format 格式化日期或日期時間值date,返回結果串。

054 你如何肯定 MySQL 是不是處于運行狀態?

  答案: Debian 上運行命令 service mysql status,在RedHat 上運行命令 service mysqld status。然后看看輸出便可。

055 如何開啟或停止 MySQL 服務?

  答案:運行命令 service mysqld start 開啟服務;運行命令 service mysqld stop 停止服務。

056 如何通過 Shell 登入 MySQL?

  答案:運行命令 mysql -u root –p

057 如何列出所有數據庫

  答案:運行命令 show databases;

058 如何切換到某個數據庫并在上面工作?

  答案:運行命令 use database_name; 進入名為 database_name 的數據庫

059 如何列出某個數據庫內所有表?

  答案:在當前數據庫運行命令 show tables;

060 如何獲得表內所有 Field 對象的名稱和類型?

  答案:運行命令 describe table_name;

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本免费三区 | 久久久久国产精品免费免费 | 午夜老司机在线观看 | 一级毛片视频在线观看 | 亚洲欧美天堂 | 美国一级特黄aa大片 | 一级a性色生活片毛片 | 国产一区曰韩二区欧美三区 | 欧美第八页 | 亚洲a免费 | 一级做a爰全过程免费视频毛片 | 久久三级毛片 | 国产偷v国产偷v国产 | 亚洲图片校园另激情类小说 | 最近的中文字幕视频大全高清 | 12306播播影视播播影院午夜 | 欧美性xxxxxx性 | 欧美综合成人网 | 日本不卡不码高清免费观看 | 欧美成人观看免费全部完小说 | 国产免费不卡 | 亚洲一区二区三区欧美 | 亚洲jizzjizz在线播放久 | 亚洲专区欧美 | 日本午夜视频在线 | 最新18videosex性欧美少 | 国产片一区二区三区 | 91色资源网在线观看 | 嫩草亚洲国产精品 | 亚洲福利一区 | 一区二区三区视频在线观看 | 国产美女视频爽爽爽 | 黄色毛片播放 | 韩国午夜理伦三级网 | 日韩大片免费观看 | 午夜久久久 | 成人精品区 | 国产在线精品福利大全 | 亚洲qingse中文字幕久久 | 午夜视频免费看 | 中文日韩欧美 |