1.MySQL資料庫
MySQL是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,從而增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中
小型網站的開發都選擇 MySQL 作為網站資料庫,搭配 PHP 和 Apache 可組成良好的開發環境。
2.MySQL儲存方式
一臺資料庫伺服器中會建立很多資料庫,在資料庫中會建立很多張表,在表中會有很多記錄。
3.SQL結構化查詢語言
SQL是高階的非過程化程式語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫腳
本檔案的副檔名,可以巢狀,具有極大的靈活性和強大的功能。
4.SQL語言的分類
(1)DDL(資料定義語言)
(2)DML(資料操作語言)
(3)DCL(資料控制語言)
(4)DQL(資料查詢語言)
5.MySQL資料庫的建立、修改和刪除
(1)建立資料庫
語法: create database 資料庫名稱 [character set 字符集 collate 字符集校對規則](一般忽略);
(2)檢視資料庫
檢視所有資料庫:
語法: show databases;
檢視某個資料庫:
語法: show create database 資料庫名稱;
(3)修改資料庫:
語法:alter database 資料庫名稱 [character set 字符集 collate 字符集校對規則](一般忽略);
(4)刪除資料庫:
語法:drop database 資料庫名稱;
(5)使用或者切換資料庫:
語法:use 資料庫名稱;
6.MySQL表的建立、修改和刪除
(1)建立表
語法:create table 表名(
資料名稱 資料型別(長度) 約束,
…….
);
注:括號內的語句用逗號進行多次建立,最後的語句不加任何標點符號
資料型別:(MySQL所對應的Java型別)
Java中的型別 MySQL中的型別
byte/short/int/long tinyint/smallint/int/bigint
float float
double ouble
boolean bit
char/String char和varchar型別
char和varchar的區別:
char代表是固定長度的字元或字串。
定義型別char(8),向這個欄位存入字串hello,那麼資料庫使用三個空格將其補全。
varchar代表的是可變長度的字串。
定義型別varchar(8), 向這個欄位存入字串hello,那麼存入到資料庫的就是hello。
Date date/time/datetime/timestamp
datetime和timestamp區別
datetime就是既有日期又有時間的日期型別,如果沒有向這個欄位中存值,資料庫使用null存入
到資料庫中
timestamp也是既有日期又有時間的日期型別,如果沒有向這個欄位中存值,資料庫使用當前的
系統時間存入到資料庫中。
File BLOB/TEXT
約束:
約束作用:保證資料的完整性
單表約束:
主鍵約束:primary key (主鍵約束預設就是唯一 非空的)
唯一約束:unique
非空約束:not null
(2)檢視錶
檢視一個資料庫下的所有的表:
語法:show tables;
檢視單獨一個表:
語法:desc 表名;
(3)刪除表
語法:drop table 表名;
(4)修改表
增添列:
語法: alter table 表名 add 列名 資料型別(長度) 約束;
修改列型別,長度和約束:
語法: alter table 表名 modify 列名 資料型別(長度) 約束;
刪除列:
語法: alter table 表名 drop 列名;
修改列名稱:
語法: alter table 表名 change 舊列名 新列名 資料型別(長度) 約束;
修改表名:
語法: rename table 表名 to 新的表名;
修改表的字符集:
語法: alter table 表名 character set 字符集;
7.MySQL資料的增刪改查
(1)新增表記錄
向表中插入某些列:
語法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);
向表中插入所有列:
語法: insert into 表名 values (值1,值2,值3…);
注意:
1.值的型別與資料庫中表列的型別一致;
2.值的順序與資料庫中表列的順序一致;
3.值的最大長度不能超過列設定最大長度;
4.值的型別是字串或者是日期型別,使用單引號引起來。
(2)修改表記錄
語法: update 表名 set 列名=值,列名=值 [where 條件];
注意:
1.值的型別與列的型別一致;
2.值的最大長度不能超過列設定的最大長度;
3.字串型別和日期型別新增單引號。
(3)刪除表記錄
語法: delete from 表名 [where 條件];(或者truncat from 表名;)<注:truncat刪除表資料無法恢復>
注意:
1.刪除表的記錄,指的是刪除表中的一行記錄;
2.刪除如果沒有條件,預設是刪除表中的所有記錄。
(4)檢視錶記錄
語法: select *(或者列名) from 表 [條件];
8.MySQL解決向資料庫中插入中文記錄會出現錯誤
解決方法:
需要將MySQL資料庫伺服器中的客戶端部分的字符集改為gbk,找到MySQL的安裝路徑:my.ini檔案,修改檔案中[client]下的字符集,將
[default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然後再重新啟動MySQL的伺服器。
9.按不同方式檢視錶記錄
(1)按條件查詢:
使用where 字句
> ,< ,<= , >= , <> *不等 , =
like:模糊查詢 , in:範圍 查詢 , 條件關聯:and or not
查詢李四資訊: select * from 表名 where 列名[name = 李四] = `李四`;
查詢李四資訊並且英語大於90: select * from 表名 where 列名[name = 李四] =`李四` and 列名[Englist]>90;
在lik可以使用: _ , % _只能帶表一個字元 %帶表多個字元 * %王% 帶表中間包含著個字就行
查詢姓李的學生資訊: select * from 表名 where name like `%李%`
查詢英語成績是69,75,89的學生: select * form 表名 where 列名[english] in (69 , 75 , 89);
(2)查詢排序:
使用order by 欄位名稱 asc/desc; *預設是用asc , 倒序desc;
查詢學生資訊按成績排: selech * from order by 列名[english];
查詢學生成績按倒序: selech * from order by 列名[english] desc;
查詢學生按語文成績倒序再按英語升序排列: select * from order by 列名[chinese] desc, 列名[english] asc;
查詢姓李的學生,英語按倒序排列: select * from 表名 where 列名[name] like `李%` order by 列名[english] desc;
(3)分組統計查詢:
聚合函式:
sum(); 獲得總數: count();*個數; 最大值:max() 最小值:min() 平均值:avg;
獲得所有成績的和: select sum(exam)from 表名;
count();
獲得所有的計數: select count(*) from 表名;
max()/min();
獲得某門考試的最大和最小成績: select max(math) from 表名;/select min(math) from 表名;
avg()
獲得平均數:select avg(chinese) from 表名;
分組查詢
語法:使用group by 欄位名稱;
按商品名稱統計,每類商品所花費的總金額:select product,sum(price) from orderitem group by product;
注意:
where的子句後面不能跟著聚合函式。如果現在使用帶有聚合函式的條件過濾(分組後條件過濾)需要使用一個關鍵字HAVING;
例:select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc;
10.單表查詢的執行順序流程
select … from … where … group by … having …order by …;
11.多表查詢
表與表之間的關係-外來鍵
作用:保證多張表之間的資料如果有關聯,則關聯的資料的完整性。
設計與建表原則
一對多:將外來鍵設定在多的一方,指向一的主鍵
多對多:必須有第三張表,這張表中最少會有兩個欄位作為外來鍵,指向多對多的兩張表的主鍵
一對一:唯一外來鍵約束
主鍵對應:
實質就是建立外來鍵並且讓這個外來鍵唯一。
查詢:
準備環境:多表分析建立
連線查詢:關聯條件就是外來鍵
內連線:交集, select * from 表1, 表2 where 條件
左外連線:左表的資料和交集資料
select * from 表1 left join 表2 on 條件
右外連線:右表的資料和交集資料
select * from 表1 right join 表2 on 條件
子查詢
12.分頁查詢
select * from 表名 limit begin, length :begin 從0開始,表示索引;length:表示查詢多少條記錄
select * from 表名 limit number; 從第一條資料開始,總共查詢number條資料。
13.MySQL常見bug
select * from 表名 where score = `80abc` 實質就是:SELECT * FROM stu where score = 80, 會將不能轉化為數值的字元捨棄
select * from 表名 where NAME = `abC` :MySQL查詢的時候不區分大小寫
解決方法:
select * from stu where BINARY NAME = `Abc`
MySQL知識總結
相關文章
- MySQL知識點總結MySql
- MySQL 索引知識點總結MySql索引
- MySql基礎知識總結MySql
- mysql 常用知識點總結MySql
- 總結 MySQL 相關知識點MySql
- MySQL 常用易混淆知識點總結MySql
- Java與Mysql鎖相關知識總結JavaMySql
- MySQL知識彙總MySql
- linux知識知識點總結Linux
- Redis知識總結Redis
- Cookie知識總結(-)Cookie
- 圖知識總結
- golang知識總結Golang
- servlet知識總結Servlet
- 常量知識總結
- Docker知識總結Docker
- JQuery知識總結jQuery
- servelt知識總結
- 知識點總結
- SWAP知識總結
- PayPal知識總結
- 小知識總結
- 知識方法總結
- MySQL 鎖常見知識點&面試題總結MySql面試題
- MySQL面試之簡單知識和命令總結MySql面試
- MySQL-知識彙總MySql
- MySQL基礎知識和常用命令總結MySql
- 《MySQL重要知識點及面試總結》:推薦收藏MySql面試
- HDFS知識點總結
- MongoDB知識點總結MongoDB
- Java 知識點總結Java
- django知識點總結Django
- jQuery 知識點總結jQuery
- Vue知識總結(2)Vue
- 概率論知識總結
- HBase知識點總結
- Kafka知識點總結Kafka
- JavaScript知識點總結JavaScript