1. 程式人生 > >Linux資料庫管理——day1——安裝MySQL、基本增刪改查操作

Linux資料庫管理——day1——安裝MySQL、基本增刪改查操作

 

資料庫:

DB 資料庫 依照某個資料模型進行組織並存放到儲存器中
DBMS 資料庫管理系統 用來控制和管理資料的服務軟體
DBS 資料庫系統 DB+DBMS=DBS,是一個計算機系統

MySQL (埠號3306)

   特點
      1. 適用於中小規模、關係資料庫系統
      2. 支援Linux和Windows等多作業系統
      3. 支援C和C++編寫,可移植性強
      4. 通過API支援Python/Java/Perl/PHP等語言

   主要應用環境 LAMP、LNMP、WNMP、WAMP ,再叢集中用來儲存檢索資料

   安裝MySQL
      1. 下載RPM包,前往官網下載,解壓後,前往目錄然後安裝

yum -y install perl-JSON  perl-Data-Dumper perl-Time-HiRes 
rpm -Uvh mysql-community-*.rpm

      2. 啟動服務

systemctl restart mysql

      3. 檢視配置檔案 /etc/my.cnf
         資料存放目錄 /var/lib/mysql
         日誌檔案 /var/log/mysqld.log
      4. 修改資料庫管理密碼

# 第一次進入剛剛建立的資料庫
awk '/temporary password/{print $11}' /var/log/mysqld.log
mysql -hlocalhost -uroot -p'剛剛檢視的密碼'
# 這樣就進入mysql操作介面,修改密碼命令如下:
mysql>
set global validate_password_policy=0;
set global validate_password_length=6;
alter  user   [email protected]"localhost"  identified by "密碼";

# 只檢查密碼的長度
# 密碼長度不能小於6個字元
# 設定密碼

   資料庫資料檔案存放資訊:
      1. 資料庫庫檔案存放位置 /var/lib/mysql/
      2. 表文件就在對因的庫檔案目錄下/var/lib/mysql/庫名/。
      3.可以用Linux系統命令在 /var/lib/mysql/ 建立一個目錄,在mysql裡面就會出現同名的庫,而且可以在mysql介面中切換檢視這個庫,但是不能建立表,原因是許可權,用mkdir建立的目錄是root所有的,而不是mysql,所以mysql就沒有許可權建立表


管理庫命令

    檢視有哪些資料庫

show databases

    檢視庫中有哪些表

show 庫名.tables

    進入某個資料庫進行操作,下面命令中所有表前不寫庫名,預設是該庫

use 庫名

對庫中的表 增刪改查
     建立一個表(如果寫的庫名就是當前所在庫,那可以不寫庫名)

create table 庫名.表名(
    欄位1  欄位型別(寬度)   約束條件,
………………
    欄位n  欄位型別(寬度)   約束條件
);

    解釋:
       表後是一個括號,括號外分號結尾,這括號內所有資料就是一個完整表結構
       括號內用 , (英文逗號) 分隔   每部分就是一個欄位資料
       一個欄位就是資料中一列資料
       欄位表名可以是中文的,不過在 ) ; 中間加上 DEFAULT CHARSET=utf8 表中所有資料都支援中文。

    刪除某個表

drop  庫名.表名;

     檢視當初建立某個表的資訊

show create table 庫名.表名;

     查看錶的結構資訊

desc  庫名.表名;
# 資訊的欄位含義如下
# 欄位名  欄位型別  是否為空  是否為主鍵  預設值 描述資訊

附: 如果返回值是 Empty set (0.00 sec) 代表查詢的表或者庫中沒有任何資料


對錶內資料 增刪改查(如果寫的庫名就是當前所在庫,那可以不寫庫名)

     增加新資料

insert into 庫名.表名 values
("第一列值",……,"第n列值"),
…………
("第一列值",……,"第n列值");

     解釋:
         這裡一個括號內所有資料就是表中的一行資料,
         括號中資料以 , (英文逗號) 分隔   每部分就是一行資料中對應列的值
         所有資料新增完後,在最後一個括號外分號結尾

   特: 只給具體的幾列值進行賦值,其他列值使用預設,不過列名間用逗號隔開,但是不能有空格

insert into 表名(列名1,列名2……) values(資料1,資料2……);

     刪除某行資料

delete from 表 where 匹配條件;
# 如果沒有where匹配限制,就會刪除表中所有的資料資訊

     修改某行的某些欄位的資訊

update 庫名.表名 set 欄位1=值1,……,欄位n=值n where 匹配條件;
# 如果沒有where匹配限制,就會修改表中所有的行中對應欄位的值

     查看錶中符合要求的欄位資訊,以及如何設定別名

select 欄位 from  庫名.表名  where 匹配條件;
# 如果沒有where匹配限制,就會顯示錶中所有要求欄位的值
# 如果想輸入所有欄位,就用*代替就可
select 欄位1 相應別名1,字端2 相應別名2 …………
# 注意,別名不能時SQL語言的關鍵字
# 修改資料的時候,新資料不能和 約束、欄位資料型別 有衝突,否則會導致無法新增!

欄位型別

   數值型別、字元型、時間型、列舉型

型別 範圍(有符號) 範圍(沒有符號) 描述
整數型別
tinyint -128 ~ 127 0 ~ 255 微小整數
smallint -2^15 ~ 2^15-1 0 ~ 2^16-1 小整數
int -2^23 ~ 2^23-1 0 ~ 2^24-1 整數
bigint -2^31 ~ 2^31-1 0 ~ 2^32-1 整數
如果整數型別中存了一個小數,那麼小數部分會四捨五入
小數型別
float -2^23 ~ 2^23-1 0 ~ 2^24-1 單精度浮點數
double -2^31 ~ 2^31-1 0 ~ 2^32-1 雙精度浮點數
如果小數型別中存了一個整數,那麼會自動在後面加上若干個0
如果數值超過範圍,僅僅儲存最大/最小值

注:

   1. 在型別後面 空格+unsigned 就代表無符號儲存,不寫預設為有符號儲存

   2. 字元型別的寬度是限制儲存多少,如果資料型別後面沒有  (寬度)  ,會報錯
        數值型別的寬度是控制顯示長度,如果資料長度小於控制長度,會預設用0補齊,而存資料的多少取決於資料型別本身的設定,如果資料型別後面沒有  (寬度)  ,預設為顯示11位的長度,最好把長度寫成1,節約空間


字元型別

char(最多個數) (常用) 最多儲存儲存個數最大寫255個字元
每次定義的時候,固定了儲存範圍
使用的時候不一定要寫 (最大個數),不寫預設為最多1個字元
varchar(最多個數) 最多儲存65532個字元
會根據儲存的具體多少分配空間,但是也不能超過規定範圍 
必須寫最多個數,不然報錯
text/blob  可以存超過65532個字元,用來儲存大型資料資訊

 對比:
   型別text和blob用於存放資料極大的資料,一般不用,所以主要對比char和varchar
   不同點:
      char執行效率比varchar高,varchar比char節約儲存空間
      所以現在用的最多的還是char,原因就是,相對於節約空間,人們現在更追求高效的速度。
   相同點:
      都不能超,char限定多少就是多少,varchar會根據實際儲存,如果比原先定的小,分的空間也會小點

時間型 時間範圍 資料書寫格式 範例
datetime 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 年月日時分秒 20181015181615
timestamp 1970-01-01 00:00:00.000000 ~ 2038-01-19 23:59:59.999999
date 0001-01-01 ~ 9999-12-31 年月日 20181015
year 1901-2155 2018
time 00:00:00 ~ 23:59:59 時分秒 181615

然後用select查詢結果就是:

+---------------------+------------+------+----------+
| 2018-10-15 18:16:15 | 2018-10-15 | 2018 | 18:16:15 |
+---------------------+------------+------+----------+

列舉型別

從給定的值中任選一個 enum(值1,……值n)
從給定的值中任選多個 set(值1,……值n)

   在新增資料的時候,用 "" 標示出來,然後可以並且需要選多個的話,就在 "" 裡面寫多個然後用 , 分隔標示