mysql數據庫管理之一

一、搭建數據庫服務器

1.選購合適的服務器:

配置: CPU 內存 存儲

用途:雲服務器、硬件服務器

2.安裝軟件包的選擇:

根據服務器操作系統的版本:windows linux unix

軟件的版本:開源軟件或商業軟件

安裝方式:

源碼安裝:自定義安裝,想裝在哪都,裝什麼功能都行,但是要解決依賴關係;

rpm包安裝:安裝簡單,封裝好了,缺點,無法改變配置

軟件包的來源:官網去下或操作系統裡的安裝包內也有

3.修改配置文件

4.啟動服務

5.具體操作過程:用的是開源版,5.7.17版本,rpm裝,在IP地址是192.168.4.50上 的主機運行mysql數據庫。

[root@host50 08.dba-1]# tar -xf mysql-5.7.17.tar

[root@host50 08.dba-1]# ls

mysql-community-client-5.7.17-1.el7.x86_64.rpm--提供命令的

mysql-community-common-5.7.17-1.el7.x86_64.rpm

mysql-community-devel-5.7.17-1.el7.x86_64.rpm

mysql-community-embedded-5.7.17-1.el7.x86_64.rpm

mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm

mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm

mysql-community-libs-5.7.17-1.el7.x86_64.rpm

mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm

mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm

mysql-community-server-5.7.17-1.el7.x86_64.rpm--提供服務的主包

mysql-community-test-5.7.17-1.el7.x86_64.rpm

[root@host50 08.dba-1]# rpm -qa | grep -i mariadb

mariadb-libs-5.5.56-2.el7.x86_64

[root@host50 yum.repos.d]# rpm -Uvh mysql-community-*.rpm

提示需要perl-JSON依賴包,直接yum安裝此依賴包

[root@host50 yum.repos.d]# yum -y install perl-JSON

[root@host50 yum.repos.d]# rpm -Uvh mysql-community-*.rpm

[root@host50 08.dba-1]# rpm -qa | grep -i mysql

mysql-community-client-5.7.17-1.el7.x86_64

mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64

mysql-community-test-5.7.17-1.el7.x86_64

mysql-community-common-5.7.17-1.el7.x86_64

mysql-community-devel-5.7.17-1.el7.x86_64

mysql-community-libs-compat-5.7.17-1.el7.x86_64

mysql-community-libs-5.7.17-1.el7.x86_64

mysql-community-embedded-5.7.17-1.el7.x86_64

mysql-community-embedded-compat-5.7.17-1.el7.x86_64

mysql-community-embedded-devel-5.7.17-1.el7.x86_64

mysql-community-server-5.7.17-1.el7.x86_64

至此,安裝完成,生成數據庫目錄:/var/lib/mysql空目錄

[root@host50 mysql]# systemctl start mysqld

第一次啟動服務,需要初始化,加載文件,需要一定時間,不會秒起

此時再查看數據庫目錄:/var/lib/mysql,自動生成了很多目錄和文件

[root@host50 mysql]# systemctl enable mysqld 設置開機自啟

[root@host51 mysql]# systemctl status mysqld查狀態為running確認啟動成功。

6.步驟總結:

1.解壓安裝包mysql-5.17.7

2.檢查機器是否安裝其他版本的數據庫

3.安裝依賴包perl-JSON(鏡像有)

4.升級安裝mysql-community-*.rpm

5.啟動服務,查狀態

7.參數總結:

1.配置文件位置:/etc/my.cnf

2.數據庫目錄:/var/lib/mysql

3.進程名:mysqld

4.默認端口號:3306

5.傳輸協議:tcp

6.進程所有者,所屬組:mysql

二、數據庫服務的基本使用

1.數據存儲到數據庫服務器上過程:

連接數據庫服務器(命令連接 圖形工具)

選擇庫(文件夾)

建表(文件)

插入記錄(行)

斷開連接

2.連接數據庫服務器

mysql -hlocalhost -uroot -p密碼 [庫名] //連接數據庫的命令root是數據庫管理員的用戶名,與系統管理員同名,但不是同一個用戶

[root@host50 mysql]# grep -i password /var/log/mysqld.log //查看管理員初始密碼,將“:”後的內容複製然後登陸

此時對數據庫進行操作會提示:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. //你必須先重置密碼才可以進行操作。

ps:默認設置的密碼為複雜密碼:包括大小寫,數字加特殊符號

mysql數據庫管理之一

可以通過修改密碼策略簡化:

mysql>set global validate_password_policy=0;//將策略設置簡單

mysql> set global validate_password)length=6;//將密碼最短長度設為6位

mysql> alter user root@'localhost' identified by '123456'; //設置密碼

//global為全局設置,在數據庫裡修改只是臨時生效,要永久設置需要在配置文件內添加:

validate_password_policy=0

validate_password)length=6

然後停掉數據庫再啟動確認設置成功。

3.選擇庫(文件夾)

a.操作指令類型:

mysql指令:環境切換,看狀態,推出等控制;

sql指令:數據庫定義,查詢,操縱,授權語句:

DDL數據定義語言(cresate alter drop)

DML數據操作語言(insert update delete)

DCL 數據控制語言(grant revoke)

DTL 數據事物語言(commit rollback savepoint)

b.使用的基本注意事項:

操作指令不區分大小寫(密碼,變量除外)

不支持tab鍵自動補齊

每條sql指令以;結束或分隔

默認的4個庫不要刪,有些存放的是系統啟動所需要的數據

c.庫名的命名規則:可以使用數字/字母/下劃線,不能純數字

不能用特殊字符,指令關鍵字

區分大小寫,具有唯一性

d.庫管理基本命令:

– Show databases; // 顯示已有的庫

– Use 庫名 ;// 切換庫

– Select database(); // 顯示當前所在的庫

– Create database 庫名 ; // 創建新庫

– Show tables;// 顯示已有的表

– Drop database 庫名; // 刪除庫

ps:把庫刪掉了,沒有備份,能不能恢復?

可以,但是要通過第三方軟件,將硬盤上存放庫的資料找回來

ps:庫與數據庫目錄下的目錄是雙向的,在數據庫目錄下建目錄,也會多出一個庫,但是擁有者和所屬組是root,因此連接數據庫後只能查看和進入庫,不能寫入,因為沒權限。

4.建表(文件)

表管理命令:

創建表:

create table 庫名.表名(

字段名1 字段類型(寬度) 約束條件,

字段名2 字段類型(寬度) 約束條件,

...

字段名N 字段類型(寬度) 約束條件,

);

eg:mysql> create table t1 (

-> name char(15),

-> class char(7)

-> );

查看錶結構: desc t1;

查看錶記錄: select * from 表名;

刪除表: drop table 表名;

5.插入記錄(行)

Insert into 表名 values( 值列表 );// 插入表記錄,一個()為一行

eg:

mysql> insert into t1 values("haha1","nsd1803"),("haha2","nsd1803");

Update 表名 set 字段 = 值 ; // 修改表記錄(批量修改)

eg:

mysql> update t1 set class="nsd1809";

Delete from 表名 ; // 刪除表記錄(所有行,表還在,字段也還在)

eg:

mysql> delete from t1;

Select * from 表名 ; // 查看錶記錄(*為全部字段)

eg:

mysql> select * from t1;

ps:mysql默認字符集為latin1,不支持中文,在執行insert時存不了中文字符,但庫名和表名可以中文,因此需要在建表時設字符集為支持中文字符的utf8

eg:

mysql> create table 學生信息表2(

-> 姓名 char(15),

-> 班級 char(7)

-> )Default charset=utf8;

執行insert驗證或show create table 學生信息表2;查看創建表時的設置。

三、mysql數據類型

1.常見的信息種類:

數值型:

字符型:

枚舉型:興趣還好,性別等只能選一個之類的

日期時間型:

2.數值類型:

mysql數據庫管理之一

默認用的是有符號的存儲範圍,若要用無符號的在設置類型時後面在unsigned;

整型:存小數點會四捨五入

eg(整數型):

mysql> create table db1.t2(level tinyint);

mysql> insert into t2 values(251);

ERROR 1264 (22003): Out of range value for column 'level' at row 1

mysql> insert into t2 values(127);

Query OK, 1 row affected (0.03 sec)

mysql> create table db1.t3(level tinyint unsigned);

mysql> insert t3 values(255);

Query OK, 1 row affected (0.02 sec)

浮點型(帶小數點):整數位.小數位--->總位數

n m

float(m,n)

double(m,n)

eg:

mysql> create table t4(pay double(7,2));

mysql> insert into t4 values(12300);

mysql> insert into t4 values(123);

mysql> insert into t4 values(123000);

ERROR 1264 (22003): Out of range value for column 'pay' at row 1

mysql> select * from t4;

+----------+

| pay |

+----------+

| 123.00 |

| 12300.00 |

+----------+

3.字符類型:

定長:char(字符數)

普通字符,最大長度255個字符,不指定寬度時默認為1;

固定長度,不夠指定字符數時在右邊用空格補齊,字符數超出時,無法寫入數據;

存儲數度效率高,因為無需計算存儲空間。

變長:varchar(字符數)

普通字符,按數據實際大小分配存儲空間,必須指定寬度,不然報錯;

字符數斷超出時,無法寫入數據;

存儲速度略低,需要佔用cpu來計算存儲空間,不建議全部用,消耗資源。

大文本類型:text/blob等二進制文件,字符數打與65535存儲時使用,實際應用中不建議存放視頻音頻等打文件,一般都是存放此文件的路徑做好標記方便查找

eg:

mysql> create table t5(

-> name char(15),

-> email varchar(30)

-> );

mysql> insert into t5 values("bob","[email protected]"),("lucy","[email protected]");

Records: 2 Duplicates: 0 Warnings: 0

mysql> insert into t5 values("kdsajlgdlkdsagj","asd");

mysql> insert into t5 values("kdsajlgdlkdsagja","asd");

ERROR 1406 (22001): Data too long for column 'name' at row 1

mysql> select * from t5;

4.枚舉類型

1.從給定值集合中選擇單個值,ENUM

定義格式:enum(值1,值2...值n),不能超過64個

ps:插入記錄時可寫值列表內的序號,也可寫值內容

2.從給定值集合中選擇一個或多個值,SET

定義格式:set(值1,值2...值n)

eg:

mysql> create table t6(

-> name char(15),

-> age tinyint unsigned,

-> pay float(7,2),

-> sex enum("boy","girl","no"),

-> hobby set("woman","money","game","eat")

-> )default charset=utf8;

mysql> desc t6;

mysql> insert into t6 values("bob",21,20000,"no","eat,game");

mysql> insert into t6 values("bob2",29.2000,"man","eat");

ERROR1136 (21S01): Column count doesn't match value count at row 1

mysql> insert into t6 values("bob3",20,200000,"2","woman");

ERROR 1264 (22003): Out of range value for column 'pay' at row 1

mysql> insert into t6 values("bob3",20,20000,"2","woman");

mysql> select * from t6;

5.日期類型

1.日期時間, DATETIME

– 佔用 8 個字節

– 範圍: 1000-01-01 00:00:00.000000~ 9999-12-31 23:59:59.999999

2.日期時間, TIMESTAMP

– 佔用 4 個字節

– 範圍: 1970-01-01 00:00:00.000000~ 2038-01-19 03:14:07.999999

3.日期, DATE

– 佔用 4 個字節

– 範圍: 0001-01-01 ~ 9999-12-31

4.年份, YEAR

– 佔用 1 個字節

– 範圍: 1901~2155

5.時間, TIME

– 佔用 3 個字節

– 格式: HH:MM:SS

ps:

關於日期時間字段

當未給 TIMESTAMP 字段賦值時,自動以當前系統時間賦值,而 DATETIME 字段默認賦值為 NULL。

關於YEAR 年份的處理

– 默認用 4 位數字表示

– 當只用 2 位數字賦值時, 01~69 視為 2000~2069 ,而 70~99 視為 1970~1999

6.小結:

年 year YYYY 2018

日期 date YYYYMMDD 20180614

時間 time HHMMSS 174258

日期時間datetimeYYYYMMDDHHMMSS 20180614174258

eg:

mysql> create table t7(

-> name char(15),

-> syear year,

-> birth date,

-> up_class time,

-> party datetime

-> );

mysql> insert into t7 values

("yaya",1990,20181120,083000,20180618213000);

mysql> select * from t7;

7.時間函數

mysql數據庫管理之一


分享到:


相關文章: