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
  • 移動開發(一):使用.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...