MySQL教程


此文發表在簡書,復制過來,在下方放上鏈接。

https://www.jianshu.com/p/e6a9005c697b

 

MySQL入門教程

一、了解SQL

1.1    數據庫基礎

數據庫(database):保存有組織的數據的容器(通常是一個文件或一組文件)

表(table):某種特定類型數據的結構化清單

備注:數據庫中的每個表用表名標識自己,此名字是唯一的。

數據類型(datatype):所容許的數據的類型。每個表列都有都有相應的數據類型,它限制(或容許)該列中存儲的數據

SQL(發音為字母S-Q-L或sequel)是結構化查詢語言(Structured Query Language)的縮寫。SQL是一種專門用來與數據庫通信的語言

MySQL是一個客戶機—服務器DBMS

表頭(header):每一列的名稱

行(row):表中的一個記錄

值(value)行的具體信息,每個值必須與該列的數據類型相同

主鍵(primary key)一列(或一組列),其值能夠唯一區分表中每一行

列(column)表中的一個字段,所有表都是由一個或多個列組成的

外鍵(foreign key)外鍵為某個表中的一列,它包含另一個表中的主鍵值

1.2 MySQL腳本的基本組成

         MySQL通過執行SQL腳本來完成對數據庫的操作,該腳本由一條或多條MySQL語句(SQL語句+擴展語句)組成,保存時腳本文件后綴名一般為.sql,在控制台下,MySQL客戶端也可以對語句進行單句的執行而不用保存為.sql文件

標識符

        標識符用來命名一些對象, 如數據庫、表、列、變量等, 以便在腳本中的其他地方引用。MySQL標識符命名規則稍微有點繁瑣, 這里我們使用萬能命名規則: 標識符由字母、數字或下划線(_)組成, 且第一個字符必須是字母或下划線。

        對於標識符是否區分大小寫取決於當前的操作系統, Windows下是不敏感的, 但對於大多數 linux\unix 系統來說, 這些標識符大小寫是敏感的。

關鍵字:

        MySQL的關鍵字眾多, 這里不一一列出, 在學習中學習。 這些關鍵字有自己特定的含義, 盡量避免作為標識符。

語句:

        MySQL語句是組成MySQL腳本的基本單位, 每條語句能完成特定的操作, 他是由 SQL 標准語句 + MySQL 擴展語句組成。

函數:

        MySQL函數用來實現數據庫操作的一些高級功能, 這些函數大致分為以下幾類: 字符串函數、數學函數、日期時間函數、搜索函數、加密函數、信息函數。

1.3 MySQL中的數據類型

MySQL有三大類數據類型, 分別為數字、日期\時間、字符串, 這三大類中又更細致的划分了許多子類型:

        數字類型

                整數: tinyint、smallint、mediumint、int、bigint

                浮點數: float、double、real、decimal

                日期和時間: date、time、datetime、timestamp、year

        字符串類型

                字符串: char、varchar

                文本: tinytext、text、mediumtext、longtext

                二進制(可用來存儲圖片、音樂等): tinyblob、blob、mediumblob、longblob

二、使用MySQL數據庫

2.1.創建一個數據庫

create database 數據庫名

例如我們需要創建一個名為 test 的數據庫, 在命令行下執行以下命令:

            create database test character set gbk;

為了便於在命令提示符下顯示中文, 在創建時通過 character set gbk 將數據庫字符編碼指定為 gbk。創建成功時會得到 Query OK, 1 row affected(0.02 sec) 的響應。

2.2.選擇要操作的數據庫

use database;

use 語句可以不加分號, 執行 use samp_db 來選擇剛剛創建的數據庫, 選擇成功后會提示: Database changed

2.3創建數據庫表

          create table 表名稱(列聲明);

 

2.4.刪除數據庫

基本形式:drop database 數據庫名;

drop database test;

 

三、操作MySQL數據庫

3.1.增

3.1.1插入數據

插入完整的行

Insert into 表名 值()

 

插入完整的行更安全的方法:

 

插入多個行

 

插入檢索出的數據

 

3.1.2 增加一列數據

基本形式:alter table 表名 add 列名 列的數據類型 [after 插入位置]

alter table customers add tel char(11);

 

在cust_id之后增添列sex:

alter table customers add sex char(11) after cust_name;

 

3.2.查

3.2.1 查詢語句

基本形式:select 列名 from 表名[查詢條件];

查詢顧客姓名和城市

select cust_name,cust_city from customers;

 

使用通配符*查詢表中所有的內容,基本形式:select * from 表名;

Select * from customers;

 

按照特定條件查詢:基本形式 select * from 表名 where 條件;

查詢產品中產品名稱是fuses的信息

select * from products where prod_name = 'fuses';

 

查詢產品中產品價格<=10的信息

select * from products where prod_price <=10;

 

3.2.2操作符

And 操作符

檢索匹配and連接的所有條件的行

查詢產品中產品id是1003 and產品價格<=10的信息

select * from products where vend_id =1003 and prod_price <=10;

 

  • or 操作符

檢索匹配任一條件的行

查詢產品中產品id是1003 或者 產品價格<=10的信息

select * from products where vend_id =1003 or prod_price <=10;

 

In操作符

用來指定條件范圍,范圍中的每個條件都可以進行匹配

  • order by 操作符

用來指定列以字母順序排序數據

select * from products where vend_id in (1002,1003)

  • order by prod_name;

 

3.2.3通配符進行操作

like操作符

通配符:用來匹配值的一部分的特殊字符

百分號(%)通配符:匹配0到多個字符

select * from products where prod_name like '%anvil%'

  • order by prod_name;

 

下划線(_)通配符:只匹配單個字符而不是多個字符

 

3.2.4正則表達式進行搜索

.表示匹配任一一個字符

|表示匹配兩個串之一

[123]表示匹配1或2或3,[123]ton表示匹配1ton或2ton或3ton

 

匹配特殊字符

\\.表示查找. , \\-表示查找- 。

 

匹配多個實例

select * from products where prod_name regexp '[[:digit:]]{4}'

  • order by prod_name;

 

定位符

select * from products where prod_name regexp '^[0-9\\.]'

  • order by prod_name;

 

 

 

3.2.5創建計算字段

         拼接字段

    cancat()拼接串

         

執行算術計算

 

3.2.6使用數據處理函數

 

left()返回串左邊的字符

length()返回串的長度

locate()找出串的一個子串

lower()將串轉換為小寫

ltrim()去掉串左邊的空格

right()返回串右邊的字符

rtrim()去掉串右邊的空格

soundex()返回串soundex值,soundex是一個將任何文本串轉換為描述其語音表示的字母數字模式的算法。

 

substring()返回子串的字符

upper()將串轉換為大寫

日期和時間處理函數

查詢日期,請使用date()

 

檢索一個時間段的所有訂單:

 

數值處理函數

Abs()返回一個數的絕對值

3.2.7匯總數據

Avg()函數

 

count()函數

count(*)

 

count(column)

 

Max()函數

 

Min()函數

 

Sum()函數

 

組合聚焦函數

 

3.2.8分組數據

創建分組

 

過濾分組

Having()函數

 

Having()函數和where條件同時使用。

 

Limit 檢索的行數

3.2.9子查詢

 

3.2.10聯結表

創建聯結表

select vendors.vend_id,vend_name,prod_name,prod_price from vendors,products

where vendors.vend_id = products.vend_id

  • order by vend_name,prod_name;

 

內部聯結

 

創建3個連接表

select vendors.vend_id,vend_name,prod_name,prod_price,order_num,quantity from vendors,products,orderitems

where vendors.vend_id = products.vend_id and orderitems.prod_id = products.prod_id and order_num = 20005

  • order by vend_name,prod_name;

 

高級聯結

自聯結

 

內部聯結

 

外部聯結

 

3.2.11組合查詢

 

3.3.改

3.3.1更新數據

基本形式:updata 表名稱 set 列名稱 = 新值 where 更新條件

更新一個列的值

update customers set cust_email = 'elmer@fudd.com'

where cust_name = 'm.martian';

 

更新多個列的數據

update customers

set cust_name = 'the fudds',

cust_email = 'elmer@fudd.com'

where cust_id = 2;

 

3.3.2重命名表

rename table customers2 to customers; 重命名表customers2變成customers。

 

3.3.3修改列名

基本形式:alter table 表名 change 列名稱 列新名稱 新列數據類型;

alter table customers change cust_email email char(5);

 

3.4.刪

3.4.1刪除特定的行

基本形式:delete from 表名 where 刪除條件

delete from customers

where cust_id = 4;

 

刪除所有的行

truncate table 表名

3.4.2刪除表中的一列

基本形式:alter table 表名 drop 列名稱;

alter table customers drop sex;

 

3.4.3刪除整個表

基本形式:drop table 表名;

drop table customers;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM