做昆特牌的網(wǎng)站重慶seo教程
前言:本博客僅作記錄學(xué)習(xí)使用,部分圖片出自網(wǎng)絡(luò),如有侵犯您的權(quán)益,請(qǐng)聯(lián)系刪除
一、數(shù)據(jù)庫(kù)介紹
1、什么是數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)就是一個(gè)存放計(jì)算機(jī)數(shù)據(jù)的倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)是按照一定的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系)來(lái)對(duì)數(shù)據(jù)進(jìn)行組織和存儲(chǔ)的,可以通過(guò)數(shù)據(jù)庫(kù)提供的多種方法來(lái)管理其中的數(shù)據(jù)。
2、數(shù)據(jù)庫(kù)的種類(lèi)
關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)
3、生產(chǎn)環(huán)境常用數(shù)據(jù)庫(kù)
- 關(guān)系型數(shù)據(jù)庫(kù)有 Oracle、Microsoft SQL Server、MySQL/MariaDB等。
-
非關(guān)系型數(shù)據(jù)庫(kù)有 MongoDB、 Memcached、 Redis、
4、關(guān)系型數(shù)據(jù)庫(kù)
- 存儲(chǔ)數(shù)據(jù)實(shí)際采用的是一張二維表(和 word 和 Excel 里表格一致)
- 市場(chǎng)占有較大的是 MySQL 和 Oracle 數(shù)據(jù)庫(kù),而互聯(lián)網(wǎng)最常用的是 MySQL 數(shù)據(jù)庫(kù)
- 通過(guò)SQL 結(jié)構(gòu)化查詢(xún)語(yǔ)言來(lái)存取、管理關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)
- 在保持?jǐn)?shù)據(jù)安全和數(shù)據(jù)一致性方面很強(qiáng),遵循ACID理論
5、非關(guān)系型數(shù)據(jù)庫(kù)
- NoSQL 數(shù)據(jù)庫(kù)不是否定關(guān)系型數(shù)據(jù)庫(kù),而是作為關(guān)系數(shù)據(jù)庫(kù)的一個(gè)重要補(bǔ)充。
- NoSQL 數(shù)據(jù)庫(kù)為了靈活及高性能、高并發(fā)而生;
- 在NoSQL 數(shù)據(jù)庫(kù)領(lǐng)域,當(dāng)今的最典型產(chǎn)品為 Redis(持久化緩存)、MongoDB、Memcached(純內(nèi)存)等。
- NoSQL 數(shù)據(jù)庫(kù)沒(méi)有標(biāo)準(zhǔn)的查詢(xún)語(yǔ)言(SQL),通常使用數(shù)據(jù)接口或者查詢(xún)API。
非關(guān)系型數(shù)據(jù)庫(kù)的種類(lèi):
- 鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
- 列存儲(chǔ)(Colume-Oriented)數(shù)據(jù)庫(kù)
- 面向文檔的數(shù)據(jù)庫(kù)
-
圖形(Gtaph)數(shù)據(jù)庫(kù)
二、數(shù)據(jù)庫(kù)的安裝
這里使用RPM包在CentOS 7中進(jìn)行安裝數(shù)據(jù)庫(kù);
1、環(huán)境準(zhǔn)備
創(chuàng)建一個(gè)目錄來(lái)存放MySQL,并移動(dòng)下載的MySQL壓縮包到該目錄:
# mkdir /data
# mv mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz /data/
解壓MySQL壓縮包,并重命名文件夾:
# cd /data
# tar xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
2、MySQL 安裝
為了使用MySQL的命令行工具,需要將MySQL的bin目錄添加到環(huán)境變量中:
# echo -e "export PATH=/data/mysql/bin:$PATH" >> /etc/profile
# source /etc/profile
使用 mysql -V命令來(lái)檢查MySQL是否正確安裝:
?[root@localhost data]# mysql -Vmysql Ver 14.14 Distrib 5.7.20...
3、配置MySQL
移除可能存在的MariaDB庫(kù),創(chuàng)建MySQL用戶(hù),并安裝必要的庫(kù):
yum -y remove mariadb-libs
useradd mysql
yum -y install libaio-devel
初始化MySQL數(shù)據(jù)庫(kù),設(shè)置用戶(hù)和基礎(chǔ)目錄:
/data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
更改MySQL目錄的所有者為新創(chuàng)建的MySQL用戶(hù):
chown -R mysql.mysql /data
4、啟動(dòng)MySQL服務(wù)
復(fù)制MySQL服務(wù)腳本到init.d目錄,配置MySQL服務(wù)文件,并設(shè)置所有者:
cd /data/mysql/support-files/
cp mysql.server /etc/init.d/mysqld
編輯MySQL配置文件,設(shè)置基礎(chǔ)配置 :
[root@localhost ~]# echo -e "[mysqld] \nuser=mysql \nbasedir=/data/mysql \ndatadir=/data/mysql/data \nsocket=/tmp/mysql.sock \nlog_error=/data/mysql/error.log \npid_file=/data/mysql/3306.pid \nserver_id=137 \n[mysql] \nsocket=/tmp/mysql.sock" >> /etc/my.cnf
再次更改所有者,并啟動(dòng)MySQL服務(wù):
[root@localhost ~]# chown -R mysql.mysql /data
[root@localhost ~]# mysqld -default-file=/etc/my.cnf
創(chuàng)建MySQL的符號(hào)鏈接,以便在任何地方都能通過(guò) mysql
命令訪(fǎng)問(wèn):
[root@localhost ~]# ln -s /data/mysql /usr/local/mysql
5、驗(yàn)證安裝
創(chuàng)建錯(cuò)誤日志文件和PID文件,啟動(dòng)MySQL服務(wù),并檢查服務(wù)狀態(tài):
[root@localhost ~]# touch /data/mysql/error.log
[root@localhost ~]# touch /data/mysql/data/localhost.localdomain.pid
[root@localhost ~]# service mysqld start
6、修改密碼
'root'@'localhost' 本機(jī)的root
'root'@'%' 所有主機(jī)的root
'root'@'10.0.0.2' 10.0.0.2的root# 這條命令授予root用戶(hù)在本地主機(jī)(即localhost)上對(duì)所有數(shù)據(jù)庫(kù)和表的所有權(quán)限
grant all privileges on *.* to 'root'@'localhost' identified by '123';
mysql -u root -p# 授予root用戶(hù)在IP地址為10.0.0.2的主機(jī)上對(duì)所有數(shù)據(jù)庫(kù)和表的所有權(quán)限
grant all privileges on *.* to 'root'@'10.0.0.2' identified by '234';
mysql -h 10.0.0.2 -u root -p# 這條命令授予root用戶(hù)在任何主機(jī)上對(duì)所有數(shù)據(jù)庫(kù)和表的所有權(quán)限
grant all privileges on *.* to 'root'@'%' identified by '333';# 刷新MySQL的權(quán)限系統(tǒng)
flush privileges;
7、重置密碼
# 停止MySQL服務(wù)并終止MySQL進(jìn)程
[root@localhost ~]# service mysqld stop
[root@localhost ~]# killall mysqld# 以無(wú)授權(quán)表的方式啟動(dòng) MySQL 服務(wù),這允許您繞過(guò)登錄認(rèn)證
[root@localhost ~]# mysqld --skip-grant-tables --umyser=mysql &
[1] 3533# 啟動(dòng)MySQL并無(wú)密碼登錄
[root@localhost ~]# service mysqld start
[root@localhost ~]# mysql
# 使用新密碼更新root用戶(hù)密碼并刷新權(quán)限
mysql> update mysql.user set authentication_string=password('123') where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit
[root@localhost ~]# mysql
ERROR ...
[root@localhost ~]# mysql -u root -p
Enter password:
三、數(shù)據(jù)庫(kù)基本操作
1、數(shù)據(jù)庫(kù)存儲(chǔ)引擎(擴(kuò)展)
數(shù)據(jù)庫(kù)存儲(chǔ)引擎是數(shù)據(jù)庫(kù)底層軟件組織,數(shù)據(jù)庫(kù)管理系統(tǒng)使用數(shù)據(jù)引擎進(jìn)行創(chuàng)建、查詢(xún)、更新和刪除數(shù)據(jù)。不同的存儲(chǔ)引擎提供不同的存儲(chǔ)機(jī)制、索引、鎖表等功能,使用不同的存儲(chǔ)引擎,MySQL的核心就是存儲(chǔ)引擎。
MySQL引擎功能: 除了可以提供基本的讀寫(xiě)功能,還有更多功能事務(wù)功能、鎖定、備份和恢復(fù)、優(yōu)化以及特殊功能。
引擎種類(lèi):
- InnoDB存儲(chǔ)引擎:默認(rèn)引擎,最常用的。
- MyISAM存儲(chǔ)引擎
- MEMORY內(nèi)存型引擎
- Archive(歸檔引擎)
存儲(chǔ)引擎查看:
mysql> show engines;
修改搜索引擎:
mysql> ALTER TABLE 表名 ENGINE=引擎;
查看MySQL當(dāng)前默認(rèn)的存儲(chǔ)引擎:
msyql> show variables like '%storage_engine%';
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set (0.01 sec)
查看MySQL服務(wù)器上的版本:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20 |
+-----------+
1 row in set (0.00 sec)
創(chuàng)建時(shí)候指定引擎:
mysql> create table t1(id int,manager char(10)) engine=innodb;
知識(shí)了解:
- 外鍵:外鍵的主要作用是保持?jǐn)?shù)據(jù)的一致性、完整性
- 索引:索引相當(dāng)于書(shū)中的目錄,可以提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫(kù)的IO的壓力
- 行鎖定與鎖表:可以將一張表鎖定和可以單獨(dú)鎖一行的記錄。為了防止你在操作的同時(shí)也有別人在操作
- 事務(wù):事務(wù)是由一步或幾步數(shù)據(jù)庫(kù)的操作。這系列操作要么全部執(zhí)行,要么全部放棄執(zhí)行。
事務(wù)控制語(yǔ)句(TCL)
事務(wù)控制語(yǔ)言 (Transaction Control Language) 有時(shí)可能需要使用 DML 進(jìn)行批量數(shù)據(jù)的刪除,修改,增加。從開(kāi)始執(zhí)行到結(jié)束,就會(huì)構(gòu)成一個(gè)事務(wù);對(duì)于事務(wù),要保證事務(wù)的完整性。要么成功,要么撤回。
事務(wù)要符合四個(gè)條件(ACID)
- 原子性:事務(wù)是應(yīng)用中最小的執(zhí)行單位,
- 一致性:事務(wù)執(zhí)行的結(jié)果,必須使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài),變到另一個(gè)一致性狀態(tài)
- 隔離性:當(dāng)涉及到多用戶(hù)操作同一張表時(shí),數(shù)據(jù)庫(kù)會(huì)為每一個(gè)用戶(hù)開(kāi)啟一個(gè)事務(wù)。各個(gè)事務(wù)的執(zhí)行互不干擾,任意一個(gè)事務(wù)的內(nèi)部操作對(duì)其他并發(fā)的事務(wù)都是隔離的。
-
持續(xù)性:持續(xù)性也稱(chēng)為持久性指事務(wù)一旦提交對(duì)數(shù)據(jù)所做的任何改變,都要記錄到永久存儲(chǔ)器中,通常是保存進(jìn)物理數(shù)據(jù)庫(kù)。即使數(shù)據(jù)庫(kù)崩潰了,我們也要保證事務(wù)的完整性。
2、SQL語(yǔ)句
2.1、種類(lèi)
- SQL:(Structured Query Language)結(jié)構(gòu)化查詢(xún)語(yǔ)言;用于存取數(shù)據(jù)、查詢(xún)數(shù)據(jù)、更新數(shù)據(jù)和管理數(shù)據(jù)庫(kù)系統(tǒng),SQL語(yǔ)言由IBM開(kāi)發(fā)
- DDL語(yǔ)句:(Database Define Language)數(shù)據(jù)庫(kù)定義語(yǔ)言:數(shù)據(jù)庫(kù)、表、視圖、索引、存儲(chǔ)過(guò)程;如CREATE、 DROP 、ALTER
- DML語(yǔ)句:(Database Manage Language)數(shù)據(jù)庫(kù)操縱語(yǔ)言(對(duì)記錄的操作):插入數(shù)據(jù)INSERT、刪除數(shù)據(jù)DELETE、更新數(shù)據(jù)UPDATA
- DCL語(yǔ)句:(Database Control Lanaguage)數(shù)據(jù)庫(kù)控制語(yǔ)言(和權(quán)限有關(guān)):例如控制用戶(hù)的訪(fǎng)問(wèn)權(quán)限CRANT、REVOKE
- DQL語(yǔ)句:(Database Query Language)數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言:查詢(xún)數(shù)據(jù)SELECT;
2.2、庫(kù)
相當(dāng)于一個(gè)目錄,存放數(shù)據(jù)的;
- 庫(kù)里面存放的表, 相當(dāng)于是文件。
- 每一行叫做記錄,除第一行。
- 每一列叫一個(gè)字段。列上面的第一個(gè)叫字段名稱(chēng)。
-
創(chuàng)建一個(gè)庫(kù):---->查看庫(kù)--->進(jìn)入這個(gè)庫(kù)----->創(chuàng)建表----->查看表:查看表名,表的字段(表結(jié) 構(gòu)),表里面的內(nèi)容(表記錄),查看表的狀態(tài)----->修改表:添加字段,刪除字段,修改字段-----> 修改記錄(更新記錄),添加記錄,刪除記錄。各種查詢(xún),刪除表,刪除庫(kù)。
2.3、增刪改查
# 1.創(chuàng)建庫(kù)
mysql> create database 庫(kù)名;
# 2.查看數(shù)據(jù)庫(kù)
mysql> show databases;
# 3.進(jìn)入數(shù)據(jù)庫(kù)
mysql> use 庫(kù)名;
# 4.查看當(dāng)前所在的庫(kù)
mysql> select database();
# 5.查看當(dāng)前庫(kù)下所有的表格
mysql> show tables;
2.4、表
create table 表名(
字段名1 類(lèi)型[(寬度) 約束條件],
字段名2 類(lèi)型[(寬度) 約束條件],
字段名3 類(lèi)型[(寬度) 約束條件]
)[存儲(chǔ)引擎 字符集];
# 在同一張表中,字段名是不能相同
# 寬度和約束條件可選
# 字段名和類(lèi)型是必須的
(1)創(chuàng)建表:
創(chuàng)建表 create table t1(id int,name varchar(20),age int);
字段 類(lèi)型 字段 類(lèi)型(長(zhǎng)度),字段 類(lèi)型
mysql> create table t1(id int,name varchar(50),sex enum('m','f'),age int);
(2)查看有哪些表:
mysql> show tables;
(3)查看表結(jié)構(gòu):
mysql> desc t1;
(4)查看表里面的所有記錄:
# 語(yǔ)法: select 內(nèi)容 from 表名;
mysql> select * from t1;# *:代表所有內(nèi)容
(5)查看表里面的指定字段:
語(yǔ)法:select 字段,字段 from 表名;
mysql> select name,sex from t1;
(6)查看表的狀態(tài):
mysql> show table status like '表名'\G ---每條SQL語(yǔ)句會(huì)以分號(hào)結(jié)尾,想看的清楚一
# 些以\G結(jié)尾,一條記錄一條記錄顯示。(把表90度向左反轉(zhuǎn),第一列顯示字段,第二列顯示記錄)使用的\G就不用添加分號(hào)了
(7)修改表名稱(chēng):
# 方式一、語(yǔ)法:rename table 舊表名 to 新表名;
mysql> rename table t1 to t2;
Query OK, 0 rows affected (0.00 sec)# 方式二、語(yǔ)法:alter table 舊表名 rename 新表名;
mysql> alter table t2 rename t3;
(8)使用edit(\e)編輯------了解
mysql> \e #可以寫(xiě)新的語(yǔ)句,調(diào)用的vim編輯器,在里面結(jié)尾的時(shí)候不加分號(hào),保存退出之后在
加“;”
-> ;
(9)刪除表:
mysql> drop table 表名;
(10)刪除庫(kù):
mysql> drop database 庫(kù)名;
致謝
在此,我要對(duì)所有為知識(shí)共享做出貢獻(xiàn)的個(gè)人和機(jī)構(gòu)表示最深切的感謝。同時(shí)也感謝每一位花時(shí)間閱讀這篇文章的讀者,如果文章中有任何錯(cuò)誤,歡迎留言指正。?
學(xué)習(xí)永無(wú)止境,讓我們共同進(jìn)步!!