MySQL:資料庫入門篇

来源:https://www.cnblogs.com/kakawith/archive/2018/02/26/8474665.html
-Advertisement-
Play Games

1,什麼是資料庫?——存儲數據的倉庫 資料庫技術是電腦應用領域中非常重要的技術,它產生於20世紀60年代末,是數據管理的最新技術,也是軟體技術的一個重要分支。 簡單的說,資料庫就是一個存放數據的倉庫,這個倉庫是按照一定的數據結構(數據結構是指數據的組織形式或數據之間的聯繫)來組織、存儲的,我們可以 ...


1,什麼是資料庫?——存儲數據的倉庫

  資料庫技術是電腦應用領域中非常重要的技術,它產生於20世紀60年代末,是數據管理的最新技術,也是軟體技術的一個重要分支。

  簡單的說,資料庫就是一個存放數據的倉庫,這個倉庫是按照一定的數據結構(數據結構是指數據的組織形式或數據之間的聯繫)來組織、存儲的,我們可以通過資料庫提供的多種方法來管理資料庫里的數據。更簡單的形象理解,資料庫和我們生活中存放雜物的倉庫性質一樣,區別隻是存放的東西不同。

2,什麼是數據?——你所知道的都是數據

  存儲在表中的信息就叫做數據

3,什麼是資料庫表? 

數據表是關係資料庫中一個非常重要的對象,是其它對象的基礎,也是一系列二維數組的集合,用來存儲、操作數據的邏輯結構。根據信息的分類情況。
一個資料庫中可能包含若幹個數據表,每張表是由行和列組成,記錄一條數據,數據表就增加一行,每一列是由欄位名和欄位數據集合組成,列被稱之為欄位,
每一列還有自己的多個屬性,例如是否允許為空、預設值、長度、類型、存儲編碼、註釋等

4,資料庫的組成:

  1)資料庫伺服器

  2)資料庫管理系統

  3)庫

  4)表

  5)記錄

  6)數據

   資料庫系統有3個主要的組成部分

   1.資料庫(Database System):用於存儲數據的地方。

   2.資料庫管理系統(Database Management System,DBMS):用戶管理資料庫的軟體。

   3.資料庫應用程式(Database Application):為了提高資料庫系統的處理能力所使用的管理資料庫的軟體補充。

5,環境的安裝

  MySQL下載地址:https://dev.mysql.com/downloads/installer/

a:官網下載mysql安裝程式
b:安裝mysql服務端
c:安裝mysql客戶端
d:客戶端連接服務端
e:通過客戶端向伺服器發送命令,執行對資料庫文件的增刪改差操作。 

#1.下載:MySQL Community Server 5.7.20
    https://dev.mysql.com/downloads/mysql/

#2.解壓
將官網下載的解壓包 解壓到指定目錄(例如 D://mysql-5.7.20-winx64)

#3.添加環境變數
【右鍵電腦】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變數】--》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】

C:\Program Files (x86)\Parallels\Parallels Tools\Applications;d:\mysql-5.7.16-winx64\bin

#4.初始化
mysqld --initialize-insecure

#5.啟動mysql服務
mysqld

#6.連接mysql服務
mysql -uroot -p  回車,有密碼輸入密碼,沒有繼續回車
安裝

 

6,庫操作

  1)創建庫

  CREATE DATABASE DB2 charset utf8;

  2)刪除

  DROP DATABASE db2;

  3)使用(進入)

  use db1

  4)查看庫  

  show databases ; -- 查看當前用戶下所有的庫名
  select DATABASE(); -- 查看當前使用的
  show CREATE DATABASE db1; -- 查看創建庫的信息

7,表操作

  1)創建表 

  create table info1(
    id int not null auto_increment PRIMARY key,
    name VARCHAR(50) not null,
    sex CHAR(2) NULL
    )

  2)查看表  

  select * from info1; -- 查看表數據

  DESC info1; -- 查看表結構

  show create table info1; -- 查看表的創建信息

  3)刪除表

  drop table info;

  4)修改表 

  -- ALTER table info1 add age int not null ; -- 添加表欄位

  -- alter table info1 drop age; -- 刪除表欄位

  -- alter table info1 modify name char(100) null ; -- 修改表欄位屬性

  -- alter table info1 CHANGE names name varchar(50) not null; -- 修改表名稱

  補充信息
  alter table info1 add PRIMARY key(ID,names); -- 添加主鍵

  alter table info1 drop PRIMARY key ;-- 刪除主鍵

  alter table info1 alter sex set default '男'; -- 設置預設值

  alter table info1 alter sex drop default; -- 刪除預設值

  5)修改表名稱

  rename  table info1 to info; -- 修改表名

  6)複製表  

  1.CREATE table info3 select * from info where id =1;
  ps:主鍵自增/索引/觸發器/外鍵 不會 被覆制
  2.複製表結構
  CREATE table info5 SELECT * FROM info where 1!=1

  CREATE table info4 LIKE info;
  ps: 數據/觸發器/外鍵 不會被覆制

8,數據類型

MySQL支持多種類型,大致可以分為四類:數值、字元串類型、日期/時間和其他類型。

二進位類型:
    bit[(M)]
       二進位位(101001),m表示二進位位的長度(1-64),預設m=1

整數類型:
    tinyint[(m)] [unsigned] [zerofill]

        小整數,數據類型用於保存一些範圍的整數數值範圍:
        有符號:-128127.
        無符號:255

        特別的: MySQL中無布爾值,使用tinyint(1)構造。

    int[(m)][unsigned][zerofill]

        整數,數據類型用於保存一些範圍的整數數值範圍:
        有符號: -21474836482147483647
        無符號:4294967295

    bigint[(m)][unsigned][zerofill]
        大整數,數據類型用於保存一些範圍的整數數值範圍:
        有符號:-92233720368547758089223372036854775807
        無符號:18446744073709551615
        
作用:存儲年齡,等級,id,各種號碼等

註意:為該類型指定寬度時,僅僅只是指定查詢結果的顯示寬度,與存儲範圍無關,所以我們使用預設的就可以了
    有符號和無符號的最大數字需要的顯示寬度均為10,
    而針對有符號的最小值則需要11位才能顯示完全,所以int類型預設的顯示寬度為11是非常合理的
    
小數型:
    decimal[(m[,d])] [unsigned] [zerofill]
        準確的小數值,m是數字總個數(負號不算),d是小數點後個數。 m最大值為65,d最大值為30。

        特別的:對於精確數值計算時需要用此類型
        decaimal能夠存儲精確值的原因在於其內部按照字元串存儲。

    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
        單精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。
        有符號:(-3.402823466E+38 to -1.175494351E-38),0,(1.175494351E-38 to 3.402823466E+38)
        無符號:0,(1.175 494 351 E-383.402 823 466 E+38)

        **** 數值越大,越不准確 ****

    DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
        雙精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。

        有符號:(-1.797 693 134 862 315 7 E+308-2.225 073 858 507 201 4 E-308),0,
               (2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308)
        無符號:0,(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E+308)
        
        **** 數值越大,越不准確 ****
        
作用:存儲薪資、身高、體重、體質參數等

字元型:
    char (m)
        char數據類型用於表示固定長度的字元串,可以包含最多達255個字元。其中m代表字元串的長度。
        
        PS: 即使數據小於m長度,也會占用m長度,但是在查詢時,查出的結果會自動刪除尾部的空格
        
        特點:定長,簡單粗暴,浪費空間,存取速度快
            
    varchar(m)
        varchar 數據類型用於變長的字元串,可以包含最多達65535個字元(理論上可以,但是實際上在超出21845長度後,mysql會自動幫您轉換數據類型為文本類型)。
        其中m代表該數據類型所允許保存的字元串的最大長度,只要長度小於該最大值的字元串都可以被保存在該數據類型中。

        PS: varchar類型存儲數據的真實內容,例如:如果'ab  ',尾部的空格也會被存起來
        強調:varchar類型會在真實數據前加1-2Bytes的首碼,該首碼用來表示真實數據的bytes位元組數(1-2Bytes最大表示65535個數字,正好符合mysql對row的最大位元組限制,即已經足夠使用)
        如果真實的數據<255bytes則需要1Bytes的首碼(1Bytes=8bit 2**8最大表示的數字為255)
        如果真實的數據>255bytes則需要2Bytes的首碼(2Bytes=16bit 2**16最大表示的數字為65535)
        特點:變長,精準,節省空間,存取速度慢
        
        sql優化:創建表時,定長的類型往前放,變長的往後放
                        比如性別          比如地址或描述信息
        PS:雖然varchar使用起來較為靈活,但是從整個系統的性能角度來說,char數據類型的處理速度更快,有時甚至可以超出varchar處理速度的50%。
            因此,用戶在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡            
        
    text
        text數據類型用於保存變長的大字元串,可以最多到65535 (2**161)個字元。

枚舉類型(瞭解):      
    enum
     
        An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
        
        示例:
            CREATE TABLE user (
             name VARCHAR(40),
             sex ENUM('', '', '未知')
            );
            INSERT INTO user (name, sex) VALUES ('人1',''), ('人2',''),
                                                ('人3','未知'),('人4','人妖');
            PS:人4會插入成功嗎??        
集合類型(瞭解):
    set
    
        A SET column can have a maximum of 64 distinct members.
        示例:
        CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
        
        INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

日期/時間類型:
                
    DATE     日期值
    
        YYYY-MM-DD(1000-01-01/9999-12-31)

    TIME  時間值或持續時間
        HH:MM:SS('-838:59:59'/'838:59:59'YEAR 年份值
        YYYY(1901/2155DATETIME 混合日期和時間值

        YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59TIMESTAMP 時間戳

        YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)
        
作用:存儲用戶註冊時間,文章發佈時間,員工入職時間,出生時間,過期時間等

數據類型

9.數據操作
  1。增
  -- INSERT into info values(1,'韓涉','女');

  -- INSERT into info(id,NAMES) values(2,'韓涉');

  -- INSERT into info(id,NAMES) values(3,'韓涉'),(4,'韓涉'),(5,'韓涉');

  -- INSERT into info(names,sex) select nameS,sex from info ;

  2。刪
  -- DELETE from info where id = '11'; -- 刪除指定數據

  -- delete from info; -- 刪除整張表中所有的數據

  TRUNCATE info; -- 清空整張表
  3.改
  update info set sex = '人妖', names = '韓小強' where id=12;

  4.查


    4.1 簡單查詢
      select * from person; -- 查詢所有

      select name,SEX from person; -- 按指定欄位查詢

      select name,SEX as'性別' from person; -- as 表示為欄位起別名

      select salary+200 from person; -- 可以進行數據列運算

      select DISTINCT age,name FROM person; -- 去重覆查詢

    4.2 條件查詢
      1.運算符
        select * FROM person WHERE age >20;
        select * FROM person WHERE age <=20;

        select * FROM person WHERE age <>20;
        select * FROM person WHERE age !=20;

      2.null 關鍵字
        select * FROM person where dept_id is null;

        select * FROM person where dept_id is not null;

        select * FROM person where name ='';

      3.邏輯運算符 and or

        select * from person where age = 28 and salary =53000;

        select * from person where age = 23 or salary =2000;

        select * from person where not(age = 28 and salary =53000);

    4.3 區間查詢

    select * from person where age BETWEEN 18 and 20;

    ps: between...and 前後包含所指定的值
    等價於 select * from person where salary >= 4000 and salary <= 8000;


    4.4集合查詢

    select * from person where id = 1 or id = 3 or id = 5;

    select * from person where id not in(1,3,5);



    4.5 模糊查詢


    select * from person where name like '%e%'; -- 包含指定參數
    select * from person where name like '%e'; -- 以什麼結尾
    select * from person where name like 'e%'; -- 以什麼開頭

    select * from person where name like '__e%'; -- _表示單個字元站位符

    select * from person where name like '__';

    4.6 排序查詢
    select * from person where age >30 ORDER BY salary desc; -- ASC正序 DESC倒序

    select * from person ORDER BY CONVERT(name USING gbk);-- 中文排序

  


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

-Advertisement-
Play Games
更多相關文章
  • @(Linux基礎)[top命令] top命令 [TOC] 語法 top (選項) 選項 d: 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 p: 通過指定監控進程ID來僅僅監控某個進程的狀態。 q: 該選項將使top沒有任何延遲的進行刷新。如果調用程式有超級用戶許可權, ...
  • ifconfig 1、功能 用來查看和配置網路設備,當網路環境發生改變時可通過此命令對網路進行相應的配置。 2、用法 ifconfig [網路設備] [參數] (1)、參數 up 啟動指定網路設備/網卡 down 關閉指定網路設備/網卡 -a 顯示所有配置的網路介面(無論是否激活) add 給指定網 ...
  • 當Alwasyon group啟用了DTC_SUPPORT = PER_DB, 會導致無法創建replicaiton.無法修改已經存在的replication. 原因: 噹噹Alwasyon group啟用了DTC_SUPPORT = PER_DB,任何對於DMV的查詢都被認為是'user xact ...
  • 今天思考on,where,having的執行順序,聯想到了整個sql語句的執行順序。 sql語句的執行順序為 (1) from (2) on (3) join (4) where (5) group by, count, sum, avg(6) having (7) select (8) disti ...
  • 假如一張表中有如下的數據: 當使用select Count(*) from TableName表示獲取表中數據記錄的條數; 有時候可以通過select Count(列名) from TableName來等價於select Count(*) from TableName,但是下麵的情況就不會等價 結果 ...
  • 常識引入 1.概念: 資料庫:本質上是一個文件夾 1)查看本機所有資料庫:show databases; 結束符:分號【;】,一切數據行的結尾都以分號作為結束 2)創建資料庫:create 資料庫名; 3)查看當前使用的資料庫,select database();【此時的database()是一個函 ...
  • 2016年5月中旬,由於急著項目上線,cassandra3.4版本在沒有很多測試的情況下就使用了,當時部署在3台16G的windows系統伺服器上。幾個月使用下來,多數問題都是OOM導致的宕機 。特別是有一次宕機,在重啟資料庫後發現記憶體不斷上升,多次重啟也都是如此。通過觀察判斷可能原因是資料庫採取的 ...
  • 參考:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-delete-mailitems-sp-transact-sqlhttps://docs.microsoft.c ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...