MySQL基本操作語法

MySQL

注: MySQL對大小寫不敏感, 需要對大小檢索, 使用關鍵字binary, "[]"中內容爲可選內容; table_name, tableName表示表名, columnName表示列名, DataType表示表中列數據類型, 粗體部分表示關鍵字

  1. 創建數據庫: create database [if not exits] 數據庫名;
  2. 刪除數據庫: drop databases 數據庫名;
  3. 使用數據庫: use 數據庫名;
  4. 創建數據表: create table 數據表(column_name1 column_type,…);
  5. column字段添加: not null#不爲空, auto_increment#自增, primary key#主鍵, engine#儲存引擎, charset#設置編碼
  6. 刪除表: drop table table_name;
  7. 表中插入數據:insert into table_name(field1,field2…)values(value1,value2…); 字符串使用雙引號, 插入多條記錄 insert into table_name(field1,field2,…)values(valueA1…),(valueB1…)…;
  8. insert ignore into與insert into的區別: 如果當前表限制插入重複數據, 那麼insert ignore into會忽略你要插入的重複數據返回以個警告, 而insert into不會忽略, 依舊插入, 直到SQL語句報錯
  9. 檢索:select column_name1,column_name2 from table_name[where Clause][limit n][offset m]; limit設定返回記錄數, offet指定select檢索數據開始的偏移量
  10. where使用:類似於編程語言中的if, 可使用">,<,!=,>=,<="具有條件性的選取數據, 可用於delete/update(刪除/修改);
  11. 修改表中數據:update table_name set field1=new_value1, field2=new_value2…[where Clause]
  12. 刪除表中記錄: delete from table_name[where Clause]; 操作行記錄, 沒有where, 表中所有記錄全被刪除
  13. 模糊搜索:select field1, filed2…fieldN from table_name where field1 like condition1 [and [or]] field2=‘somevalue’; 通常將like與"% 下劃線"結合使用, “%” 表示任意字符與unix正則表達式中 “*” 差不多, “下劃線"表示字符只出現一次, 不使用”% _“進行模糊判斷時, like的效果與”="一致
  14. 連接兩個select語句結果組合到一個集合中(就所謂的求兩個結果在指定詞條下的交集),union具有刪除重複數據的功能: select expression1…expressionN from tables [where conditions] union [all|distinct] select expression1…expressionN from tables [where conditions]; expression1: 要檢索的列, tables:要檢索的數據表, all:返回所有結果集,包含重複數據, distinct: 默認已經刪除重複數據, distinct對結果沒有影響
  15. 排序:select field1…fieldN from table_name1…table_nameN order by field,[field2…][asc[desc]] where [like]; 使用任何字段作爲排序條件,asc:升序, desc:降序 ; 數據默認爲升序排列
  16. 根據一個或多個列結果集進行分組: select column_name,function(column_name) from table_name where column_name operator value group by column_name; 在分組的列上我們可以使用count, sum, avg等函數, 例:select name,cout(*) from employee group by name;將employee中name出現的次數做一個統計, 注:可以使用with rollup在實現分組的基礎上再進行統計(sum,avg,count…), group by後面的字段必須與select處的字段一致
  17. 數據表連接,在兩個或多個表中查詢數據: inner join(內連接):獲取兩個表中字段關係的記錄可以省略,求交集inner, left join(左連接):獲取左表記錄,即使右表沒有對應匹配的記錄, right join(右連接):與左連接相反
  18. null處理: 表中記錄爲null時, where只能採用is null或者 is not null 來進行判斷, 而不能使用=null或者!=null判斷
  19. MySQL事務: 用於處理操作量大,複雜度高的數據, 維護數據庫完整性
  20. 默認情況下,事務自動提交(執行完SQL,自動執行commit), 顯示開啓事務使用begin ,start transaction, set autocommit=0禁止自動提交
  21. 回滾結束用戶事務,撤銷正在進行的所有未提交的修改: rollback/rollback work;
  22. 在事務中創建一個保存點,允許有多個保存點:savepoint identifier;
  23. 刪除事務保存點,沒有指定保存點執行會拋出異常:release savepoint identifier;
  24. 把事務回滾到標記點:rollback to identifier;
  25. 設置事務隔離級別: set transaction;
  26. MySQL Alter 修改數據:
  27. 添加表字段: alter table table_name add column_name DataType; #添加後的字段可在DataType後面使用 first/after固定字段在第一列或者在某一列之後
  28. 刪除表字段: alter table table_name drop column_name; #數據表中只剩下一個字段無法刪除當前字段
  29. 修改字段類型: alter table table_name modify column_name New_DataType;
  30. 使用change修改字段名,新字段名後面必須指定類型:alter table table_name change column_name NewColumn_name ColumnDataType;
  31. 修改字段後可指定字段是否包含默認值/not null;
  32. 設置字段默認值: alter table table_name alter column_name set default value;
  33. 刪除字段默認值:alter table table_name alter column_name drop default;
  34. 修改表名: alter table table_name rename to Newtable_name;
  35. 創建普通索引: create index indexName on table_name(username(length));
  36. 修改表結構添加索引: alter table table_name add index indexName(columnName);
  37. 單列索引:一個索引只包含單個列; 組合索引: 一個索引包含多個列
  38. 創建表的時候直接指定: create table table_name(… index [index_name] (userName(length)));
  39. 刪除索引: drop index [indexName] on table_name;
  40. 創建唯一索引(索引值必須唯一,可爲null) ,組合索引,列值必須唯一: create unique index indexName on tableName(userName(length)); #唯一索引相比於普通索引就添加一個unique, 在唯一索引中插入相同數據會出錯
  41. 使用alter添加/刪除索引:alter table tableName add primary key(columnList);#索引值必須唯一不能爲空 alter table tableName add unique indexName(columnList);#創建的索引值必須是唯一的 alter table tableName add index indexName(columnList);#添加普通索引,索引值可出現多次 alter table tableName add fulltext indexName(columnList);#指定索引值爲fulltext,用於全文索引; 刪除就在index indexName前面添加drop
  42. 顯示索引信息:show index from tableName;
  43. alter添加/刪除主鍵: 在primary key 主鍵名前面添加 add/drop
  44. MySQL臨時表:保存一些臨時數據, 臨時表只在當前連接可見, 關閉連接, MySQL會自動刪除並釋放所有空間
  45. 臨時表創建:create temporary table tableName(columnName DataType…); 創建完成後使用show tables是無法查看臨時表, 它只在當前連接可見; 刪除使用drop table tableName
  46. 服務器版本信息:select version() 當前數據庫名:select database() 當前用戶名:select user()
  47. 服務器狀態: show status; 服務器配置變量: show variables
  48. 查看當前數據庫下包含數據表情況:show tables;
  49. 查看指定數據表的表結構: desc 表名;
  50. 重置序列: 當刪除使用auto_increment列中記錄會導致序列出錯, 需要重寫對該列使用auto_increment, 使用auto_increment=value; 指定開始值
  51. 統計重複數據: 首先確定那一列會出現重複記錄,在列選擇列表使用count(*)列出那些列或者使用group by列出那些列, 最後將having子句設置重複數大於1; 例:SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;
  52. 過濾重複數據: 使用distinct/group by, 例: select distinct columnName from tableName 或者select columnName from tableName group by columnName;
  53. 刪除重複數據: 可以使用爲表添加index或者primary key

注: 一部分內容, 在後期進行修改和補充, 有錯誤的地方還請指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章