1、搭建數據庫服務器
目錄
什麼是數據庫?存儲數據的倉庫
部署一臺數據庫,提供數據庫存儲服務?
購買服務器 (硬件主機 雲主機 )
安裝操作系統: Unix Linux Windows
1、搭建數據庫服務器
1-1數據庫類型
常用的幾種關係型數據庫( RDBMS )
Mysql 、 Oracle 、 SQL server 、DB2
特點:按照一定的規則存儲數據
常用的幾種非關係型數據庫( NOSQL)
Redis Mongodb Memcached
Mysql的特點:
開源且跨平臺: unix linux windows
支持主流的編程語言:php java python ruby perl
可移植性好: 系統只要有C 運行環境即可運行Mysql
其可移植性體現如下:
A服務器
遠程傳宋Mysql數據庫主目錄到B服務器
scp -r /usr/local/mysql/ b:/usr/local/
B服務器上只需安裝gcc和gcc-c++軟件環境
yum -y install gcc gcc-c++
ls /usr/local/mysql/
1-2、數據庫服務通常和網站服務一起使用:LAMP LNMP
L-----Linux A-----Apache N----Nginx
M-----Mysql P-----PHP
如購物網站 遊戲網站 視頻網站 論壇網站 金融網絡
1-3、裝包、配置、起服務、查看服務信息
軟件包的來源? 官網下載 XXX . 主. 次. 修改次數
軟件名 主版本 次版本 偶數爲穩定版,奇數爲測試版
mysql-5.7.17.tar
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-client-5.7.17-1.el7.x86_64.rpm
1-3-1、裝包
rpm -qa | grep -i mariadb----檢查有沒有安裝mariadb
systemctl stop mariadb-----若已安裝則先停服務
rpm -e --nodeps mariadb-server-----卸載mariadb-server------ --nodeps不檢查依賴關係
rpm -e --nodeps mariadb-libs-------卸載mariadb-libs
rm -rf /var/lib/mysql/*------刪除/var/lib/mysql/*主目錄
rm -rf /etc/my.cnf------刪除主配置文件
tar -xf /root/mysql-5.7.17.tar-----解壓mysql-5.7.17.tar軟件包組
yum -y install perl-JSON-----安裝依賴包
yum -y install mysql-comm* ----批量安裝解壓出來的mysql-community的軟件
rpm -qa | grep -i mysql---列出所有已安裝的帶有mysql名字的軟件包
[root@host50 ~]# rpm -qa | grep -i mysql
mysql-community-libs-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
mysql-community-test-5.7.17-1.el7.x86_64
php-mysql-5.4.16-42.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-embedded-5.7.17-1.el7.x86_64
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
1-3-2、修改配置文件 /etc/my.cnf
[mysqld]
#skip_grant_tables------略過權限限制
#skip_networking----數據庫只能被本機訪問
#secure-file_priv=/mydata---------自定義數據導入導出文件存儲的目錄
1-3-3、啓動服務
30 systemctl start mysqld
31 systemctl status mysqld
32 ls /var/lib/mysql
33 systemctl enable mysqld
1-3-4、查看服務信息
端口號 3306 ss -utnlp | grep mysqld
進程 mysqld ps -C mysqld
2、把數據存儲到數據庫服務器上的過程?
1 連接數據庫服務器
# grep password /var/log/mysqld.log
2018-07-10T02:46:42.233732Z 1 [Note] A temporary password is generated for root@localhost: PjCJW&is,8jV
注意:第一次登陸的時候需要先用系統自動生成的密碼,用該密碼登陸後會提示您先改密碼,否則什麼也做不了
]#mysql -hlocalhost -uroot -p'PjCJW&is,8jV'
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "123456";
mysql> show databases;
mysql> quit
]#mysql -hlocalhost -uroot -p123456
mysql> show databases;
3、使用SQL (結構化查詢語言)命令 管理數據庫
3-1、創建庫 相當於系統的文件夾(查看 創建 切換 刪除)
show databases;-----列出所有庫名
create database 庫名;----新建庫
use 庫名;-----進入某一個庫
select database();-----查看當前在哪個庫下
show tables;----列出庫下的所有表,記得先進庫
drop database 庫名;-------刪掉哪一個庫
3-2、數據庫名的命名規則:
1.可以使用數字、字母、下劃線,但不能純數字
2.區分大小寫,且具有唯一性
3.不可以使用指令關鍵字、特殊字符
3-3、 創建表 ( 相當於系統文件)表必須在庫裏創建(創建表 查看內容 查看錶結構 刪除表 寫入數據)
create table studb.stuinfo(name char(15),sex char(10),age int,tel char(11) );-----創建表
desc studb.stuinfo;----查看錶結構
select * from studb.stuinfo;-----查看錶內容
insert into studb.stuinfo values("bob","boy",21,"8888888"),("zhaozhibin","boy",19,"66666666");---增加表內容
update studb.stuinfo set sex="girl";----改表內容
delete from studb.stuinfo;---刪除表內容
drop table stuinfo;-----刪除表
show tables;----列出所有表
4、斷開與數據庫連接
>quit;
5、指定表的字符集 可以存儲中文數據
use studb;
create table studb.學生表 (姓名 char(10) , 年齡 int) DEFAULT CHARSET=utf8;----表名和字段名默認可以使用中文,但字段內容默認不能使用中文,所以必須加DEFAULT CHARSET=utf8
alter table studb.學生表 DEFAULT CHARSET=utf8;----通過修改表結構來加上DEFAULT CHARSET=utf8選項
show create table 學生表;-----展出創建的表結構
6、Mysql數據類型
1.數值型:工資、消費金額、身高、體重
2.字符型:電腦品牌、姓名、住址、花名
3.枚舉類型:性別、興趣愛好、特長
4.日期類型:出生日期、上學時間、下班時間
6-1、數值型
整數型
create table t2(level tinyint unsigned);---tinyint小整數,unsigned只保存正數
浮點類型
整數.小數 總寬度
1029.33 6
create table t3 (pay float(5,2));----float(5,2)小數位精確兩位,總顯示寬度爲5,該顯示寬度不會限制字段賦值的大小,但通過設置顯示寬度的大小可以實現字符視覺整齊的效果,比如最大的數所佔寬度爲10,則設爲10,不足位數的會用0補齊。
(數值類型)的寬度是顯示寬度,不能限制字段賦值的大小字段值的大小由類型決定,僅適用於數值類型
insert into t3 values(1118.23);
6-2、字符類型
char (字符數)----- 定長,字符數最大255,不夠指定字符時在右邊用空格補齊,字符數超出時無法寫入,特點,不省空間,但節省內存
varchar( 字符數)----- 變長,字符數最大到65535,按數據實際大小分配存儲空間,字符數超出時無法寫入,特點省空間,浪費內存
大文本類型
text/blob------字符數大於65535存儲時使用
/root/media/film/xxx.avi
音頻文件 圖片 視頻文件
create table t5(name char(5))
insert into t5 values ("bob"),("ab");
create table t6(name varchar(5))
insert into t6 values ("bob"),("ab");
寫入後對比效果
create table t7 (
gamename char(15), level smallint unsigned , pay float(7,2) );
insert into t7 values("zbj",250,1880.22);
6-3、枚舉類型 : 讓字段的值 在規定的範圍內選擇
enum(值列表) 單選
set(值列表) 多選
create table t8 ( name char(15),sex enum("boy","girl","no"),likes set("game","film","eat","sleeps") );
insert into t8 values("bob","man","it,book");
搭建MySQL數據庫服務器 並設置數據庫管理員root用本機登陸密碼爲123456
6-4、日期時間類型:
目錄
年 year YYYY 2018
日期 date YYYYMMDD 20180711
時間 time HHMMSS 083000
日期時間 datetime YYYYMMDDHHMMSS----當未賦值時則爲null
timestamp 20180711093758-----當未賦值時則以當前時間賦值
create table t1(
name char(15), 姓名
s_year year, 出生年份
birthday date, 生日
work time, 上班時間
meetting datetime 約會時間
);
desc t1;
insert into t1 values("pengyuyan",1990,220000,20181120,20181224203000);
MySQL服務時間函數: MySQL服務內置的命令。
select now();-------------- 獲取系統日期時間
select year( now() );------ 獲取系統年份
select year( 20191224 );---- 獲取指定時間年份
select month( now() );-------獲取系統月份
select month( 20191224 );--- 獲取指定時間月份
select day( 20191224 );----- 獲取指定時間幾號
select day( now() );------- 獲取系統時間幾號
select date( now() );------- 獲取系統日期
select time( now() );------- 獲取系統時間
insert into t1 values("bob",year(now()),date(now()),time(151223),now());