mysql我的學習總結

對於mysql中的數據庫以及表的增刪改查

增刪改查數據庫的:

  • 建立數據庫mysql

    create database 數據庫名 
    複製代碼
  • 顯示全部的數據庫sql

    show databases
    複製代碼
  • 輸入這個命令一下全部的sql語句的命令都將針對這個數據庫數據庫

    use 數據庫名
    複製代碼
  • 查詢某個數據庫數據庫安全

    show databases like 要查詢的數據庫的名字
    複製代碼
  • 刪除某個數據庫spa

    drop  database 要刪除的數據名
    複製代碼

增刪改查表的:

  • 建立一個表命令行

    create table 表名 (字段名1 數據類型,字段名2數據類型,...,字段名n 數據類型)
    複製代碼
  • 顯示數據庫中全部的表code

    show tables
    複製代碼
  • 查看錶中的全部字段以及字段內的數據類型索引

    desc 表名
    複製代碼
  • 修改表的事務

    如下爲修改表的命令行:字符串

    • 添加字段

      alter table 要修改表的名字  add column 字段名 數據類型;
      複製代碼
    • 修改字段

      alter table 要修改的表的名字 change column 要修改的字段名 修改後的字段名 修改後的該字段的數據類型
      複製代碼
    • 修改表中的某個字段類型

      alter table 表名 modify 要修改的字段名 新的數據類型 
      複製代碼
    • 刪除表中的某個字段

      alter table 表名字 drop column 要刪除的字段名
      複製代碼
    • 修改表的名字

      alter table 舊錶名 rename to 新表名字
      複製代碼
  • 刪除表

    drop table 表名
    複製代碼

mysql中的約束:

  • 主鍵約束:

    若是有某個字段添加了那麼這個字段的數據不能有重複不能爲NULL

    • 經過建立表時去添加主鍵約束

      第一種經過建立表時去添加主鍵約束的方法:
         create table 表名 (字段名1 數據類型 ,字段名2 數據類型,...,字段名n 數據類型 primary key)
         //像這樣咱們給某個字段的數據類型後加上primary key那麼該字段就添加了主鍵約束
      第二種經過建立表時去添加主鍵約束:
       create table 表名 (字段名1 數據類型 ,字段名2 數據類型,...,字段名n 數據類型) primary key(字段名)
       //像這樣primary key(字段名) 括號裏的字段就會被添加上主鍵約束括號裏能夠寫多個字段用逗號隔開這樣叫作複合主鍵
      複製代碼
    • 經過修改表時去添加主鍵約束:

      alter table 表名 add primary key(字段名)
        //像這樣咱們就給primary key(字段名)括號裏的字段添加了主鍵約束
      複製代碼
  • 外鍵約束:

    外鍵約束主要用於兩個表直接的鏈接,好比咱們有a和b兩張表咱們能夠經過a表中的外鍵去查詢b表中的主鍵從而查詢到咱們須要的數據。

    • 在建立表的時候添加外鍵約束。

      create table 表名 (字段名1 數據類型,字段2 數據類型,...,字段n 數據類型,constraint 外鍵名 foreign key (要添加外鍵的字段名) references 鏈接的表名 (鏈接的表中的字段該字段必須爲主鍵))
      複製代碼
    • 在修改表時添加外鍵約束

      alter table 表名 add constraint 外鍵名 foreign key (字段名) references 鏈接的表名 (鏈接的表中的字段該字段必須爲主鍵)
      複製代碼
    • 在修改表的時候刪除外鍵約束

      alter table 表名 drop foreign key 外鍵名
      複製代碼
  • 惟一約束:

    惟一約束主要幫助咱們去建立某個字段的時候這個字段裏的數據是惟一的沒有重複的可是能夠有空值注:可能會與主鍵約束混淆可是一個表中能夠有多個惟一約束,可是不能有多個主鍵約束,另外惟一約束的字段中的數據能夠有空值可是主鍵約束的字段的數據中不能有空值

    • 在建立表時添加惟一約束:

      create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型 unique)
        //像這樣給某個字段的數據類型後面加上unique那麼這個字段就添加了惟一約束
      複製代碼
    • 在修改表時添加惟一約束:

      alter table 表名 add consteraint約束名 unique (要添加惟一約束的字段名)
      複製代碼
    • 刪除惟一約束:

      alter table 表名 drop index 字段名
      複製代碼
  • 檢查約束:

    檢查約束主要用於檢查表某個字段的數據中是否知足斷定條件

    • 在建立表時添加檢查約束

      create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型,check (對某個字段的約束的限定條件好比:id>1))
      複製代碼
    • 在修改表時添加檢查約束:

      alter table add cpnstraint 檢查約束名 check (對某個字段約束的限定條件)
      複製代碼
    • 刪除檢查約束:

      alter table 表名 drop constraint 檢查約束名 
      複製代碼
  • 默認值約束:

    默認值就是咱們在給某個字段添加數據時沒有賦值或者它的值爲空那麼它的值爲默認值

    • 在建立表的時候添加默認值約束

      create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型 default 默認值)
        //像這樣咱們給某個字段的數據類型後面加上了默認值約束那麼若是它的某條數據爲空的時候它的值爲默認值
      複製代碼
    • 在修改表的時候添加默認值約束

      alter table 表名 change column 字段名 default 默認值
      複製代碼
    • 刪除默認值約束

      alter table 表名 change column 字段名 字段名 數據類型 default null
      複製代碼
  • 非空約束

    若是咱們給某個字段添加了非空約束那麼這個字段裏的數據就不能有空值不然會報錯

    • 在建立表時添加非空約束

      create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型 not null)
          //像這樣給某個字段的數據類型
      複製代碼
    • 在修改表時添加非空約束:

      alter table 表名 change column 字段名 字段名 數據類型 not null
      複製代碼
    • 刪除非空約束:

      alter table column 字段名 字段名 數據類型 null
      複製代碼
  • 查看錶中全部的約束

    show create table 表名
    複製代碼

增刪改查數據:

  • 查詢數據:

    • 查詢表中全部的數據

      select * from 表名
      複製代碼
    • 查詢某個字段中的數據

      select 字段名 from 表名
      複製代碼
    • 查詢某個字段的數據並不顯示重複的

      select distnct 字段名 from 表名
      複製代碼
    • 給字段或者表取別名

      select 字段名/表名 as 別名
      複製代碼
    • 查詢表中x行至y行的數據

      select  * from 表名 limit x,y
        //x和y是數字
      複製代碼
    • 只查找知足限制條件的數據

      select * from  表名 where 限制條件 好比id=1
      複製代碼
  • 插入數據

    • 往表中插入數據

      insert into 表名 (字段名1,字段名2) values (數據1 ,數據2)
            //括號中的數據1就對應字段名1,數據2 就對應字段名2
      複製代碼
    • 往表中插入數據

      insert into 表名 set 字段名1=數據1,字段名2=數據2 
      複製代碼
    • 查詢a表的數據而後插入到b表中

      insert into b表名 (字段名1,字段名2) select 字段名1,字段名2 from a表名
      複製代碼
  • 修改數據:

    update 表名 set 要修改的字段=新值
          //這個必定要結合where限定條件來結合使用不然會把字段裏的數據所有修改爲一個
    複製代碼
  • 刪除數據

    delete from 表名 where 限制條件
       //這個命令若是不結合限制條件去結合使用那麼會清空整張表
    複製代碼

視圖的增刪改查:

簡單來講視圖就是一條select語句進行查詢後的一個結果集,可是視圖也不形同於表能夠

  • 建立視圖

    create view 視圖名 as select查詢語句
    複製代碼
  • 查詢視圖

    desc 視圖名
    複製代碼
  • 修改視圖

    //第一種修改視圖的方式
        alter view 視圖名 as select查詢語句
        //第二種修改視圖的方式
        update 視圖名 set 字段名=新值 where 限制條件
    複製代碼
  • 刪除視圖

    drop view 視圖名
    複製代碼

存儲過程

咱們上面的sql語句等都是對於單個表的操做而存儲過程是爲了完成處理多條sql語句完成對多表的操做

  • 修改結束字符

    delimter 結束字符
       //修改結束字符是由於咱們的sql語句默認是以;進行結尾的可是咱們的存儲過程能夠說是多條sql語句的一個集合,若是不改變結束字符那麼運行時會默認只執行第一條sql語句因此咱們要改變結束字符,可是存儲過程當中的sql語句仍以;結尾。
    複製代碼
  • 建立存儲過程

    create procedure 存儲過程名(參數 參數類型) begin 多條 duosql語句 end
    複製代碼
  • 修改存儲過程

    存儲過程其實是不存在修改的,咱們能夠先刪除原存儲過程再以相同的命名新的存儲過程

  • 刪除存儲過程

    drop procedure 存儲過程名
    複製代碼
  • 調用存儲過程

    call 存儲過程名
    複製代碼

觸發器

觸發器就是一種特殊的存儲過程,不一樣的是存儲過程須要call調用纔可以使用,而觸發器不須要,觸發器有兩種類型before和after類型,before是在激活觸發器的語句以前啓動觸發器,after是在激活觸發器的sql語句以後啓動觸發器,可以激活觸發器的語句有三種,insert ,delete,undate這三種語句

  • 建立觸發器

    create tigger 觸發器名 觸發器類型 激活觸發器的是哪一種語句 on 表名 for each row 啓動觸發器時要執行的sql語句;
    複製代碼
  • 修改觸發器

    一樣也不存在修改觸發器若是要修改觸發器可經過刪除觸發器而後再以相同的名字命名

  • 刪除觸發器

    drop trigger 觸發器名
    複製代碼

索引

索引就至關於時表的目錄,咱們在查詢數據以前能夠根據目錄再去根據目錄進行對數據的查詢

  • 建立索引

    create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型,index(字段名));
       //這行命令用於建立通常索引
       create table 表名 (字段1 數據類型,字段2 數據類型,...,字段n 數據類型,unique(字段名))
       //這行命令用於建立惟一索引
    複製代碼
  • 查看錶中的索引

    show index from 表名
    複製代碼
  • 刪除索引

    drop index 索引名 on index 表名
    複製代碼

用戶

在mysql中的平常管理中咱們應該定義一些有權限的用戶能夠訪問來保護數據的安全

  • 建立用戶

    create user "用戶名"@"localhost" inentifified by "密碼"
    複製代碼
  • 修改用戶名

    rename user 舊用戶名@"localhost" to 新用戶名@"localhost"
    複製代碼
  • 修改密碼

    set password for "用戶名"@"localhost"=password("新密碼")
    複製代碼
  • 刪除用戶

    drop user "用戶名"@"localhost"
    複製代碼
  • 關於如何給用戶設置權限後續會補充

事務:

事務是最小的單位不可再分,事務只和insert,update,delete這三種語句有關,也就說當咱們輸入這三種語句中的其中一個就表示自動開啓了一個事務,當語句執行成功表示自動關閉了事務

  • 手動開啓事務:

    begin
    複製代碼
  • 事務的提交

    commit
    複製代碼
  • 事務的回滾,表示又回到了事務的起點

    rollback
    複製代碼

mysql中的數據類型:

  • 整數類型:

    整數類型又分爲如下幾種

    • TINYINT (顯示長度)

      很小的整數,存儲空間只佔一個字節,這種整數類型他的數值範圍只能是:-128~127這個區間

    • SMALLINT (顯示長度)

      小的整數,存儲空間只佔兩個字節,這種整數類型他的數值範圍只能是:-32768~32767這個區間

    • INT (顯示長度)

      正常的整數,存儲空間只佔四個字節,這種整數類型他的整數範圍只能是:-2147483648~2147483647這個區間

    • bigINT (顯示長度)

      大整數,這種整數類型他的整數範圍只能是:-2147483648~2147483647這個區間

    • 顯示長度爲數字,也就是當咱們去查詢該數據時顯示的數據長度,好比咱們在給某字段的數據類型,寫爲 int (2) 那麼咱們在給該字段裏存儲的數據爲299 ,那麼咱們在去查詢該數據時只能顯示29
  • 小數類型

    小數類型又分爲如下幾種

    • float

      單精度浮點數,存儲空間佔4個字節

    • double

      雙精度浮點數,存儲空間佔8個字節

    • DECIMAL (M, D)

      定點數,浮點數在數據中存儲的是近似值而定點數存儲的是精確值,m爲定點數的長度包括小數點前的數,d爲小數點後的數的長度。存儲空間佔m+2個字節

  • 日期時間類型:

    日期時間類型又分爲如下幾種

    • year

      year類型只用來表示年,存儲空間爲1個字節

      能夠以4位字符的形式去插入或者4位數字的形式去表示範圍爲1901至2155 'xxxx',xxxx

      能夠以2位字符的形式去插入或者以兩位數字的形式去插入

    • time

      time類型用來表示時分秒,存儲空間佔3個字節,再去給time類型的字段賦值時要這樣:"xx:yy:mm",xx表示多少時,yy表示多少分,mm表示多少秒

    • date

      date類型表示日期也就是x年x月x日,存儲空間佔3個字節,在去給date類型賦值的時候要這樣:"xxxx:yy:dd",xxxx表示哪一年,yy表示幾月,mm表示幾號。

    • datetime

      datetime類型表示具體的時間也就是x年x月x日x時x分x秒,存儲空間佔8個字節,在去給datetime類型賦值的時候要這樣:"xxxx-yy-dd ss :ff:mm",xxxx表示哪一年,yy表示幾月,dd表示幾號,ss表示多少時,ff表示多少分,mm表示多少秒。

  • 字符串類型:

    字符串類型又分爲如下幾種

    • char (m)

      固定長度可是,不是二進制字符類型,括號裏的m是該數據類型中能夠存儲的字符長度可是不能夠超過255,存儲空間是m個字節

    • varchar (m)

      固定長度可是,不是二進制字符類型,括號裏的m是該數據類型中能夠存儲的字符長度可是不能夠超過255,存儲空間是字符的長度也就是總共有多少個字符+1個字節

    • TINYTEXT

      短的,非二進制字符串類型,他的存儲空間爲字符串的長度+1個字節,可是字符串的長度不能大於256.

    • TEXT

      比短的長一點的,非二進制字符串類型,他的存儲空間爲字符串的長度+2個字節,可是字符串的長度不能大於2的16次方

    • MEDIUMTEXT

      比上一個長一點的,非二進制字符串類型,他的存儲空間爲字符串的長度+3個字節,可是字符串的長度不能大於2的24次方

    • LONGTEXT

      稍長一點的,非二進制字符串類型,他的存儲空間爲字符串的長度+4個字節,可是字符串的長度不能大於2的32次方

數據庫中的存儲引擎:

數據庫存儲引擎是數據庫的底層軟件組件,數據庫管理系統使用存儲引擎進行建立查詢和更改數據的操做,不一樣的存儲引擎提供不一樣的存儲機制,索引技巧等。

mysql默認從存儲引擎是innoDB ,由於innoDB是事務型數據庫的首選引擎

mysql中的查詢

上邊寫過的查詢主要是用於查詢單個表的,接下來是鏈接查詢的也就是好比有兩張表咱們能夠經過a表去查詢b表。

  • 內鏈接查詢

    內鏈接查詢就是能夠同時查詢多張表

    select * from 表1名 join 表2名 where 限制條件
      //限制條件必定要是:表名.字段名,只要使用join關鍵字進行對錶名與表名鏈接不只能夠兩張還能夠查詢多張表
    複製代碼
  • 外鏈接查詢

    外鏈接查詢又分爲左鏈接和右鏈接

    • 左鏈接

    • 右鏈接

相關文章
相關標籤/搜索