mysql資料庫操作(1)

来源:http://www.cnblogs.com/understander/archive/2016/10/30/5996306.html
-Advertisement-
Play Games

1.mysql 資料庫備份: 語法: 其中:USER 是用戶名,PASS 是密碼,DataBase 是資料庫名, Path 是資料庫備份存儲的位置。 備註:1)執行備份是在系統條件下,而非 mysql 狀態下。 2)請使用正確的文件地址,在文件地址中要使用雙斜杠 “\\” 來代替單斜杠 “\”。 2 ...


 

1.mysql 資料庫備份:

語法:

MYSQLDUMP -uUSER -pPASS  DataBase > Path

 其中:USER 是用戶名,PASS 是密碼,DataBase 是資料庫名, Path 是資料庫備份存儲的位置。

備註:1)執行備份是在系統條件下,而非 mysql 狀態下。

   2)請使用正確的文件地址,在文件地址中要使用雙斜杠 “\\” 來代替單斜杠 “\”。

 

2.mysql 資料庫的恢復

語法:

mysql -uUSER -pPASS  DataBase < Path

 其中:USER 是用戶名,PASS 是密碼,DataBase 是資料庫名, Path 是備份文件存儲的位置。

 

3.實現跨資料庫表的內容的複製

如實現將 db_database3 資料庫中的 user 表複製到 database4 中的 user 表,在實現資料庫表的內容複製時,需要在每個資料庫表前要加上資料庫的名稱。

具體語法如:

 insert into db_database4.user(column1,column2) select column1,column2 from db_database3.user;

 備註:1)仍然需要你自己在 db_database4 中建立一個與 db_database3 結構一樣的 user 表;

      2)要保證表中欄位的數據類型的一致性,否則會導致出入數據的錯誤。

 

4.使用 UNION ALL 語句批量插入數據

是用 UNION ALL 語句實現批處理,其語法如下:

INSERT  tableName  SELECT columnValue,... UNION  ALL SELECT columnValue,......

 1.tableName:要添加數據的數據表。

2.columnValue:要添加到數據表中的數據。

例如:往一個 user 表中一次插入多條數據:其中表結構如下:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | varchar(20) | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

 我們使用常規的 insert into 插入語句如下:

mysql>  insert into user values('1','tom');
Query OK, 1 row affected (0.06 sec)

mysql>  insert into user values('2','kill');
Query OK, 1 row affected (0.09 sec)

mysql>  insert into user values('3','bill');
Query OK, 1 row affected (0.09 sec)

 而若使用 union all 語句如下:

mysql> insert user select '1','jim' union all select '2','kill' union all select '3','bill';

 備註:我們常用的 insert into 語句每次只能實現插入一條語句,這樣重覆輸入往往不方便,這個時候可以選擇使用union all 來替代。

 

 5.更新資料庫中的表---其中包括:對錶本身結構的更改與對錶中數據的更改

1)對錶本身結構的更改,使用 alter 語句。

語法:

alter table 表名

 例如:

a.追加語法:alter table 表名 
add (column datatype,column datatype,...);
例如:alter table tt_table add image blob; //在tt_table表中添加一個image列用來保存大頭照 
b.修改語法:
alter table 表名 modify (column datatype,column datatype,...); 例如:alter table tt_table modify job varchar(60);//修改tt_table表的job列,使其長度為60
c.刪除語法:
alter table 表名 drop (column); 例如:alter table tt_table drop job; //刪除tt_table表中的job列
d,修改表名:rename
table 表名 to 新表名; 例如:rename table tt_table to tt;//修改tt_table表的表名為tt
e.將tt_table表的字元集修改為utf8
alter table tt_table character set utf8;
f.將tt_table原表中的列名food 屬性為varchar(
20)修改為sale_food 屬性為varchar(40) alter table tt_table change column food sale_food varchar(40);

 2)對錶中數據的更改,使用 update 語句。

語法:

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

例1:我們為 lastname 是 "Wilson" 的人添加 firstname

    UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ;

 例2:我們會修改地址(address),並添加城市名稱(city):

    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson';

備註:alter的修改只涉及表結構方面,而不能對其中保存的數據進行修改!掌握這點可以混淆使用 alter 和 update 。

 

6.將數據表清空-----DELETE 語句與TRUNCATE TABLE 語句

1)DELETE 語句

DELETE 語句用於刪除表中的行。
語法:

DELETE FROM 表名稱 WHERE 列名稱 =

 例1:刪除lastname為wilson的行:

DELETE FROM Person WHERE LastName = 'Wilson'

 例2:刪除所有行,可以在不刪除表的情況下刪除所有的行。這意味著表的結構、屬性和索引都是完整的:

DELETE FROM table_name

 或者:

DELETE * FROM table_name

 2)TRUNCATE TABLE 語句

TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同,二者均刪除表中的全部行;但 TRUNCATE TABLE 比 DELETE 速度快,而且使用的系統和事物日誌資源少。

DELETE 語句每次刪除一行,併在事務日誌中為所刪除的每一行做一項記錄;

TRUNCATE TABLE 則通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放,減少了日誌空間的額占用。

TRUNCATE TABLE 語法:

TRUNCATE TABLE 數據表名

 

 7.聚集函數 SUM 實現數據彙總

sum函數具體語法:

SUM ([ALL|DISTINCT]  expression)

 ALL:對所有的值進行聚集函數運算。ALL 是預設值。

DISTINCT:指定 SUM 返回唯一值的和。

expression:是常量、列或函數,或者是算術、按位與字元串等運算符的任意組合。如果 expression 是精確數字或近似數字數據類型分類(bit數據類型除外)的表達式,則不允許使用聚集函數和子查詢。

例如:統計一個班級語文,數學,英語各科的總成績:

select sum(math),sum(chiense),sum(english) from tt_table ;

 統計一個班級語文成績平均分:

select sum(chinese)/count(*) from tt_table;

 註意:a.sum僅對數值起作用,否則會報錯。

           b.對多列求和,逗號不能少。

      c.在統計過程中,null 值將被忽略。

 

8.聚集函數 AVG 實現計算平均值

AVG函數具體語法:

AVG ([ALL|DISTINCT]  expression)

ALL:對所有的值進行聚集函數運算。ALL 是預設值。

DISTINCT:指定 AVG 操作只能使用每個值的唯一實例,而不管該值出現多少次。

expression:是常量、列或函數,或者是算術、按位與字元串等運算符的任意組合。如果 expression 是精確數字或近似數字數據類型分類(bit數據類型除外)的表達式,則不允許使用聚集函數和子查詢。

例如:求一個班級的平均分

select avg(chinese) from tt_table;

 

 9.聚集函數 MIN/MAX 求數據表中的最小/最大值

具體語法:

MIN|MAX ([ALL|DISTINCT]  expression)

ALL:對所有的值進行聚集函數運算。ALL 是預設值。

DISTINCT:指定每個唯一值都被考慮。DISTINCT對MIN、MAX無意義。

expression:該參數為表達式,由常量、列名、函數以及算術運算符、按位運算符和字元串運算符任意組合而成。

例如:求班級最高分和最低分

select man(chinese+english+maht),min(chinese+english+maht) from tt_table;

 

 10.聚集函數 COUNT 返回表達式中值的個數

COUNT 函數是唯一允許使用通配符作為參數的聚集函數。

語法:

COUNT({[ALL|DISTINCT] expression} | * )

 ALL:若沒有該參數,SQL 將對所有的值進行聚集函數運算。ALL 是預設值。

DISTINCT:指定每個唯一值都被考慮

expression:該參數為表達式,其類型可以是除 uniqueidentifier、text、image 或 ntext 之外的任何類型。

* :指定應該計算所有行以返回表中行的總數。COUNT(*) 不需要任何參數,而且不能與 DISTINCT 一起使用。COUNT(*) 返回指定表中的的數量而不消除副本,對每行分別進行計數,包括含有空值的行。

例如:統計一個班級共有多少學生:

select count(name) from tt_table;

 或者

select count(*) from tt_table;//這種分頁的時候用得比較多

 統計總分大於250的人數有多少?

select count(*) from tt_table where (math+english+chinese)>250;

 註意:count統計只有有值才計數。若統計的name列上有一個為null的值,則該行不計入count的計數結果之中。

 

11.在where子句中經常被使用的運算符
1) >大於  <小於  <=小於等於   >=大於等於   =等於   <>不等於
2)  between...and ...    顯示在某以區間的值
3)  in(set)           顯示在in列表中的值,定點查詢。例in(100,200)即為顯示查詢列表中含有100和200這兩個值的結果集。
4)  like              模糊查詢("%" 和 "_")
5)  is null           判斷是否為空
6)  and            多個條件同時成立
7)  or            多個條件任一成立
8) not            不成立
註意1:不等於運算符跟其它語言有點不一樣,需要註意一下。
註意2:like語句中,"%"代表零個或多個任意字元,"_"代表一個字元。
例如:
查詢英語分數在80--90之間的同學:

select name from tt_table where english>80 and english<90;

 查詢英語分數在80--90之間的同學:

select name from tt_table where english between 80 and 90;

 查詢數學分數為89,90,91的同學:

 select name from tt_table where math in(89,90,91);

 查詢所有姓“李”的學生成績:   

 select  *   from tt_table where name like '李%';

 

12.對數據進行排序查詢---使用 ORDER BY 子句與 DESC|ASC 關鍵字

ORDER BY 子句的作用是分類輸出,並且根據表中包含的一列或多列表達式將輸出的值按升序或降序排列。他不改變資料庫中行的順序,只是簡單的改變查詢輸出的值的顯示順序。

其語法格式如下:

SELECT ... WHERE ... ORDER BY expression [ASC|DESC],...

 參數說明:

expression:一個表達式,通常是一個輸出時用來分類的欄位。

[ASC|DESC]:可選項,代表升序或降序。

,... :指可以有多於一個的分類表達式,並且每一個表達式都可以為升序或降序。

例如:對 user 表中的圖書價格進行降序排序輸出

select * from user  order by price desc;

 

13. group by 與 order by 之區別?

order by 從英文里理解就是行的排序方式,預設的為升序。 order by 後面必須列出排序的欄位名,可以是多個欄位名。

group by 從英文里理解就是分組。必須有“聚合函數”來配合才能使用,使用時至少需要一個分組標誌欄位。

什麼是“聚合函數”?
像sum()、count()、avg()等都是“聚合函數”
使用group by 的目的就是要將數據分類彙總。

一般如:

select 單位名稱,count(職工id),sum(職工工資) form [某表] group by 單位名稱

 這樣的運行結果就是以“單位名稱”為分類標誌統計各單位的職工人數和工資總額。

在sql命令格式使用的先後順序上,group by 先於 order by。

select 命令的標準格式如下:

 SELECT select_list   [ INTO new_table ]   FROM table_source  [ WHERE search_condition ] 
[ GROUP BY group_by_expression ] [ HAVING search_condition ]

 例如:

select name,sum(total) sum from tb group by name order by sum asc;

 備註:

SUM 函數只能用於數據類型是 int ,smallint,decimal,numeric,float,real,money 和 smallmoney的欄位。

 

14.mysql 資料庫中使用 LIMIT 子句來限制語句返回的行數

mysql 資料庫中提供了 LIMIT 子句來限制 select 語句返回的行數。如果查詢數據的 SQL 語句中包含 GROUP BY 與 ORDER BY 子句,則 LIMIT 子句放在 GROUP  BY 子句與 ORDER BY 子句的後面。語法如下:

SELECT [DISTIN | UNIQUE] (*,columname[AS alias], ...) FROM table WHERE ... ORDER BY ... LIMIT([offset] , rows);

 參數說明:

offset:指定要返回的第一行的偏移量。開始行的偏移量是0;

row:指定返回行的最大數目。

例如:

從 tb 表中查詢最開始的3條記錄。

select * from tb limit 0,3;

 查詢 tb 表中的最後的3條記錄。

select * from tb  order by id desc limit 0, 3;

 備註 :

1.mysql 資料庫提供了 LIMIT 子句,在SQL Server資料庫提供了相應的 TOP n ,兩者需要區別開來。

2.LIMIT 子句的參數中,第一個參數是可選參數。如果值給定一個參數,則代表偏移量為0的返回行的最大數目。例如,表達式 limit(3)與表達式 limit(0,3)是等價的。

3.如果查詢數據的 SQL 語句中包含 GROUP BY 與 ORDER BY 子句,則 LIMIT 子句一定要放在 GROUP  BY 子句與 ORDER BY 子句的後面。

 

////end

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先說下基本動畫部分 基本動畫部分比較簡單, 但能實現的動畫效果也很局限 使用方法大致為: #1. 創建原始UI或者畫面 #2. 創建CABasicAnimation實例, 並設置keypart/duration/fromValue/toValue #3. 設置動畫最終停留的位置 #4. 將配置好的動 ...
  • 前言 學習本系列內容需要具備一定 HTML 開發基礎,沒有基礎的朋友可以先轉至 "HTML快速入門(一)" 學習 本人接觸 React Native 時間並不是特別長,所以對其中的內容和性質瞭解可能會有所偏差,在學習中如果有錯會及時修改內容,也歡迎萬能的朋友們批評指出,謝謝 文章第一版出自簡書,如果 ...
  • SwipeMenuListView(滑動菜單) A swipe menu for ListView.--一個非常好的滑動菜單開源項目。 Demo 一、簡介 看了挺長時間的自定義View和事件分發,想找一個項目練習下。。正好印證自己所學。 在github上找到了這個項目:SwipeMenuListVi ...
  • Oracle的推導參數(Derived Parameters)其實是初始化參數的一種。推導參數值通常來自於其它參數的運算,依賴其它參數計算得出。官方文檔關於推導參數(Derived Parameters)的概念如下: Derived Parameters Some initialization pa... ...
  • 1.在查詢結果中不顯示重覆記錄 查詢時不顯示重覆記錄主要應用了 DISTINCT 關鍵字,該關鍵字用於刪除重覆記錄。 在實現查詢操作時,如果查詢的選擇列表中包含一個表的主鍵,那麼每個查詢中的記錄都將是唯一的(因為主鍵在每一條記錄中有一個不同的值);如果主鍵不包含在查詢結果中,就可能出現重覆記錄。使用 ...
  • 【體繫結構】Oracle參數介紹 1 BLOG文檔結構圖 2 前言部分 2.1 導讀和註意事項 各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~: ① Oracle中的各種參數介紹及其查詢方法 ② Oracle中V$PARAMETER及V$PA ...
  • 一、MySQL數據遷移(由遠端主機遷移到本地) 1、導出資料庫mysqldump -u root -p db > dump_db_date.sqlroot: 賬戶db: 需要導出的資料庫名 2、將導出的dump_db_date.sql文件scp到本地 3、在本地機器建立新資料庫mysql > cre ...
  • 今天在啟動Hadoop時遇到Name or service not knownstname這樣的錯誤 原因:slaves文件可能被污染了。 解決方法:刪除掉slaves文件,重新建立一個slaves文件,並配置好就可以了。 1 [root@master sbin]# ./start-all.sh 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# ...