目錄
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(): 返回當前系統時間。