MYSQL 初學

来源:https://www.cnblogs.com/phoenix-7/archive/2022/09/12/16685557.html
-Advertisement-
Play Games

一.數據的存儲方式 特定的文件 / 記憶體 / 第三方雲伺服器 / 資料庫伺服器 二.什麼是資料庫 資料庫按照一定的形式來組織存儲數據,目的是為了便於操作數據 —— 增刪改查 三.資料庫發展歷史 網狀資料庫 -> 層次型資料庫 -> 關係型資料庫 -> 非關係型資料庫(NoSQL) 關係型資料庫邏輯結 ...


一.數據的存儲方式

    特定的文件 / 記憶體 / 第三方雲伺服器 / 資料庫伺服器

二.什麼是資料庫

  資料庫按照一定的形式來組織存儲數據,目的是為了便於操作數據 —— 增刪改查

三.資料庫發展歷史

    網狀資料庫 -> 層次型資料庫 -> 關係型資料庫 -> 非關係型資料庫(NoSQL)

    關係型資料庫邏輯結構

    Server  ->  Database  ->  Table  ->  Row  ->  Column

  資料庫伺服器    資料庫       數據表       行          列

  四.mysql資料庫

 oracle:MySQL

 馬丁:MariaDB

xampp

伺服器套裝,保護多款伺服器端軟體,包含mysql,....

 1.mysql部署結構

    (1)伺服器端:負責存儲、維護數據 —— 銀行的資料庫伺服器

        C:/xampp/mysql/bin/mysqld.exe   啟動文件

         占用埠3306

    (2)客戶端:負責連接伺服器,對數據進行操作 —— 銀行的ATM機

        C:/xampp/mysql/bin/mysql.exe  

 2.使用客戶端連接伺服器端

       mysql.exe  -h127.0.0.1  -P3306   -uroot   -p

         -h   連接的伺服器,IP地址/功能變數名稱   127.0.0.1/localhost   自己電腦的IP地址和功能變數名稱

         -P   mysql所占用的埠

         -u   提供用戶名,root是mysql的管理員賬戶

         -p   提供root對應的密碼,xampp下root密碼為空

  mysql  -uroot    簡寫形式

連接命令結束不能加分號

 3.常用的管理命令

    quit;    退出伺服器的連接

    show  databases;   顯示所有的資料庫

    use  資料庫名稱;   進入指定的資料庫

    show  tables;   顯示所有的數據表

    desc  數據表名稱;  描述指定的數據表的表頭有哪些項

 五.SQL命令

  結構化查詢語言,用於操作關係型資料庫伺服器,主要對數據進行增刪改查

 1.SQL命令運行方式

    (1)交互模式

        客戶端輸入一行,點擊回車,伺服器就執行一行,適用於臨時性的查看數據。

    (2)腳本模式

        把要執行的所有命令寫在一個腳本文件中,一次性的提交給伺服器執行,適用於批量的操作數據。

        mysql  -uroot<拖拽要提交的腳本文件          回車

 2.SQL命令的語法規範    

    (1)一條SQL命令可以跨越多行,以英文的分號作為結束

    (2)SQL命令不區分大小寫,習慣上關鍵字大寫,非關鍵字小寫

    (3)假設某一條SQL命令出現語法錯誤,則此條命令往後所有命令不再執行

    (4)分為單行註釋和多行註釋

         -- 單行註釋

         #單行註釋

         /* 多行註釋 */

六.常見的SQL命令

  1.設置客服端連接伺服器端編碼為utf8
     set names utf8;

   2.丟棄資料庫,如果存在

       drop  database  if  exists  資料庫名稱;

  3.創建一個新的資料庫,設置存儲字元的編碼為utf8
     create database hantang charset=utf8;

   4.進入創建的資料庫

       use  資料庫名稱;

   5.創建數據表

       create  table  數據表名稱(

            列名稱  列類型,

                ...

        );

七.數據操作

   1.插入數據

       insert into 數據表名稱 values(...);

   2.刪除數據

       delete from 數據表名稱 where 條件;

   3.修改數據

       update 數據表名稱 set 列名稱=值, ...  where 條件;

   4.查詢數據

       select * from 數據表名稱;

八.電腦存儲字元

   1.如何存儲英文字元

      ASCII:對所有的英文及其符號進行編碼,總共有128個

      Latin-1:對歐洲字元進行了編碼,總共有256個,相容ASCII;MySQL預設使用這種編碼

   2.如何存儲中文字元

  GB2312:對6000多漢字進行了編碼,相容ASCII

  GBK:對2萬多漢字進行了編碼,相容GB2312

  Unicode:對世界上主流國家常用的語言進行了編碼,具體有三種存儲方案,utf-8,utf-16,utf-32

   3.解決中文亂碼

  (1)確保腳本文件的編碼是utf8

  (2)設置客戶端連接伺服器端編碼為utf8

      set names utf8;

  (3)設置伺服器端創建資料庫存儲字元的編碼為utf8

      charset=utf8

    4.針對於個別情況,還是出現亂碼

退出交互模式

  執行  chcp   65001  將命令行編碼改為utf-8

重新進入交互模式查詢數據

    MySQL可視化操作

九.列類型

   在創建數據表的時候,指定的列存儲的數據類型

   create table t1(

      nid  列類型

   );

   1.數值型

   tinyint  微整型,占1個位元組,範圍-128~127

   smallint  小整型,占2個位元組,範圍-32768~32767

   int  整型,占4個位元組,範圍-2147483648~2147483647

   bigint  大整型,占8個位元組,範圍

   float   單精度浮點型,占4個位元組,存儲的值越大精度越低

   double  雙精度浮點型,占8個位元組,存儲的值越大精度越低

   decimal(M,D)  定點小數,占16個位元組,M代表總的有效位數,D代表小數點後的位數

   boolean   布爾型,只有兩個值,分別是true和false,存儲只有兩個值的數據,例如:性別、是否為會員、是否為推薦商品...

true和false是關鍵字,不能加引號

布爾型在使用的時候會轉為tinyint,true轉為1,false轉為0,也可以直接插入1或者0

   2.日期時間型                      

  date  日期型  格式 '2022-10-30'

  time  時間型  格式 '14:55:30'

  datetime   日期時間型   格式 '2022-10-30 14:55:30'

   3.字元串型

  varchar(M)  變長字元串,不會產生空間浪費,數據操作速度相對慢,常用於存儲變化長度的數據,例如:姓名、文字標題、詳情...  M的最大值是65535

  char(M)  定長字元串,可能會產生空間浪費,數據操作速度相對快,常用於存儲固定長度的數據,例如:手機號碼、身份證號碼...  M的最大值是255

  text(M)  大型變長字元串,M的最大值4G

 

varchar(5)

char(5)

a

a\0

a\0\0\0\0

ab

ab\0

ab\0\0\0

一二三

一二三\0

一二三\0\0

 選擇合理列類型

  create  table  t1(

     id  int,

     title  varchar(64),

     birthday  date,

     age  tinyint,

     phone  char(11),

     sex  boolean

  );

資料庫存儲圖片,存儲的是圖片的路徑

img/1.jpg

img/huawei.png

十列約束  

  mysql可以對插入的值進行驗證,例如:編號不能出現重覆、性別隻能是男或者女、一個人的成績範圍0~100之間... 只有符合條件才允許插入

  create  table  t1(

    pid  int  列約束

  );

   1.主鍵約束 —— primary key

      聲明瞭主鍵約束的列上,不允許插入重覆的值,一個表中只能有一個主鍵約束,通常加在編號列,會加快數據的查詢速度

null  表示一個暫時無法確定的值,例如:暫時無法確定商品的價格、無法確定一個員工的手機、家庭住址...

null是關鍵字,不能加引號

      主鍵約束禁止插入null

   2.非空約束 —— not null

      聲明瞭非空約束的列,禁止插入null

十一.列約束

   3.唯一約束 —— unique

      聲明瞭唯一約束的列不允許插入重覆的值,一個表中可以使用多次唯一約束

      允許插入null,甚至多個null

一旦使用了唯一約束,可能會影響到數據的預設排序

   4.檢查約束 —— check

  也稱為自定義約束,可以自己指定約束條件

  create table student(

    score  tinyint  check(score>=0 && score<=100)

  );

  mysql不支持檢查約束,極大影響數據插入速度。

   5.預設值約束 —— default

  (1)設置預設值

    create  table  ht_event(

       ctime  date  default  '2022-8-31'

    );

    如果不設置預設值,則為null

  (2)應用預設值

    ①在插入值的位置,使用default關鍵字,就會自動應用預設值

      insert into ht_event values(3,'事件測試', default);

    ②給指定的列提供值,沒有出現的列會自動應用預設值

      insert into ht_event(eid, title) values(4,'事件測試');

   6.外鍵約束

   聲明瞭外界約束的列插入的值必須在另一個表的主鍵列出現,目的確保兩個表之間建立關聯。

   外鍵列要和對應的主鍵列的類型要保持一致

   foreign key(外鍵列)  references  另一個表(主鍵列)

  十二.自增列

  auto_increment:自動增長,聲明瞭自增列,只需要賦值為null,就會獲取最大值然後加1插入

   註意事項:必須添加在整數型的主鍵列

十三.簡單查詢


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

-Advertisement-
Play Games
更多相關文章
  • 單鏈表實現約瑟夫環問題 約瑟夫環 這裡建議使用迴圈單鏈表 代碼實現(c語言) #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }Node; void ysflb(int n, ...
  • ###快速上手SSM(Spring,SpringMVC,Mybatis)框架整合項目 環境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 資料庫環境: 創建一個存放書籍數據的資料庫表 CREATE DATABASE `ssmbooks`; USE `ssmbooks ...
  • Django框架(九) cookie與session簡介 網址的發展史: 1、起初網站都沒有保存用戶功能的需求,所有用戶訪問返回的結果都是一樣的。 比如:新聞網頁,博客網頁,小說... (這些網頁是不需要登錄後才能訪問的,每個人訪問的結果都一樣) 2、後來出現了一些需要保存用戶信息的網站 比如:支付 ...
  • 由於本文需要有一定的Stream基礎,所以如果不懂什麼是Stream的同學請移步:Java Stream入門 操作分類 graph LR 操作分類 中間操作 終端操作 操作分類 中間操作 有狀態 中間操作 無狀態 短路 終端操作 非短路 終端操作 中間操作只進行操作的記錄,而實際的操作是由終端操作來 ...
  • 這兩天在對一些ORM進行性能測試(涉及SqlSugar、FreeSql、Fast.Framework、Dapper.LiteSql),測試用的是Winform程式,別人第一眼看到我的程式,說,你這測試沒意義! 可能我的測試程式的某些地方寫的比較變態吧,但我認為有現實意義,並且網上有相關網站崩潰問題的 ...
  • 參考鏈接:https://www.systutorials.com/docs/linux/man/7-netlink/ #1. 監聽Netlink消息類型示例 Netlink是用戶程式與內核通信的socket方法,通過Netlink可以獲得修改內核的配置,常見的有獲得介面的IP地址列表、更改路由表或 ...
  • 0. 前言 可以臨時設置,也可以修改配置文件 1. 修改配置文件 # 打開 配置IP的文件 路徑如下 sudo vi /etc/netplan/01-network-manager-all.yaml 1.1 輸入(修改)以下內容 # This is the network config writte ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 1.結論先行 無論ibp(innodb_buffer_pool_size)是否充足,MySQL的性能都遠不如GreatSQL。 MySQL的性能平均約為 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...