今日分享開始啦,請大家多多指教~
1、什麼是MySQL
MySQL是一個關係型資料庫管理系統
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
1。2、連線資料庫
命令列連線!
資料庫xxx語言
DDL 定義
DML 操作
DCL 控制
DQL 查詢
1。3操作資料庫
操作資料庫>操作資料庫中的表>操作資料庫中表的資料
建立資料庫
CREATE DATABASE IF NOT EXISTS school;如果不存在資料庫school則建立
刪除資料庫
DROP DATABASE IF EXISTS hello;如果存在資料庫hello則刪除
使用資料庫
——tab鍵上面,如果你的表名或者欄位名是一個特殊字元,就需要到反引號
USE `SCHOOL`
1。4、資料庫列型別
數值
tinyint 十分小的資料 1個位元組
smalint 較小的資料 2個位元組
mediumint 中等大小的資料 3個位元組
==int 標準的整數 4個位元組 java的int ==
bigint 較大的資料 8個位元組
float 浮點數 4個位元組
double 浮點數 8個位元組
decimal 字串形式的浮點數 金融計算的時候,一般使用decimal
字串
char 字串固定大小的 0~255
==varchar 可變字串 0~65535 ** 常用的 String==
tinytext 微型文字 2^8-1
text 文字串 2^16-1 儲存大文字
時間日期
date YYYY-MM-DD,日期格式
time HH:mm:ss 時間格式
==datetime YY-MM-DD HH:mm:ss 最常用的時間格式 ==
timestamp 時間戳 1970。1。1到現在的毫秒值!
year 年份表示
null
沒有
值
,未知
注意,不用使用NULL進行運算,跟NULL運算結果為NULL
1。5、資料庫的欄位屬性(重點)
Unsigned:
●無符號的整數
●聲明瞭該列不能宣告為負數
zerofill:
●0填充的
●不足的位數,使用0來填充, int(3) , 005
autoincrement:
● 通常理解為自增,自動在上一條記錄的基礎上+1(預設)
●通常來設計唯一的主鍵~ index,必須是整數型別
非空 NULL not null
●假如設定為not null,如果不給他賦值,就會報錯!
●NULL,如果不填寫值,預設就是null!
預設:
●設定預設的值!
●sex,預設值是
男
,如果不指定該列的值,則會有預設的值!
拓展:
id 主鍵
`version` 樂觀
鎖
is_delete
偽
刪除
gmt_create 建立時間
gmt_update 修改時間
1。6、建立資料庫表
格式
常用命令
1。7、資料表的型別
——關於資料庫的引擎
INNODB 預設使用
MYISAM 早些年使用的
常規使用操作:
MYISAM 節約空間,速度較快
INNODB 安全性高,事務的處理,多表多使用者操作
在物理空間存在的位置
所有的資料庫檔案都存在data目錄下,一個資料夾就對應一個數據庫
本質還是檔案的儲存!
MySQL引擎在物理檔案上的區別
INNODB在資料庫表中只有一個*。frm檔案,以及上級目錄下的ibdata1檔案
MYISAM對應檔案
*。frm - 表結構的定義檔案
*。MYD - 資料檔案(data)
*。MYI - 索引檔案(index)
設定資料庫表的字符集編碼
CHARSET=utf8
不設定的話,會是MySQL預設的字符集編碼latin-1(不支援中文)
在my。ini中配置預設的編碼
character-set-server=utf8
2、修改刪除表
2。1、修改
2。2、刪除
——刪除表(如果表存在則刪除)
DROP TABLE IF EXISTS teacher1
所有的建立和刪除操作儘量加上判斷,以免報錯~
注意點:
`反引號,欄位名使用這個括起來
註釋—— /* */
sql大小寫不敏感,建議寫小寫
所有的符號都用英文!
3、MySQL資料管理
3。1、外來鍵
方式一:在建立表的時候增加約束(麻煩,比較複雜)
刪除有外來鍵關係的表的時候,必須先刪除引用別人的表(從表),再刪除被引用的表(主表)
方式二:建立表成功後,新增外來鍵約束
以上的操作都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用!(避免資料過多造成困擾)
最佳實現
資料庫就是單純的表,只用來存資料,只有行(資料)和列(欄位)
我們想使用多張表的資料,想使用外來鍵(程式去實現)
3。2、DML語言
資料庫意義:資料儲存,資料管理
DML語言:資料操作語言
INSERT
UPDATE
DELETE
3.2.1、新增
insert
語法:INsert into 表名(欄位名1,欄位名2,欄位名3,……) values (‘值1’,‘值2’,‘值3’,。。。)
注意事項:
1。欄位和欄位使用英文逗號隔開
2。欄位是可以省略的,但是後面的值要一一對應,不能少
3。可以同時插入多條語句,VALUES後面的值需要使用逗號隔開VALUES (),(),……
3.2.2、修改
update 修改
誰
(條件) set原來的值=新值
條件:where子句 運算子 id等於某個值,大於某個值,在某個區間內修改
—— 透過多個條件定位資料
UPDATE `student` SET `name`=‘長江七號’ WHERE `name`=‘RYGAR’ AND `sex`=‘女’
語法:UPDATE 表名 SET 欄位名1=‘值1’,欄位名2=‘值2’,… WHERE 條件
注意:
欄位名儘量帶上反引號`
條件,篩選的條件,如果沒有指定,則會修改所有的列
值可以是一個具體的值,也可以是一個變數
UPDATE `student` SET `name`=‘孫悟空’,`password`=‘sunwukong123’,`birthday`=NOW() WHERE `name`=‘長江七號’ AND `password`=‘lisi123’
這個now()和current_time都是當前時間
3.2.3、刪除
delete命令
語法:`delete from 表名[where 條件]
TRUNCATE命令
作用:完全清空一個數據庫表,表的結構和索引約束不會變!
——清空student表
——語法: TRUNCATE 表名
TRUNCATE `student`
DELETE和TRUNCATE的區別
相同點:都能刪除資料,都不會刪除表結構
不同點:
1。TRUNCATE重新設定自增列,計數器會歸零
2。TRUNCATE不會影響事務
DELETE刪除的問題,重啟資料庫,現象(MySQL5。0版本有這些現象,但MySQL8。0版本修復了這些問題)
INNODB 自增列會從1開始(存在記憶體當中的,斷點即失)
MYISAM 繼續從上一個自增量開始(存在檔案中的,不會丟失)
3.2.4、DQL查詢資料(重點)
DQL(Data Query Language:資料查詢語言)
所有的查詢操作都用它SELECT
簡單的查詢,複雜的查詢它都能做
資料庫中最核心的語言,最重要的語句
使用頻率最高的語句
有的時候,列名字不是那麼的見名知意。我們起別名 AS 欄位名 AS 別名
去重 DISTINCT
作用:去除SELECT查詢出來的結果中重複的資料,只顯示一條
—— 查詢一下哪些同學參加了考試,成績
SELECT * FROM result —— 查詢全部的考試成績
SELECT `StudentNO` FROM result ——查詢有哪些同學參加了考試
發現有重複資料,去重使用DISTINCT關鍵詞
SELECT DISTINCT `studentNo` FROM result —— 發現重複資料,去重
檢視MySQL版本
SELECT version();
資料庫的列(表示式)
資料庫中的表示式:文字值,列,null,函式,計算表示式,系統變數…
select 表示式 from 表
3.2.5、where條件子句
作用:檢索資料中符合條件的值
搜尋的條件由一個或者多個表示式組成! 結果為布林值
邏輯運算子
| 運算子 | 語法 | 描述 |
|–|——|–|
| and && | a and b / a&&b | 邏輯與,兩個都為真,結果為真 |
| or || | a or b / a || b | 邏輯或,其中一個為真,結果為真 |
| Not ! | not a / !a | 邏輯非,真為假,假為真! |
儘量使用英文字母
查詢出了1000號學生的成績
模糊查詢:比較運算子
查詢姓劉的學生
—— LIKE關鍵詞,%(代表0到任意個字元) _(一個字元)
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉%’;
查詢姓劉的學生,姓名為兩個字的學生
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉_’;
查詢姓劉的學生,姓名為三個字的學生
SELECT `StudentNO`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉__’;
查詢名字包含“嘉”字的學生
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘&嘉&’;
==IN(具體的一個或者多個值)==關鍵字
查詢1001,1003,1003號學生
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentNo` IN (1001,1002,1003);
查詢在安徽的學生和在河南洛陽的學生
查詢有出生日期的學生,不為空
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `BornDate` IS NOT NULL;
查詢沒有出生日期的學生(為空)
SELECT `StudentNo`,`StudentName` FROM `student` WHERE `BronDate` IS NULL;
今日份分享已結束,請大家多多包涵和指點!