MySQL資料庫基礎筆記

来源:https://www.cnblogs.com/mumuxin-gv/archive/2019/11/18/11882603.html
-Advertisement-
Play Games

資料庫 資料庫就是存儲和管理數據的倉庫,用戶可以對資料庫中的數據進行增刪改查等操作。 資料庫的分類 關係型資料庫(Oracle、MySQL、SQLite等) 非關係型資料庫(Redis、MongoDB等) MySQL簡介 MySQL是一個關係型資料庫,由MySQLAB公司開發,目前屬於Oracle旗 ...


資料庫

資料庫就是存儲和管理數據的倉庫,用戶可以對資料庫中的數據進行增刪改查等操作。

資料庫的分類

  • 關係型資料庫(Oracle、MySQL、SQLite等)

  • 非關係型資料庫(Redis、MongoDB等)

MySQL簡介

MySQL是一個關係型資料庫,由MySQLAB公司開發,目前屬於Oracle旗下。

特點:開源、支持大型資料庫、使用標準SQL、適用於多種操作系統以及提供多種編程語言介面。

安裝(Ubuntu中):

sudo apt-get install mysql-server
sudo apt-get install mysql-client

MySQL客戶端連接服務端:

mysql -uusername -ppassword

退出:exit、quit

常用數據類型

int、bit、decimal、varchar、char、date、time、datetime、enum、text

常用數據約束

主鍵primary key、非空not null、唯一unique、預設default、外鍵foreign key

資料庫設計三範式

  1. 原子性

  2. 滿足1,表必須有主鍵,非主鍵欄位必須完全依賴於主鍵

  3. 滿足2,非主鍵必須直接依賴於主鍵

E-R模型

實體-關係模型,E-R模型就是描述資料庫存儲數據的結構模型

  • 一對一

  • 一對多

  • 多對多

常用SQL語句

  1. 基本語句

    • 查看所有資料庫 show databases;

    • 創建資料庫 create datebase database_name charset=utf8;;

    • 使用資料庫 use database_name;

    • 查看當前使用的資料庫 selecet database();

    • 刪除資料庫 drop database database_name;

    • 查看當前庫中所有表 show tables;

    • 建表 create table table_name(id int unsigned primary key auto_increment, name varchar(30) not null, age tinyint unsigned not null);

    • 修改表

      • 添加欄位 alter table table_name add sexy bit not null;

      • 修改欄位類型 alter table table_name modify sexy tinyint unsigned not null;

      • 修改欄位名 alter table table_name change sexy gender tinyint unsigned not null;

      • 刪除欄位 alter table table_name drop gender;

      • 設置外鍵 alter table table_name add foreign key(cls_id) references classes(id);

      • 刪除外鍵 alter table table_name drop foreign key cls_id;

    • 查看建表(庫)SQL語句 show create table(database) table_name(database_name);

    • 刪除表 drop table table_name

  2. 表數據的基本增刪改查:

      • insert into table_name values();

      • insert into table_name(name) values('a');

      • insert into table_name values(),(),();

    • 刪:delete from table_name where id=33;

      • 邏輯刪除,設置一個bit類型欄位表示是否刪除

    • 改: update table_name set name='c', age=18 where id=222;

      • select * from table_name;

      • select name,age from table_name;

  3. as關鍵字(起別名)

    • select t.name,t.age from table_name as t;

  4. distinct關鍵字(去重)

    • select distinct name from table_name;

  5. where條件查詢

    • select * from table_name where id<10 and age>18;

  6. 模糊查詢

    • select * from table_name where name like '郭%' or name like '郭威_';

  7. 範圍查詢

    • select * from table_name where id between 5 and 10 or id in (3, 19);

  8. 空判斷查詢

    • select * from table_name where gender is null;

    • ifnull(age,18)判斷欄位是否為空,為空則使用提供值

  9. 排序查詢

    • select * from table_name order by age desc;

      desc表示倒序排序,ase升序排序,預設升序

  10. 分頁查詢

    • select * from table_name limit start,count;

  11. 聚合函數查詢

    count()、max()、min()、sun()、avg()、round(avg(age),保留小數位)

    • select avg(age) from table_name where gender=0;

  12. 分組查詢

    • select gender,avg(gender) from table_name group by gender with rollup;

      with rollup 在最後新增一行查詢的記錄

    • select gender,count(*) from table_name group by gender having count(*)>5;

      having 過濾分組數據,只用於group by

  13. 連接查詢

    • 內連接

      • select name from table1 inner join table2 on table1.age = table2.age;

    • 左連接

      • left join

    • 右連接

      • right join

    • 自連接

      • select a.id,a.name from table as a inner join table as b where a.pid=b.id;

  14. 子查詢

    • select * from table where age > (select avg(age) from table);

      性能較差

  15. 將查詢結果插入其他表

    • insert into country(name) select hero_country from hero group by hero_country;

  16. 連接更新

    • update hero h inner join country c on h.country=c.name set h.country=c.id;

  17. 建表同時添加數據

    • create table country(id int unsigned primary key auto_increment,name varchar(30) not null)select hero_country from hero group by hero_country;

事務

事務就是一系列sql操作作為一個單元執行,要麼全部執行,要麼全部不執行。

  1. 事務的四大特性

    • 原子性

    • 一致性

    • 隔離性

    • 持久性

  2. MySQL中使用事務需選擇InnoDB存儲引擎,其他引擎不支持事務

  3. 開啟事務

    • begin;

    • start transaction;

    • set autocommit=0;

      MySQL預設自動提交,該設置關閉預設提交功能

  4. 提交事務

    • commit;

  5. 回滾事務

    • rollback;

索引

  • 創建索引 alter table table_name add index name_index(name);

  • 聯合索引 alter table table_name add index name_index(name,age);

  • 刪除索引 alter table table_name drop index name_index;

引擎


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

-Advertisement-
Play Games
更多相關文章
  • PyMySQL的使用 安裝 sudo pip3 install pymysql 基本使用 from pymysql import connect # 1.創建鏈接 coon = connect() """ * 參數host:連接的mysql主機,如果本機是'localhost' * 參數port:連 ...
  • 上一篇說到Spark的yarn client運行模式,它與yarn cluster模式的主要區別就是前者Driver是運行在客戶端,後者Driver是運行在yarn集群中。yarn client模式一般用在互動式場景中,比如spark shell, spark sql等程式,但是該模式下運行在客戶端 ...
  • 本文主要瞭解了在Linux環境下安裝MySQL後的配置文件的位置,以及如何創建配置文件。 ...
  • 未提交讀:讀尚未提交的數據 已提交讀:讀取已經提交的數據(oracle預設) 可重覆讀:保證同一事務多次讀取同樣記錄的結果一致(MySQL預設) 串列化:每次讀取都獲得表級共用鎖,讀寫相互阻塞 ...
  • https://blog.csdn.net/vivianXuejun/article/details/78809655 https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=20728 ...
  • mssql資料庫的主鍵約束中,主鍵名查詢: 修改主鍵名稱的方法: ...
  • 【關閉集群順序】1.使用crs_stat 命令查詢RAC節點的服務狀態是否正常[grid@ora01sh ~]$ crs_stat -t -v2.使用srvctl (service control)命令依次關閉集群服務關閉順序:關閉資料庫(實例)-->關閉ASM實例-->關閉節點服務1)關閉資料庫[ ...
  • Redis 是一款比較常用的 NoSQL 資料庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠相容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...