01-一文快速MySQL基礎

目錄

概述

MySQL數據庫軟件

SQL

DDL:操作數據庫、表

操作數據庫

操作表

客戶端圖形化工具:SQLYog

DML:增刪改表中數據 

DQL:查詢表中的記錄

感謝關注

mysql 數據類型分類


概述

數據庫的基本概念
1. 數據庫的英文單詞: DataBase 簡稱 : DB

2. 什麼數據庫:用於存儲和管理數據的倉庫。

3. 數據庫的特點:
        1. 持久化存儲數據的。其實數據庫就是一個文件系統
        2. 方便存儲和管理數據
        3. 使用了統一的方式操作數據庫 -- SQL

4. 常見的數據庫軟件

  • MySQL:開源免費的數據庫,小型的數據庫,已經被Oracle收購了。MySQL6.x版本也開始收費。後來Sun公司收購了MySQL,而Sun公司又被Oracle收購 
  • Oracle:收費的大型數據庫,Oracle公司的產品。 
  • DB2 :IBM公司的數據庫產品,收費的。常應用在銀行系統中。 
  • SQL Server:MicroSoft 公司收費的中型的數據庫。C#、.net等語言常使用。 
  • SQLite: 嵌入式的小型數據庫,應用在手機端,如:Android。 

MySQL數據庫軟件

1. 安裝
        參見《MySQL基礎.pdf》
2. 卸載
        1. 去mysql的安裝目錄找到my.ini文件
            複製 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
        2. 通過卸載程序,卸載MySQL
        3. 刪除C:/ProgramData目錄下的MySQL文件夾。        
3. 配置
 

詳細步驟參見《MySql基礎.pdf》

MySQL服務啓動

方式一:到window的服務管理器, 手動開啓和關閉MySQL服務。
方式二:cmd--> services.msc 打開服務的窗口
方式三:使用管理員打開cmd
                net start mysql : 啓動mysql的服務
                net stop mysql : 關閉mysql服務
 

MySQL登錄          

  • mysql -u用戶名 -p密碼          eg:mysql -uadmin -padmin
  • mysql -hip -u用戶名 -p密碼        eg:   mysql -h192.168.1.3 -uadmin -padmin
  • mysql --host=ip --user=用戶名 --password=密碼        eg:  mysql --host=192.168.1.3 --user=admin --password=admin

MySQL退出

  • exit
  • quit

MySQL目錄結構
1. MySQL安裝目錄:basedir="D:/develop/MySQL/"
             配置文件 my.ini
2. MySQL數據目錄:datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
幾個概念:
       數據庫:文件夾,在C:/ProgramData/MySQL/MySQL Server 5.5/Data/裏的每個目錄表示一個數據庫
       表:文件,數據庫目錄裏面的文件
       數據:數據,文件裏面存儲的數據


SQL

1.什麼是SQL?

Structured Query Language:結構化查詢語言
其實就是定義了操作所有關係型數據庫的規則。每一種數據庫操作的方式存在不一樣的地方,稱爲“方言”。
        
2.SQL通用語法

  • SQL 語句可以單行或多行書寫,以分號結尾。
  • 可使用空格和縮進來增強語句的可讀性。
  • MySQL 數據庫的 SQL 語句不區分大小寫,關鍵字建議使用大寫。
  • 3種註釋      單行註釋: -- 註釋內容 或 # 註釋內容(mysql 特有)           多行註釋: /* 註釋 */

3. SQL分類

  • DDL(Data Definition Language)數據定義語言:用來定義數據庫對象:數據庫,表,列等。關鍵字:create, drop,alter 等   
  • DML(Data Manipulation Language)數據操作語言:用來對數據庫中表的數據進行增刪改。關鍵字:insert, delete, update 等      
  • DQL(Data Query Language)數據查詢語言:用來查詢數據庫中表的記錄(數據)。關鍵字:select, where 等   
  • DCL(Data Control Language)數據控制語言:用來定義數據庫的訪問權限和安全級別,及創建用戶。關鍵字:GRANT, REVOKE 等

DDL:操作數據庫、表

CRUD  :   C(Create)     R(Retrieve)      U(Update)     D(Delete)

操作數據庫

C(Create):創建

  • 創建數據庫:create database 數據庫名稱;      
  • 創建數據庫,判斷不存在,再創建:create database if not exists 數據庫名稱;
  • 創建數據庫,並指定字符集 : create database 數據庫名稱 character set 字符集名;

eg:

create database if not exists demoDB character set utf8;

R(Retrieve):查詢
查詢所有數據庫的名稱:   show databases;
查詢某個數據庫的字符集,查詢某個數據庫的創建語句 : show create database 數據庫名稱;

U(Update):修改
修改數據庫的字符集 : alter database 數據庫名稱 character set 字符集名稱;

D(Delete) : 刪除
刪除數據庫 : drop database 數據庫名稱;
判斷數據庫存在,存在再刪除 :  drop database if exists 數據庫名稱;

使用數據庫
查詢當前正在使用的數據庫名稱 : select database();
使用數據庫 : use 數據庫名稱;


操作表

C(Create):創建表
語法:

create table 表名(
     列名1 數據類型1,
     列名2 數據類型2,
     ....
     列名n 數據類型n
);

注意:最後一列,不需要加逗號(,)
常用數據類型:

1. int:整數類型
   age int,
2. double:小數類型
   score double(5,2)
3. date:日期,只包含年月日,yyyy-MM-dd
4. datetime:日期,包含年月日時分秒     yyyy-MM-dd HH:mm:ss
5. timestamp:時間錯類型    包含年月日時分秒     yyyy-MM-dd HH:mm:ss    
   如果將來不給這個字段賦值,或賦值爲null,則默認使用當前的系統時間,來自動賦值
6. varchar:字符串
   name varchar(20):姓名最大20個字符
   zhangsan 8個字符  張三 2個字符

eg:

創建表
create table student(
   id int,
   name varchar(32),
   age int ,
   score double(4,1),
   birthday date,
   insert_time timestamp
);


複製表:create table 表名 like 被複制的表名;          
        

R(Retrieve):查詢
查詢某個數據庫中所有的表名稱 : show tables;
查詢表結構 :desc 表名;
 

U(Update):修改
            1. 修改表名 : alter table 表名 rename to 新的表名;
            2. 修改表的字符集 :alter table 表名 character set 字符集名稱;
            3. 添加一列 : alter table 表名 add 列名 數據類型;
            4. 修改列名稱 類型:
                alter table 表名 change 列名 新列別 新數據類型;
                alter table 表名 modify 列名 新數據類型;
            5. 刪除列 :alter table 表名 drop 列名;
 

D(Delete):刪除表
            drop table 表名;
            drop table  if exists 表名 ;

客戶端圖形化工具:SQLYog

https://www.onlinedown.net/soft/24926.htm


DML:增刪改表中數據 

向表中添加數據:insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
注意:
            1. 列名和值要一一對應。
            2. 如果表名後,不定義列名,則默認給所有列添加值  : insert into 表名 values(值1,值2,...值n);
            3. 除了數字類型,其他類型需要使用引號(單雙都可以)引起來
 

刪除數據:delete from 表名 [where 條件]
注意:
            1. 如果不加條件,則刪除表中所有記錄。
            2. 如果要刪除所有記錄
                1. delete from 表名;     -- 不推薦使用。有多少條記錄就會執行多少次刪除操作
                2. TRUNCATE TABLE 表名;     -- 推薦使用,效率更高 先刪除表,然後再創建一張一樣的表。
 

修改數據:update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 條件];

注意:如果不加任何條件,則會將表中所有記錄全部修改。


DQL:查詢表中的記錄

查詢語句格式:select * from 表名;

select
      字段列表
from
      表名列表
where
      條件列表
group by
      分組字段
having
      分組之後的條件
order by
      排序
limit
      分頁限定

基礎查詢

有如下student表:

1. 多個字段的查詢   :select 字段名1,字段名2... from 表名;
注意:如果查詢所有字段,則可以使用*來替代字段列表。

2. 去除重複:distinct          select  distinct name from student;    --查詢student表列出所有學生的名字,並去除重複

3. 計算列
              一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算)
              ifnull(表達式1,表達式2):null參與的運算,計算結果都爲null,所以通過ifnull函數進行判斷
               表達式1:哪個字段需要判斷是否爲null
               表達式2:如果該字段爲null後的替換值
4. 起別名:
            as:as也可以省略


條件查詢
1. where子句後跟條件
2. 運算符
    > 、< 、<= 、>= 、= 、<>
    BETWEEN...AND  
    IN( 集合) 
    LIKE:模糊查詢
        佔位符:
                _  :   單個任意字符
                %:多個任意字符
    IS NULL  
    and  或 &&
    or  或 || 
    not  或 !

-- 查詢年齡大於20歲
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;

-- 查詢年齡等於20歲
SELECT * FROM student WHERE age = 20;

-- 查詢年齡不等於20歲
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

-- 查詢年齡大於等於20 小於等於30

SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

-- 查詢年齡22歲,18歲,25歲的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

-- 查詢英語成績爲null
SELECT * FROM student WHERE english = NULL; -- 不對的。null值不能使用 = (!=) 判斷
SELECT * FROM student WHERE english IS NULL;

-- 查詢英語成績不爲null
SELECT * FROM student WHERE english  IS NOT NULL;
	
-- 查詢姓馬的有哪些? like
SELECT * FROM student WHERE NAME LIKE '馬%';

-- 查詢姓名第二個字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";

-- 查詢姓名是3個字的人
SELECT * FROM student WHERE NAME LIKE '___';

-- 查詢姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

排序查詢
語法:order by 子句
order by 排序字段1 排序方式1 ,  排序字段2 排序方式2...   

排序方式:
           ASC:升序,默認的。
           DESC:降序。

注意:如果有多個排序條件,則當前邊的條件值一樣時,纔會判斷第二條件。

-- 查詢所有數據,使用年齡降序排序
select * from student order by age desc;
-- 查詢所有數據,在年齡降序排序的基礎上,如果年齡相同再以數學成績升序排序
select * from student order by age desc, math asc;


聚合函數,分組查詢:

GROUP BY  :將一列數據作爲一個整體,進行縱向的計算。將分組字段結果中相同內容作爲一組,並且返回每組的第一條數據,所以單獨分組沒什麼用處。分組的目的就是爲了統計,一般分組會跟聚合函數一起使用。 

1. count:計算個數
            1. 一般選擇非空的列:主鍵
            2. count(*)
2. max:計算最大值
3. min:計算最小值
4. sum:計算和
5. avg:計算平均值

注意:聚合函數的計算,排除null值。
            解決方案:
                1. 選擇不包含非空的列進行計算
                2. IFNULL函數

分組查詢:
       
注意:
1. 分組之後查詢的字段:分組字段、聚合函數
2. where 和 having 的區別?

  • where 在分組之前進行限定,如果不滿足條件,則不參與分組。having在分組之後進行限定,如果不滿足結果,則不會被查詢出來
  • where 後不可以跟聚合函數,having可以進行聚合函數的判斷。
-- 按照性別分組。分別查詢男、女同學的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;

-- 按照性別分組。分別查詢男、女同學的平均分,人數,1)查詢所有數據,按性別分組。  2)統計每組人數
SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

--  按照性別分組。分別查詢男、女同學的平均分,人數 要求:分數低於70分的人,不參與分組
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

--  按照性別分組。分別查詢男、女同學的平均分,人數 要求:分數低於70分的人,不參與分組,分組之後。人數要大於2個人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人數 FROM student WHERE math > 70 GROUP BY sex HAVING 人數 > 2;

分頁查詢
語法:limit 開始的索引,每頁查詢的條數;
公式:開始的索引 = (當前的頁碼 - 1) * 每頁顯示的條數

limit 是一個MySQL"方言",其他數據庫有自己的分頁語法

-- 每頁顯示3條記錄 
SELECT * FROM student LIMIT 0,3; -- 第1頁
SELECT * FROM student LIMIT 3,3; -- 第2頁
SELECT * FROM student LIMIT 6,3; -- 第3頁

--如果你只想查所有數據的前多少條
SELECT * FROM student LIMIT 3;

感謝關注

    加油啊!

 

mysql 數據類型分類

分類 

類型名稱 

類型說明 

tinyInt 

微整型:很小的整數(佔8位二進制) 

smallint 

小整型:小的整數(佔16位二進制) 

mediumint 

中整型:中等長度的整數(佔24位二進制) 

int(integer) 

整型:整數類型(佔32位二進制) 

整數 

float 

單精度浮點數,佔4個字節 

小數 

double 

雙精度浮點數,佔8個字節 

time 

表示時間類型 

date 

表示日期類型 

日期 

datetime 

同時可以表示日期和時間類型 

char(m) 

固定長度的字符串,無論使用幾個字符都佔滿全部,M爲0~255之間的整數 

字符串 

varchar(m) 

可變長度的字符串,使用幾個字符就佔用幾個,M爲0~65535之間的整數 

tinyblob 

Big Large Object 

允許長度0~255字節 

blob 

允許長度0~65535字節 

mediumblob 

允許長度0~167772150字節 

大二進制 

longblob 

允許長度0~4294967295字節 

大文本 

tinytext 

允許長度0~255字節 

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章