前言
本篇文章基於騰訊雲CentOS 7.5環境。記錄了Mysql 8.0從安裝配置到知識點學習。
文末附資源鏈接。
一、Mysql數據庫 安裝及配置
1.Mysql簡介
MySQL
是一種開放源代碼的關係型數據庫管理系統(RDBMS),使用最常用的數據庫管理語言–結構化查詢語言(SQL)進行數據庫管理。
MySQL
是開放源代碼的,因此任何人都可以在General Public License的許可下下載並根據個性化的需要對其進行修改。
MySQL
因爲其速度、可靠性和適應性而備受關注。大多數人都認爲在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。
2.Mysql安裝
2.1 下載並添加存儲庫
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
2.2 安裝MySQL 8.0包
與其他使用yum
的軟件包一樣安裝MySQL:
yum install mysql-community-server
安裝過程中,會詢問是否導入MySQL GPG密鑰
,輸入y即可。
安裝完成。
3.啓動MySQL
3.1 啓動MySQL服務並設置自啓動
systemctl enable mysqld #設置開機啓動
systemctl start mysqld #啓動Mysql
3.1 檢查MySQL服務狀態
systemctl status mysqld
Active: active (running)
。運行中。
4. Mysql 安全
當第一次啓動MySQL
服務器時,爲MySQL
根用戶生成一個臨時密碼
。 您可以通過運行以下命令找到密碼:
grep 'temporary password' /var/log/mysqld.log
首先記下生成的臨時密碼,
運行mysql_secure_installation
命令來提高MySQL安裝的安全性:
mysql_secure_installation
輸入臨時密碼後,系統會要求您爲root用戶設置新密碼。密碼必須至少包含8個字符並且至少包含一個大寫字母,一個小寫字母,一個數字和一個特殊字符。
該腳本還會要求您刪除匿名用戶,限制root用戶對本地計算機的訪問權限並刪除測試數據庫。 你應該對所有問題回答“y”。
5.從命令行連接到MySQL
以root用戶類型登錄到MySQL服務器
mysql -u root -p
系統將提示您輸入在運行mysql_secure_installation腳本
時以前設置的root密碼
。
一旦你輸入密碼,你將會看到如下所示的mysql shell
:
二、Mysql 數據庫操作
備註:Mysql命令不區分大小寫。
1.創建一個新的MySQL數據庫
創建一個數據庫mysqldata_name
,實例中數據庫name爲database1
CREATE DATABASE mysqldata_name;
如果您嘗試創建一個已經存在的數據庫,您將看到以下錯誤消息:
ERROR 1007 (HY000): Can't create database 'database1'; database exists
2.使用SHOW語句找出在服務器上當前存在什麼數據庫:
SHOW DATABASES;
3.選擇你所創建的數據庫
USE MYSQLDATA;
按回車鍵出現Database changed 時說明操作成功!
4.創建一個數據庫表
CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
5.查看現在的數據庫中存在什麼表
SHOW TABLES;
6.顯示錶的結構
DESCRIBE MYTABLE;
7.往表中加入記錄
insert into MYTABLE values ("hyq","M");
8.查看所有數據
select * from my_student;
9.刪除表
drop TABLE MYTABLE;
10.清空表
delete from MYTABLE;
11.更新表中數據
update MYTABLE set sex="f" where name='hyq';
三、Mysql數據類型
1.整數類型
MySQL主要提供的整數類型有tinyint、smallint、mediumint、int、bigint,其屬性字段可以添加auto_increment自增約束條件。
下圖中列出了MySQL中的數值類型:
有的情況下定義整型的寫法是 int(N) ,這種寫法只需要記住兩點:
1)無論N等於多少,int永遠佔4個字節。
2)N表示的是顯示寬度,不足的用0補足,超過的無視長度而直接顯示整個數字,但這要整型設置了unsigned zerofill纔有效。
2.浮點類型
浮點類型有兩種,分別是單精度浮點數(float)和雙精度浮點數(double),數值類型如下:
定義浮點類型可以用(M,D)來表示,其中M稱爲精度,表示總共的位數,D稱爲標度,表示小數的位數。
3.定點類型
因爲浮點型的float、double存在精度丟失問題,即寫入數據庫的數據未必是插入數據庫的數據,而decimal無論寫入數據中的數據是多少,都不會存在精度丟失問題,這就是引入decimal類型的原因,decimal類型常見於銀行系統、互聯網金融系統等對小數點後的數字比較敏感的系統中。
decimal(M,D)的規則和float、double相同,但區別在float、double在不指定M、D時默認按照實際精度來處理,而decimal在不指定M、D時默認爲decimal(10,0)。
4.日期和時間類型
MySQL支持五種形式的日期類型:date、time、year、datetime、timestamp,用一張表格總結一下這五種日期類型:
MySQL的時間類型中datetime與timestamp兩種類型的區別:
1)datetime佔8個字節,timestamp佔4個字節。
2)由於大小的區別,datetime與timestamp能存儲的時間範圍也不同。
3)datetime默認值爲空,當插入的值爲null時,該列的值就是null;timestamp默認值不爲空,當插入的值爲null的時候,mysql會取當前時間。
4)datetime存儲的時間與時區無關,timestamp存儲的時間及顯示的時間都依賴於當前時區。
在實際工作中,一張表往往會有兩個默認字段,一個記錄創建時間而另一個記錄最新一次的更新時間,這種時候可以使用timestamp類型來實現。
5。字符串類型
字符串類型用來存儲字符串數據,還可以存儲圖片和聲音的二進制數據。字符串可以區分或者不區分大小寫的串比較,還可以進行正則表達式的匹配查找。
MySQL中的字符串類型有char、varchar、tinytext、text、mediumtext、longtext、enum、set等。
下表中列出了MySQL中的字符串數據類型,括號中的M表示可以爲其指定長度:
6.char類型
char(M)是固定長度字符串,存儲時在右側填充空格以達到指定的長度,查詢時會刪除尾部的空格。
7.varchar類型
varchar(M)是可變長度的字符串,存儲的是字符串的實際內容。
8.text類型
text也是可變長度的字符串,保存非二進制字符串,如文章內容、評論等。text類型有4種:tinytext、text、mediumtext和longtext。
9.enum類型
enum是一個字符串對象,值爲表創建時設定的枚舉值,最多可以有65535個元素。語法格式如下:
字段名 enum('值1', '值1', …, '值n')
字段名是將要定義的字段,值n指枚舉列表中第n個值。
enum類型的字段在取值時,能在指定的枚舉列表中獲取,而且一次只能取一個,如果創建的成員中有空格,尾部的空格將自動被刪除。
enum值依照列索引順序排列,並且空字符串排在非空字符串前,null值排在其他所有枚舉值前。
enum列總有一個默認值。如果將enum列聲明爲null,null值則爲該列的一個有效值,並且默認值爲null。如果enum列被聲明爲not null,其默認值爲允許的值列表的第1個元素。
10.set類型
set是一個字符串的對象,值爲表創建時規定的一列值,最多可以有64個成員。語法格式如下:
字段名 set('值1', '值2', …, '值n')
與enum類型相同,set值在內部用整數表示,列表中每個值都有一個索引編號。當創建表時,尾部空格將自動刪除。
與enum類型不同的是,enum類型的字段只能從定義的列值中選擇一個值插入,而set類型的列可從定義的列值中選擇多個字符的聯合。
如果插入set字段中的列值有重複,則mysql自動刪除重複的值。並且插入set字段的值的順序並不重要,mysql會在存入數據庫時,按照定義的順序顯示。如果插入了不正確的值,默認情況下,mysql將忽視這些值,給出警告。
11.二進制字符串類型
MySQL中的二進制字符串有BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
下表中列出了MySQL中的二進制數據類型,括號中的M表示可以爲其指定長度:
12.bit類型
位字段類型。M表示每個值的位數,範圍爲1~64。如果M被省略,默認值爲1。如果爲bit(M)列分配的值的長度小於M位,在值的左邊用0填充。
bit數據類型用來保存位字段值,例如以二進制的形式保存數據13,13的二進制形式爲1101,在這裏需要位數至少爲4位的bit類型,即可以定義列類型爲bit(4)。大於二進制 1111 的數據是不能插入 bit(4) 類型的字段中的。
默認情況下,MySQL不可以插入超出該列允許範圍的值,因而插入數據時要確保插入的值在指定的範圍內。
13.其他類型
binary類型
binary類型的長度是固定的,指定長度後,不足最大長度的,將在它們右邊填充“\0”補齊,以達到指定長度。
varbinary類型
varbinary類型的長度是可變的,指定好長度之後,長度可以在0到最大值之間,實際佔用的空間爲字符串的實際長度加1。
blob類型
blob是一個二進制的對象,用來存儲可變數量的數據。blob類型分爲4種:tinyblob、blob、mediumblob和longblob,它們可容納值的最大長度不同。