MySQL資料庫

来源:https://www.cnblogs.com/wualin/archive/2018/11/04/9904741.html
-Advertisement-
Play Games

資料庫 1. 資料庫伺服器:運行資料庫管理軟體的電腦 2. 資料庫管理軟體:mysql,oracle,db2,sqlserver 3. 庫:文件夾 4. 表:文件 5. 記錄:食物一系列典型的特征 6. 數據:描述事物特征的符號 資料庫的分類: 關係型:sqllite,db2,oracle,acc ...


資料庫

  1. 資料庫伺服器:運行資料庫管理軟體的電腦
  2. 資料庫管理軟體:mysql,oracle,db2,sqlserver
  3. 庫:文件夾
  4. 表:文件
  5. 記錄:食物一系列典型的特征
  6. 數據:描述事物特征的符號
  • 資料庫的分類:
    • 關係型:sqllite,db2,oracle,access,sqlserver,mysql,關係型資料庫需要有表結構
    • 非關係型:mongodb,redis,memcache:key-vavle結構存儲
  • 統一字元編碼
    • utf-8
  • 初識SQL語句
  1. DDL語句:
  2. DML語句:
  3. DCL語句:
    • 操作文件夾(庫)
      • 增:create database db1 charset utf-8;
      • 查:show create database db1;查看所有show databases;
      • 改:alter database db1 charset gbk;
      • 刪:drop database db1;
    • 操作文件(表)
      • 切換文件夾: use db1;
      • 查看當前所在文件夾:select database;
      • 增:create table t1(id int,name char);
      • 查:show create table t1;查看所有表:show tables;desc t1;
      • 改:alter table t1 modify name char(6);
      • 刪: drop database db1;
    • 操作文件內容(記錄)
      • 增:insert t1(id,name)values(1,'egon'),(2,'egon2');
      • 查:select id,name from t1;(必須切換到當前庫目錄,否則需要增加庫首碼)
      • 改:updata db1.t1 set name='SB';updata db1.t1 set name='ALEX' where id=1;
      • 刪:delete from t1;delete from t1 where id =2;

庫操作:

  • 語法:
create database 資料庫名charset utf8;

表操作:

  • 存儲引擎就是存儲表的類型,查看mysql支持的存儲引擎:show engines;
  • 指定表類型/存儲引擎
create table t1(id int)engine=innodb;
create table t2(id int)engine=memory;
語法:
create table 表名(欄位名 類型[()])
...

數據類型

* 整數類型:

字元類型

枚舉類型和集合類型

約束條件not null 與default

* create table t1(id int(11)unsigned);在int確定數據類型後附加的約束條件
* not null:不能為空如果傳空了就是預設值default
* create table t2(
    id int,
    name char(6)
    sex enum('male','female')not null default 'male'
    );

約束條件unique key:傳入的值是唯一的

* create table department(id int,name char(10) unique);
* create table department(id int,name char(10),unique(id),unique(name));
* 聯合唯一:create table services(id int,ip char(15),prot int,unique(id),unique(ipprot));

約束條件:primary key

* 約束:not null unique
* 存儲引擎(innodb):對於innodb存儲引擎來說,一張表內必須有一個主鍵
* 單列主鍵
    * create table t17(id int primary key,name char(16));
* 複合主鍵
    * create table t18(ip char(15),port int,primary key(ip,port));

約束條件auto_increment:自增

* create table t19(id int primary key auto_increment);在插入欄位的時候只需要插入數據,id會自增
* auto_increment步長與起始設置:
    * 查看:show variables like 'auto_inc%'
    * 設置步長:
        * set session auto_increment_increment=5;
        * set global auto_increment_increment=5;
    * 設置起始偏移量:
        * set global auto_increment_offset=3;
    * 起始偏移量<=步長
* 使用delete表清空後,會記錄上次自增到什麼位置,再傳值的時候會從上次結束的地方開始
* 使用truncate清空表後不會出現上述情況

約束條件foreign key建立表之間的關係

* 先建被關聯的表,並且保證被關聯的欄位是唯一的,再建關聯的表
    * create table dep(id int primary key,mame char(16),comment char(6));
    * create table emp(id int primaty key,name char(10),sex enum('male','female'),dep_id int,foreign key(dep_id) references dep(id)); 
* 插入數據:
    * 先往被關聯的表插入記錄
    * 再往關聯表插入記錄
* 刪除數據:
    * 先刪除關聯的數據
    * 再刪除被關聯的數據
    * 在建立關聯表時:在foreign ket加上 on delete cascade與on update cascade 沒有逗號
* 儘量不要去建立表關係,為了方便擴展儘量在邏輯層面去設計表關係

表關係之多對一

* 一個表的多條記錄對應另外一個表的一條記錄

表關係之多對多

* 一個表的一條記錄對應另一個表的多條記錄,並且另一個表的一條記錄對應一個表的多條記錄,解決方法是建立一個中間表,存放兩個表之間的表關係

表關係一對一

* 一一對應的關係

記錄的增刪該查

插入數據:
1. 插入完整數據(順序插入)
    語法一:
    INSERT INTO 表名(欄位1,欄位2,欄位3…欄位n) VALUES(值1,值2,值3…值n);

    語法二:
    INSERT INTO 表名 VALUES (值1,值2,值3…值n);

2. 指定欄位插入數據
    語法:
    INSERT INTO 表名(欄位1,欄位2,欄位3…) VALUES (值1,值2,值3…);

3. 插入多條記錄
    語法:
    INSERT INTO 表名 VALUES
        (值1,值2,值3…值n),
        (值1,值2,值3…值n),
        (值1,值2,值3…值n);

4. 插入查詢結果
    語法:
    INSERT INTO 表名(欄位1,欄位2,欄位3…欄位n) 
                    SELECT (欄位1,欄位2,欄位3…欄位n) FROM 表2
                    WHERE …;
更新數據
語法:
    UPDATE 表名 SET
        欄位1=值1,
        欄位2=值2,
        WHERE CONDITION;

示例:
    UPDATE mysql.user SET password=password(‘123’) 
        where user=’root’ and host=’localhost’;
刪除數據
語法:
    DELETE FROM 表名 
        WHERE CONITION;

示例:
    DELETE FROM mysql.user 
        WHERE password=’’;

練習:
    更新MySQL root用戶密碼為mysql123
    刪除除從本地登錄的root用戶以外的所有用戶
單表查詢
#語法
SELECT 欄位1,欄位2... FROM 表名
                    WHERE   條件
                    GROUP BY field
                    HAVING 篩選
                    ORDER BY field
                    LIMIT 限制條數
關鍵字的執行優先順序:
from 找到表 
where   拿著where指定的約束條件,去文件/表中取出一條條記錄
group by    將取出的一條條記錄進行分組group by,如果沒有group by 則整體作為一組
having      將分組的結果進行having過濾
select      執行select
distinct    去重
order by    將結果按條件排序
limit       限制結果的顯示條數
  • where 約束:where字句中可以使用:
    • 比較運算符:> < >= <= <> !=
    • between 80 and 100 值在80到100之間
    • in(80,90,100)值是80或90或100
    • like 'engo%'
      pattern可以是%或_,%表示任意多字元,_表示一個字元
    • 邏輯運算符:在多個條件直接可以使用邏輯運算符 and or not

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

-Advertisement-
Play Games
更多相關文章
  • DNS客戶端配置文件:etc/resolv.conf /etc/resolv.conf文件相當於windows如下圖: 當然/etc/resolv.conf文件為輔助配置DNS文件,其實在網卡裡也可以配置DNS的 /etc/sysconfig/network-scripts/ifcfg-eth0 註 ...
  • linux中創建目錄當然使用命令工具mkdir == (make directory),聯想記憶法能讓你記得牢固。 如果你要創建幾個目錄,例如:dir1目錄,dir2目錄,dir3目錄可以這樣 怎麼樣?很不錯吧!再見~~~ ...
  • 2018-11-05 00:06:15開始寫 要配置2個MySQL環境變數 1.MYSQL_HOME: 2.PATH: 謝謝、Thank you、Salamat Do(撒拉瑪特朵)、あリがCám o*n(嘉蒙)とゥ(阿裡嘎都)、감사합 니다 (勘三哈咪瘩)、terima Kasih(得力馬卡系)、k ...
  • 一、關於安裝 SQL Server 資料庫的安裝,經過自己的安裝,總體還是比較容易,沒有太多難度,安裝包在網上也有很多,在此,就跳過安裝的這一步。 二、初次啟動SQL Server 安裝完成資料庫後,如果不啟動SQL Server的服務,是登錄不了資料庫的。啟動服務有三種方式啟動,具體如下。 1、“ ...
  • 關於SQL Server 2008 想起關於SQL Server 2008的故事,曾經在大一的時候跟著視頻學習過一段時間,那時因為想多學習一些技術,才去學,遺憾的是,曾經是三分熱度,沒學多久就被扔掉了,如今再次撿起來,重新學習,並且想要樹立長久的學習態度,在今後的學習中,要及時的把學習的內容更新到這 ...
  • 1、儘可能的早做選擇和投影,可使中間結果變小,節省幾個數量級的時間 2、把選擇和投影串接起來,一元運算序列可以一起執行,只需對整個關係掃描一遍 3、把投影與其前或後的二元運算結合起來,在第一次用關係時去掉一些屬性,可以避免多次掃描整個關係 4、把某些選擇與其前的笛卡兒積合併成一個連接,當R*S有選擇 ...
  • 一、 使用create關鍵字創建表 --(1)創建新表use 資料庫(在那個資料庫中建表)create table 表名(欄位名1(列名) 數據類型 列的特征,欄位名2(列名) 數據類型 列的特征(NOT NULL),......)--(2)創建帶有主鍵約束的表語法create table 表名(字 ...
  • 2018-11-04 19:35:12 開始寫 刷新後就可以看見導入的資料庫了(按F5刷新) 謝謝、Thank you、Salamat Do(撒拉瑪特朵)、あリがCám o*n(嘉蒙)とゥ(阿裡嘎都)、감사합니다 (勘三哈咪瘩)、terima Kasih(得力馬卡系)、kob-khun(寇布庫恩)、 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...