天天看點

MySQL資料庫之一

資料庫簡介

資料庫分類

關系型資料庫(SQL):(狹義可以了解為行和列)

  • MySQL,Oracle,Sql Server, DB2
  • 通過表和表之間,行和列之間的關系進行存儲

非關系型資料庫(NoSQL Not Only SQL):(狹義可以了解為鍵值對)

  • Redis, MongDB
  • 非關系行資料庫已對象存儲,通過對象的屬性決定操作

概念

DBSM(database management system)資料庫管理系統

  • 資料庫的管理軟體
  • 區分,資料庫存資料,資料庫管理系統管理資料

安裝建議

  • 不要使用exe方式安裝,會走系統資料庫,解除安裝起來比較麻煩
  • 建議使用壓縮包安裝,壓縮包安裝友善解除安裝

資料庫MySQL的安裝

注意:解壓壓縮包就安裝好了,關鍵是後面的注冊部分

  1. 從官網https://dev.mysql.com/downloads/mysql/5.7.html下載下傳壓縮包,
  2. 解壓,得到一個檔案夾,把這個檔案夾放到自己的開發目錄
  1. 配置環境變量
    • 我的電腦-->屬性-->進階設定-->環境變量
    • 選擇PATH,在後面添加:你的mysql安裝檔案夾下面的bin檔案夾
  2. 在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
           
  1. 管理者模式啟動CMD,切換到安裝的MySQL的bin目錄下
cd /d D:\Drawer\develop\soft\mysql-5.7.32-winx64\bin
           
  1. 然後輸入
mysqld -install
           

再輸入一下指令,初始化資料檔案

mysqld --initialize-insecure --user=mysql
           
  1. 啟動MySQL
net start mysql
           

也可以從任務管理器發現MySQL啟動起來了

  1. 用指令進入管理界面
mysql -u root -p
           

接下來他會要求你輸入密碼,第一次登入,沒有密碼,是以點選回車就可以了

  1. 設定使用者名為root的初始密碼為123456
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
           
  1. 重新整理權限
flush privileges;
           
  1. 在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
           
  1. 退出MySQL
exit
           
  1. 重新開機MySQL就可以正常使用了
net stop mysql
net start mysql
           
  1. 輸入使用者名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`;
           
  • 也可是省略将

    DESCRIBE

    student

    ;

    省略為

    DESC

    student

    ;

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 -- 修改時間
           

繼續閱讀