認識mysql(4)

来源:https://www.cnblogs.com/python-sl/archive/2018/08/29/9557196.html
-Advertisement-
Play Games

今日是MySQL的第四篇,難度會稍微加大,加油! 開始吧! 1、外鍵(foreign key) 1.定義:讓當前表欄位的值在另一個表的範圍內選擇 2.語法: foreign key(參考欄位名) references 主表(被參考欄位名) on delete 級聯動作 on update 級聯動作 ...


今日是MySQL的第四篇,難度會稍微加大,加油!

開始吧!

1、外鍵(foreign  key)

  1.定義:讓當前表欄位的值在另一個表的範圍內選擇

  2.語法:

    foreign key(參考欄位名)

    references 主表(被參考欄位名)

    on   delete  級聯動作

    on   update  級聯動作 

  以上的語法連在一起看

  3.使用規則

    主表、從表欄位數據類型要一致

    主表被參考欄位:主鍵

  4.示例

    表1、繳費信息表(財務)

      id  姓名  班級  繳費金額

      1  唐伯虎  AD06  300

      2  點秋香  AD06  200

      3  祝枝山  AD06  100

    表2、學生信息表(班主任)

      id 姓名 繳費金額

      1 唐伯虎 300

      2 點秋香 260

      3   xxx    xxx

      ....................

    創建表

    表1(主表)

      create table jftab(
      id int primary key,
      name varchar(15),
      class char(5),
      money int
      );

    插入數據

      insert into jftab values
      (1,"唐伯虎","AD06",300),
      (2,"點秋香","AD06",260),
      (3,"祝枝山","AD06",250);

    表2(從表)     

      create table bjtab(
      stu_id int,
      name varchar(15),
      money int,
      foreign key(stu_id) references jftab(id)
      on delete cascade
      on update cascade
      );

    插入數據

      insert into bjtab values

      (1,"唐伯虎",300),(2,"點秋香",260);

  5、刪除外鍵

    alter  table  表名  drop  frreign  key  外鍵名;

    查看外鍵:show  create  table  表名;

  6、級聯動作

    cascade

    數據級聯刪除、更新(參考欄位)

    restrict(預設)

    從表有相關聯記錄,不允許主表操作

    set  null

    主表刪除、更新,從表相關聯記錄欄位值為NULL

  7、已有表添加外鍵

  alter  table  表名  add  for  foreeign  key(參考欄位)  references  主表(被參考欄位)

  on delete ...

  on  update ...

2、表的複製

  1.複製MOSHOU.sanguo的全部記錄和欄位到sanguo2

  create table sanguo2 select * from MOSHOU.sanguo;

  2.複製MOSHOU.sanguo表的前3條記錄,sanguo3

  create table sanguo3

  select * from MOSHOU.sanguo limit 3;

  3.複製MOSHOU.sanguo表的id,name,country三個欄位的前5條記錄,sanguo4

  create table sanguo4

  select id,name,country from MOSHOU.sanguo limit 5;

   複製表結構

   create table 表名 select * from 表名 where false;

  註意:

   複製表的時候不會把原表的鍵(key)屬性複製過來

3、嵌套查詢

  定義 :把內層的查詢結果作為外層的查詢條件

  語法格式

  select ... from 表名 where 條件(select ....);

  示例

    把攻擊值小於平均攻擊值的英雄名字和攻擊值顯示出來   

       1、先計算平均值

       select avg(gongji) from MOSHOU.sanguo;

       2、找到 < 平均值

      select name,gongji from MOSHOU.sanguo

      where gongji<平均值;

     子查詢:

      select name,gongji from MOSHOU.sanguo

      where

       gongji<(select avg(gongji) from  MOSHOU.sanguo);

   2、找出每個國家攻擊力最高的英雄的名字和攻擊值

     select name,gongji from sanguo where 

     gongji in(select max(gongji) from sanguo  group by country);

 4、多表查詢

  select 欄位名列表 from 表名列表; (笛卡爾積)

   1、顯示省和市的詳細信息

  河北省 石家莊市
  河北省 廊坊市
  湖北省 武漢市

  select sheng.s_name,city.c_name from sheng,city

  where
  sheng.s_id=city.cfather_id;

   2、顯示省市縣詳細信息

  select sheng.s_name as sheng,city.c_name as city,xian.x_name as xian from sheng,city,xian
  where
  sheng.s_id=city.cfather_id and
  city.c_id=xian.xfather_id;

5、連接查詢 

  內連接 

  1.語法格式

    select 欄位名 from
    表1 inner join 表2 on 條件
    inner join 表3 on 條件;

  2、顯示省市詳細信息

    select sheng.s_name,city.c_name from sheng
    inner join city on sheng.s_id=city.cfather_id;

  3、顯示省市縣詳細信息  

    select sheng.s_name,city.c_name,xian.x_name from
    sheng inner join city
    on sheng.s_id=city.cfather_id
    inner join xian
    on city.c_id=xian.xfather_id;

  2、外連接

    以 左表 為主顯示查詢結果

    select 欄位名 from 表1 left join 表2 on 條件

    left join 表3 on 條件;

    顯示省市詳細信息

    select sheng.s_name,city.c_name from sheng

     left join city

    on sheng.s_id=city.cfather_id;

     右連接

    用法同左連接,以右表為主顯示查詢結果

 6、數據備份(mysqldump,在Linux終端中操作)

  命令格式

    mysqldump  -u用戶名  -p  源庫名  > ~>***.sql

  源庫名的表示方式

  --all-databases  備份所有庫

  -B 庫1 庫2 庫3   備份多個庫

  庫名 表1 表2 表3 備份指定庫的多張表

  示例:

    備份所有庫,放到 mydata 目錄下:all.sql

    mysqldump -uroot -p --all-databases > all.sql

    備份 db4 庫中的 sheng city xian 三張表,scx.sql

     mysqldump -uroot -p db4 sheng city xian > scx.sql

     備份 MOSHOU 和 db4 庫, md.sql

     mysqldump -uroot -p -B MOSHOU db4 > md.sql

     備份 db4 庫, db4.sql

     mysqldump -uroot -p db4 > db4.sql

7、數據恢復

  1、命令格式(Linux終端)

  mysql -uroot -p 目標庫名 < ***.sql

  2、從所有庫備份中恢復某一個庫(--one-database)

  mysql -uroot -p --one-database 目標庫名 < all.sql

  mysql -uroot -p --one-database db4 < all.sql

8、mysql的用戶賬戶管理

  1、開啟MySQL遠程連接  

    1、sudo -i
    2、cd /etc/mysql/mysql.conf.d/
    3、subl mysqld.cnf
      #bind-address = 127.0.0.1 ctrl + s保存  ----此行為註釋
    4、/etc/init.d/mysql restart

  2、添加授權用戶

    用root用戶登錄mysql

    mysql -uroot -p123456

    授權:   

      grant 許可權列表 on 庫.表 to "用戶名"@"%"
      identified by "密碼" with grant option;   

    許可權列表:all privileges 、select 、insert
    庫.表 : *.* 所有庫的所有表

  3、示例
    1、添加授權用戶tiger,密碼123,對所有庫的所有表有所有許可權
    grant all privileges on *.* to "tiger"@"%" identified by "123" with grant option;
    2、添加用戶rabbit,對db4庫有所有許可權
    grant all privileges on db4.* to "rabbit"@"%" identified by "123" with grant option;

 

本小結完!

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、啟動 cd usr/local/nginx/sbin ./nginx 二、重啟 更改配置重啟nginx 判斷配置文件是否正確 三、關閉 查詢nginx主進程號 ps -ef | grep nginx 從容停止 kill -QUIT 主進程號 快速停止 kill -TERM 主進程號 強制停止 k ...
  • [toc] 1. 安裝顯卡驅動 檢測顯卡驅動及型號 添加ELPepo源 安裝NVIDIA驅動檢測 2. 安裝CUDA\CUDNN 2.1 cuda 官網下載cuda,最好下載9.0版本: "https://developer.nvidia.com/cuda toolkit archive" 選擇符合 ...
  • 很多人都有使用綠色軟體的習慣,在這裡我簡單稱其為Portable App 將這些軟甲放到U盤中隨身攜帶,便於我們使用更加符合自身習慣的功能軟體。 相信習慣將軟體放到U盤啟動都會碰到一個問題,就是每次打開這些軟體就需要在目錄中尋找對應的啟動文件了。 多數人日常生活中都會通過使用快捷方式啟動軟體,那麼我 ...
  • asyncio模塊是python之父寫的模塊,按說應該是靠譜的,python3.6版本定義為穩定版本。 說明書:https://docs.python.org/3/library/asyncio.html?highlight=asyncio#module-asyncio 大概定義:該模塊提供了使用協 ...
  • 註意:字體文件必須是TTF或者ttf格式的文件, 1、yum install -y fontconfig mkfontscale2、mkdir -p /usr/share/fonts/windows_fonts3、上傳ttf格式的字體文件到 /usr/share/fonts/windows_font ...
  • 安裝的 ESXi 的物理主機密碼忘記,登錄 不上了,需要重新安裝 ESXi,安裝後恢複原先物理主機上的 虛擬機的方法如下(VMFS分區完好): 關於 VMFS 分區: ESXi 的安裝時會劃分一個分區用於 VMFS文件系統。而 ESXi 的虛擬機就安裝在 VMFS分區中,所以只要 VMFS 分區沒有 ...
  • 一、應用場景介紹 本文主要是介紹Apache和Tomcat在Linux環境下的安裝講解以及AJP協議動靜分離負載均衡的實現,以及與Nginx負載性能比較。聯網安裝較為簡單,故此處只說離線的Linux環境下是如何安裝的。因為大多數時候,公司的生產環境是在內網環境下,無外網,伺服器處於離線狀態。 二、 ...
  • 解決辦法一: 首先查看本機Oracle安裝路徑中 portlist.ini 文件裡面的埠號是多少,例如我的就是5500. 那麼在瀏覽器中輸入的地址就是:https://localhost:5500/em/ 解決辦法二: 如果前面是在IE瀏覽器或者Microsoft Edge瀏覽器中打不開,建議換一 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...