Mysql 學習之基礎操作

来源:http://www.cnblogs.com/jalja/archive/2017/01/04/6247470.html
-Advertisement-
Play Games

MYSQL常用的一些知識點,作為WEB開發者只會使用CURE還不太行啊。 ...


一、表複製

1、複製表結構    將表hello的結構複製一份為表hello3

2、複製數據

a、如果兩張表的結構一樣且你要複製所有列的數據

mysql> insert into hello3 select * from hello;

b、兩張表結可能不一樣且你只要複製部分列的數據

mysql> insert into hello3 (name,sex,degree) select name,sex,degree from hello;

二、索引

 1、create 創建索引(只能創建普通索引和唯一索引)

  創建普通索引:mysql> create index in_name on hello(name); 給表hello中的name列創建名為 in_name的索引。

  創建唯一索引:mysql> create unique index un_name on hello(name);   給表hello中的name列創建唯一索引名為 un_name的索引。

  查看索引:mysql> show index from hello;   查看表 hello的索引。

  刪除索引:mysql> drop index in_name on hello; 刪除hello表中名為in_name的索引。

2、alter 創建索引(創建索引的通用方式)

  創建普通索引:mysql> alter table hello add index in_name(name); 給表hello中的name列創建名為 in_name的索引。

  刪除(普通/唯一)索引:mysql> alter table hello drop index in_name; 刪除表hello中名為in_name的普通索引。

  刪除自增:mysql> alter table hello modify id int unsigned not null;刪除表hello中 id列(int類型) 的自增特性。

  刪除主鍵索引:mysql> alter table hello drop PRIMARY KEY;

  創建唯一索引:mysql> alter table hello add unique(name); 給hello表的 name創建唯一索引 索引名是預設的。

  創建主鍵索引:mysql> alter table hello add primary key(id); 給hello表的id欄位創建主鍵索引。

  將主鍵索引設置為自增:mysql> alter table hello modify id int unsigned not null auto_increment;將hello表中的主鍵id列設置為自增。

三、視圖  

     主表數據的變化,視圖會時時做相應的變化。如果視圖所依賴的表出現錯誤(被刪除)則視圖也會發生錯誤。

  創建視圖:mysql> create view v_hello as select * from hello where id >5;

  刪除視圖:mysql> drop view v_hello;

  查看視圖的創建過程:mysql> show create view v_hello; 查看視圖v_hello 的創建過程。

四、內置函數

字元函數

  1、CONCAT(str1,str2,....)  字元鏈接函數

    mysql> select concat('A','B' );  

  2、LCASE(str1) 轉為小寫

    mysql> select lcase("MYSQL");

  3、UCASE(str1) 轉大寫

    mysql> select UCASE("Mysql");

  4、LENGTH(str) str的長度

    mysql> select length('mysql');

  5、LTRIM(Str) 去除前段空格

    mysql> select LTRIM(' mysql');

  6、RTRIM(str) 去除後端空格

    mysql> select RTRIM(' mysql  ');

  7、REPEAT(str,count) 重覆count次

    mysql> select repeat('mysql',2);

  8、REPLACE(str,search_str,replcae_str) 將str中的search_str 替換為replac_str

    mysql> select REPLACE('mysql','m','M');

  9、SUBSTRING(str,postion,length) 從str的postion開始取length個字元

    mysql> select substring('mysql',1,2);  從1開始

  10、SPACE(count) 生成count個空格

    mysql> select concat(space(3),'mysql');

數學函數

1、BIN(decimal number):   將十進位轉二進位

2、CEILING(number) 向上取整    mysql> select ceiling(10.12);   結果:11

3、FLOOR(number) 向下取整       mysql> select ceiling(10.12);   結果:10

4、MAX(column) 獲取 最大列

5、MIN(column) 獲取最小列

6、SQRT(num) 開平方

7、RAND() 返回0-1之間的隨機數值  

日期函數

1、CURDATE() 返回當前日期格式 yyyy-MM-dd

2、CURTIME()返回檔期時間 12:11:56

3、NOW()返回當前時間 2017-05-12 21:12:34

4、UNIX_TIMESTAMP(date) 返回當前date的時間戳

5、FROM_UNIXTIME()返回UNIX時間戳的日期值

6、WEEK(date)返回當前時間date為一年中的第幾周

7、YEAR(data)返回當前時間date的年份

8、DATEDIFF(expr1,expr2) 返回expr1與expr2之間的天數

五、預處理語句

 

無變數:

創建預處理語句:mysql> prepare stmt1 from 'select * from hello where id>5';創建一個名為stmt1的預處理語句

執行預處理語句:mysql> execute stmt1;執行stmt1預處理語句

帶變數:

創建帶參數的預處理語句:mysql> prepare stmt1 from 'select * from hello where id>?'

設置變數:mysql> set @i=6;

執行預處理語句:mysql> execute stmt2 using @i;

 

刪除預處理語句:mysql> drop prepare stmt2;    #mysql> DEALLOCATE PREPARE stmt2;  

 

註意:每一次執行完EXECUTE時,養成好習慣,須執行DEALLOCATE PREPARE … 語句,這樣可以釋放執行中使用的所有資料庫資源(如游標)。
不僅如此,如果一個session的預處理語句過多,可能會達到max_prepared_stmt_count的上限值。

六、事務處理

mysql預設事務是自動提交的。在做mysql事務處理時請將資料庫或者表的ENGINE 設置為InnoDB

將表的存儲引擎設置為INNODB:mysql> alter table hello engine=innodb;

設置mysql為非自動提交:mysql> set autocommit=0;

產生事務:mysql> delete from hello where id>7;

事務回滾:mysql> rollback;

事務提交:mysql> commit;

關於事務中的還原點:

創建一個事務:mysql> insert into hello (sex,degree,name) values(1,12312.32,'HHH');

對該事務設置還原點:mysql> savepoint p1;

回滾到指定的還原點:mysql> rollback to p1; 此時事務恢復到p1,也就是p1之後的事務p2 ,p3..這些還原點將失效。

回滾到原始的還原點:mysql> rollback;

七、存儲過程

<!-- 創建存儲過程 hello1()-->
CREATE PROCEDURE hello1()
    BEGIN
        SET @i=0;
        WHILE @i<100 DO 
        insert INTO hello (sex,degree,name) VALUES(1,@i,CONCAT('name',@i));
        SET @i=@i+1;
        END WHILE;
    end;
<!-- 查看存儲-->
SHOW PROCEDURE STATUS;
<!-- 查看hello1()存儲過程-->
show CREATE PROCEDURE hello1;
<!-- 執行存儲過程-->
CALL hello1;

八、觸發器

參考:http://www.cnblogs.com/jalja/p/4635087.html(MySql觸發器)

九、重排auto_increment值

mysql中我們的主鍵id如果設置為主鍵自增策略,那我們如何清空表,並且恢復自增列id的值。

方式一:使用truncate table tableName; 該方式在清空表的同時恢復auto_increment 的值。

方式二:

  1、mysql> delete from hello3;  清空表 (該方式效率較低)

  2、mysql> alter table hello3 auto_increment=1; 恢復auto_increment 的起始值為1


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

-Advertisement-
Play Games
更多相關文章
  • 微信開源,真是喜出望外,必須要去看看啊,比起nuwa來微信好很多,而且github上也有專門的官方文檔說明,還有很多資料查詢 參考地址:https://github.com/Tencent/tinker/wiki https://github.com/Tencent/tinker/wiki/Tink ...
  • 一、安裝 二、登錄用戶管理及密碼修改 b. 選中資料庫,命令:use mysql;c. 查看用戶現有用戶及密碼,註意:mysql5.7用戶密碼欄位為authentication_string,5.7以前為password 三、開啟遠程訪問 四、參考鏈接 MySQL 5.6 for Windows 解 ...
  • 在SQL Server中,我們知道一個SELECT語句執行過程中只會申請一些意向共用鎖(IS) 與共用鎖(S), 例如我使用SQL Profile跟蹤會話86執行SELECT * FROM dbo.TEST WHERE OBJECT_ID =1 這個查詢語句,其申請、釋放的鎖資源的過程如下所示: 而... ...
  • 1.首先MySQL的安裝方式有兩種:一種是MSI安裝方式,很簡單就像安裝Windows軟體一樣。另外一種就是ZIP安裝方式。這種相對而言比較麻煩。新手推薦MSI安裝方式。 安裝方式有以下兩種; MSI的安裝包方式(相對簡單);ZIP安裝方式 選擇安裝類型:(推薦選擇Typical 典型安裝方式) T ...
  • ...
  • --1:無ORDER BY排序的寫法。(效率最高) --(經過測試,此方法成本最低,只嵌套一層,速度最快!即使查詢的數據量再大,也幾乎不受影響,速度依然!) SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM emp t WHERE hire_date B ...
  • 今天,有個哥們碰到一個問題,他有一個從庫,只要是啟動MySQL,CPU使用率就非常高,其中sys占比也比較高,具體可見下圖。 註意:他的生產環境是物理機,單個CPU,4個Core。 於是,他抓取了CPU的歷史信息,發現CPU飆高大概是從2017年1月1日8點10分開始的。 但是這個從庫的負載並不高, ...
  • alter table [表名] alter column [欄位名][ 屬性] 例子: 把Student表中Sno的int類型 修改為 varchar 類型 alter table Student alter column Sno varchar(20) not null ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...