MySQL數據庫和SQL基礎

MySQL數據庫

MySQL

mysql是基於關係數據庫的,關係數據庫:將數據組織成表,並表現爲表與表之間的關係。
如:學生的信息就可以抽象成一張表(學號,姓名,所選課程號,年齡…),課程也可以抽象成一張表(課程名稱,課程號,人數…),通過這些關係,數據庫管理系統(DBMS)可以從表中提取某種特定的數據集合。
PHP訪問數據庫需要MySQL需要進行配置。
可以使用一些可視化的界面管理工具(phpMyAdmin)…

MySQL數據庫的基本操作

1.表,字段,記錄和鍵

	表:與平時看到的表格基本一樣,表的每一列都有一個唯一的名字,每列包含了不同的數據,被成作列的值。
		每一列都是某種特定的數據類型。
	字段:表中的列叫做一個字段。
	記錄:表中的一行叫做記錄,表中的每一行基本都是一條完整的數據(很少時候會存在留空)。
	鍵:通常將表中的某一個字段的值設定成唯一的值,用來區分不同的記錄。(學生的學號就可以唯一區分一個學生)

2.登錄和退出MySQL

在命令行中使用如下的語法格式命令行:

mysql -u user_name -p password -h host

-u:用來指定用戶名user_name。
-p:用來指定該用戶名登錄MySQL所使用的密碼password。
-h:用來指定所要連接的數據庫服務器host。

root一般表示MySQL的超級管理員用戶,擁有操作MySQL的最高權限。

這裏我已經將MySQL文件下的bin配置了系統環境變量(這樣可以直接輸入命令操作數據庫)。
在這裏插入圖片描述
show database :可以展示已經有的數據庫。
CREATE DATABASE data_name; ----->創建數據庫
DROP DATABASE data_name; ---->刪除數據庫
展示:(不知道這個刪除成功沒有,自己嘗試ing)
在這裏插入圖片描述

3.表的查看與建立

a.查看錶

USE database_name :可以轉到要管理或查看信息的數據庫,data_name爲數據庫名稱。
SHOW TABLES :可以查看某個數據庫下的所有表。

在這裏插入圖片描述

b.創建表
CREATE TABLE table_name(
column_1 type [modifiers]
[, column_2 type [modifilers]
..
);

table_name:表名
column_1:表的第一列,即第一個字段的名字:
type:該字段的類型,其後是可選項,是對該字段的進一步說明。

每一列創建語句後必須以逗號結尾。

CREATE TABLE USers(
UserId INT UNSIGNED NOT NULL,
UserName VARCHAR(50) NOT NULL,
Gender CHAR(6) NOT NULL DEFAULT 'Male',
RegTime DATE NOT NULL
);

上面語句:創建了一個名爲Users的表,有四個字段,UserId,UserName,Gender,RegTime;
NOT NULL:不允許存入任何NULL值,
DEFAULT:指定一個字段的默認值。

4.建立索引

在數據量很大的時候,爲了減少MySQL查找記錄使用的時間,可以爲那些要頻繁查找的字段建立索引.
在這裏插入圖片描述
INDEX:是建立索引的關鍵字,
index_name:索引的名稱。
(應該將所有建立索引的字段聲明爲NOT NULL。)

CREATE TABLE books(
id INT NOT NULL,
name VARCHAR(40) NOT NULL,
price DECIMAL(3,2),
INDEX idx(id)
);

MySQL支持主鍵這種特殊的索引。在MySQL中,主鍵是帶有名稱PRIMARY的唯一鍵。
在創建表的時候,可以將某列設爲主鍵。

CREATE TABLE users(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(30),
creater_time DATE
);

MySQL中的SQL語法基礎

SQL(Structured Query Language):結構化查詢語言。

1.查看錶結構

利用上面的USE database_name 切換數據庫,查看錶可以用show tables 。
若要查看某個表的結構就可以用:DESCRIBE命令(可以簡寫成DESC)實現。
在這裏插入圖片描述

2.插入數據

使用INSERT語句向表中插入數據。

INSERT INTO table_name(column_1,column_2,...) VALUES (values_1,values_2,.....);

第一種寫法:(這裏可以省略表名後面括號的內容,但是這樣就必須按照順序寫入數據)
在這裏插入圖片描述
第二種寫法:

INSERT INTO Users SET UserId=125,UserName='David',Gender='Male',RegTime='2019-10-24 12:50:23';

在這裏插入圖片描述

3.查詢數據

使用SELECT語句

SELECT column_1,column_2,...  FROM table_name [WHERE clause];

where 子句可以選擇的,表示按某種條件查詢表中的特定的記錄。
(*):表示查看所有的項。
在這裏插入圖片描述
這裏是從Users表中,查找UserId和UserName兩項。
在這裏插入圖片描述

4.條件查詢

通過使用 WHERE 語句(通常是用來搜索字段)選擇出 UserId 大於123 的用戶。
在這裏插入圖片描述
查找UserName 爲 Tom 的記錄。
在這裏插入圖片描述
WHERE 子句可以同時出現多個條件,條件之間可以使用AND或OR 邏輯運算符連接。

查找UserId 大於123 並且小於 125 的用戶記錄(哈哈哈 這裏當然可以直接寫UserName=‘124’)。
在這裏插入圖片描述

5.更新數據

使用 UPDATE 語句完成對錶中數據的修改

UPDATE table_name SET column_1=value_1,column_2=value_2,.... [WHERE clause];

這裏是將UserId=123 的用戶名更新爲:Mark。
在這裏插入圖片描述

6.刪除數據

使用 DELETE 語句刪除表中的數據。

DELETE FROM table_name [WHERE clause];

在刪除數據時,如果沒有 where 子句,表中的數據會在沒有任何提醒的情況全部刪除!!!

在這裏插入圖片描述

7.對查詢結果排序

MySQL中,執行SELECT 語句所生成的結果的默認順序由其出現的順序決定。
使用 ORDER BY 子句可以完成對查詢結果的排序。有兩種排序方式,ASC表示升序排序,DESC表示降序排序.
爲了方便排序,增加了幾項數據。
在這裏插入圖片描述
使用ORDER BY 子句 對UserId 升序排序(…這裏默認是升序喲)。
在這裏插入圖片描述
再來個降序:
在這裏插入圖片描述

8.對查詢結果分組

使用 GROUP BY 進行分組 。
這裏我們通過性別進行分組:
在這裏插入圖片描述

9.對查詢結果進行限定

除了 WHERE 子句外,MySQL還提供了兩個SQL的通用方法用於查詢條件,LIMIT和HAVING。
這個兩個子句主要是爲已有的查詢結果設置限定條件,從已有的數據結果進一步選出所需要的數據。

LIMIT

用來限定查詢返回的記錄條數。
LIMIT 3 :表示返回查詢結果中的前3行記錄。
LIMIT 0,10 :表示從查詢結果中的第一行開始,返回10行記錄。

對UserId 降序排序後,返回前3行記錄:
在這裏插入圖片描述

HAVING

HAVING 子句通常與 分組有關,即和GROUP BY 子句有關。它是在SELECT 語句查詢出結果後纔開始做條件限定。
創建下面的表:
在這裏插入圖片描述
通過調用 HAVING 等語句查找薪水在5000.00以上的級別:
在這裏插入圖片描述
我的測試結果:
在這裏插入圖片描述

10.MySQL的數據類型


數據類型 說明
INT 整數值,MySQL支持有符號或無符號整數值,用UNIGNED INT 指定無符號整數值。
DECIMAL 指定數字值的精度和範圍,如DECIMAL (5,2)。
REAL 浮點數值
CHAR 定長字符類型,定義爲CHAR類型的字段不能保存長度大於指定長度的字符串,多於部分會被截斷,短於指定長度的字符串,會用空白補足指定的長度後存入表中
VARCAHR 變長字符串,指定長度範圍1~255
TEXT 文本類型,存放更長的文本型數據。
DATE 日期值
TIME 時間值,存放的是與日期無關的一天中的任何時間。
DATATIME MySQL支持,用於存放日期和時間的類型

11.MySQL中的模式匹配

SQL中的模式匹配是根據一個不完整的字符串,查找字段的值。‘J%’可以用來查找J字母開頭,
模式匹配表達式中,不能使用基本的比較運算符,只能使用LINK 或 NOT LINK運算符。


模式 說明
% 匹配任意多字符,如Mar%可以匹配 Martin,Mars,Mark等
. 匹配任意單一字符,如 .ike 可以匹配bike,dike,like…等
* 匹配前面的字符的0個或多個 ,如cofe 可以匹配 cofe,coffe,cofffe …等
^ 匹配^後的字符(或字符串) 爲開頭的字符串,如^MySQL 可以匹配MySQL guide,MySQL 教材 …等

12.使用MySQL函數

在這裏插入圖片描述

a.集合函數

COUNT():函數
統計人數:
在這裏插入圖片描述
統計以字母J 開頭的姓名的人數:
在這裏插入圖片描述
MAX()函數:
薪水最高的記錄:
在這裏插入圖片描述
MIN()函數:找最小值
SUM()函數:求和
AVG()函數:求平均值
在這裏插入圖片描述

b.字符串處理函數

LENGTH(‘字符串’):字符串長度
SUBSTRING(string,pos,len):截取字符串

c.日期函數

YEAR( time):返回年份
UNIX_TIMESTAMP():獲取一個UNIX時間戳。
DATE_FORMAT(data,format):格式化一個日期。
NOW(): 返回當前系統時間。

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