資料庫簡介
資料庫分類
關系型資料庫(SQL):(狹義可以了解為行和列)
- MySQL,Oracle,Sql Server, DB2
- 通過表和表之間,行和列之間的關系進行存儲
非關系型資料庫(NoSQL Not Only SQL):(狹義可以了解為鍵值對)
- Redis, MongDB
- 非關系行資料庫已對象存儲,通過對象的屬性決定操作
概念
DBSM(database management system)資料庫管理系統
- 資料庫的管理軟體
- 區分,資料庫存資料,資料庫管理系統管理資料
安裝建議
- 不要使用exe方式安裝,會走系統資料庫,解除安裝起來比較麻煩
- 建議使用壓縮包安裝,壓縮包安裝友善解除安裝
資料庫MySQL的安裝
注意:解壓壓縮包就安裝好了,關鍵是後面的注冊部分
- 從官網https://dev.mysql.com/downloads/mysql/5.7.html下載下傳壓縮包,
- 解壓,得到一個檔案夾,把這個檔案夾放到自己的開發目錄
- 配置環境變量
- 我的電腦-->屬性-->進階設定-->環境變量
- 選擇PATH,在後面添加:你的mysql安裝檔案夾下面的bin檔案夾
- 在MySQL安裝目錄下建立
配置檔案my.ini
- 編輯my.ini
[mysqld]
basedir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\
datadir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\data\
port=3306
skip-grant-tables
- 管理者模式啟動CMD,切換到安裝的MySQL的bin目錄下
cd /d D:\Drawer\develop\soft\mysql-5.7.32-winx64\bin
- 然後輸入
mysqld -install
再輸入一下指令,初始化資料檔案
mysqld --initialize-insecure --user=mysql
- 啟動MySQL
net start mysql
也可以從任務管理器發現MySQL啟動起來了
- 用指令進入管理界面
mysql -u root -p
接下來他會要求你輸入密碼,第一次登入,沒有密碼,是以點選回車就可以了
- 設定使用者名為root的初始密碼為123456
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
- 重新整理權限
flush privileges;
- 在my.ini裡注釋跳過密碼指令
[mysqld]
basedir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\
datadir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\data\
port=3306
#skip-grant-tables
- 退出MySQL
exit
- 重新開機MySQL就可以正常使用了
net stop mysql
net start mysql
- 輸入使用者名root,密碼123456 登入
mysql -uroot -p123456
遇到的問題
問題:執行mysqld --initialize-insecure --user=mysql 報錯(errcode: 2 - no such file or directory)
原因:路徑名稱需要寫成
//
,比如下面
[mysqld]
basedir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\
datadir=D:\\Drawer\\develop\\soft\\mysql-5.7.32-winx64\data\
port=3306
skip-grant-tables
注意:windows安裝mysql預設自動啟動
更換資料庫版本
原先資料庫的位址D:\develop\MySQL Server\bin
基本指令操作
連接配接資料庫(指令行)
mysql -uroot -p
修改密碼
修改密碼其實就是操作資料庫的表,也就是修改mysql資料庫的user表的authentication_string字段
UPDATE mysql.`user` SET authentication_string=PASSWORD('123456') WHERE `user` = 'root' AND `Host` = 'localhost'; --修改使用者密碼
注意,所用的sql都是以;結尾
檢視所有資料庫
SHOW DATABASES;
切換資料庫
- 切換到school資料庫
USE `school`;
檢視資料庫中所有的表
SHOW TABLES;
檢視表結構
- 檢視student表結構
DESCRIBE `student`;
- 也可是省略将
studentDESCRIBE
省略為;
studentDESC
;
DESC `student`;
建立資料庫
- 建立teacher資料庫
CREATE DATABASE `teacher`;
删除資料庫
- 删除teacher資料庫
DROP DATABASE `teacher`;
退出mysql
EXIT;
SQL的本來注釋
- 單行注釋
-- 單行注釋内容
- 多行注釋
/*
多行注釋内容
*/
操作資料庫
1. 建立資料庫
- 建立teacher資料庫
CREATE DATABASE `teacher`;
- 如果建立前資料庫成立,會報錯,可以加一個判斷
表示當他不存在時執行建立資料庫語句IF NOT EXISTS
CREATE DATABASE IF NOT EXISTS `teacher`;
- 我們把可選部分用
包裹,表示可以選擇或者不選擇,例如[ ]
CREATE DATABASE [IF NOT EXISTS] `teacher`;
2. 移除資料庫
- 删除teacher資料庫
DROP DATABASE `teacher`;
- 同樣,如果删除内容如果不存在,也會報錯,我們可以加一個判斷
,表示當他存在執行删除語句IF EXISTS
DROP DATABASE IF EXISTS `teacher`;
3.使用資料庫
- 使用teacher資料庫
USE `teacher`;
4. 檢視所有資料庫
SHOW DATABASES;
可以通過檢視曆史日志的方式檢視操作的sql語句
列的資料類型
數值
類型 | 描述 | 大小 | 備注 |
---|---|---|---|
tinyint | 十分小的資料 | 1個位元組 | |
smallint | 較小的資料 | 2個位元組 | |
mediumint | 中等大小的資料 | 3個位元組 | |
int | 标準的整數 | 4個位元組 | 常用 |
bigint | 較大的整數 | 8個位元組 | |
float | 浮點數 | 4個位元組 | 存在精度問題 |
double | 浮點數 | 8個位元組 | 存在精度問題 |
decimal | 字元串形式的浮點數 | 5-17位元組 | 解決精度問題,金融計算一般用 |
參考https://www.w3schools.com/sql/sql_datatypes.asp
字元串
類型 | 描述 | 大小 | 備注 |
---|---|---|---|
char | 字元串固定大小 | 0-255 | |
varchar | 可變字元串 | 0-65535 | 常用 |
text | 文本串 | 2^16-1 | 用于儲存大文本 |
時間日期
類型 | 描述 | |
---|---|---|
date | YYYY-MM-DD, 日期格式 | |
time | HH:mm:ss 時間格式 | |
datetime | YYYY-MM-DD HH:mm:ss | 最常用的時間格式 |
timestamp | 時間戳,1970.1.1到現在的毫秒數 |
null值不建議參與運算
字段的屬性
Unsigned
- 無符号整數,該列不能聲明為負數
zerofill
- 0填充,不足的位數,用零來填充
- 比如聲明 int(3) 之後,數值5會填充為 005
自增
- 在上一條記錄的基礎+1
- 通常設計為唯一主鍵
- 可是定義起始值和步長
非空
當設定為not null, 不指派會報錯
預設
設定預設的值
每一個表都應該包括以下5個字段
id -- 主鍵
version -- 樂觀鎖
is_delete -- 僞删除
gmt_create -- 建立時間
gmt_update -- 修改時間