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
  • 示例項目結構 在 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# ...