MySQL數據庫初體驗
Ram:隨機性訪問存儲器,斷電丟失數據 內存
Rom:只讀訪問存儲器,不會丟失數據
管理存儲的數據,數據的增刪改查,數據的遷移,保證數據的私密性
1.數據庫的基本概念
2.數據庫的發展
3.主流的數據庫介紹
4.編譯安裝mysql
5.操作mysql
數據庫的基本概念
數據:
1.描述事物的符號記錄稱爲數據(Data)
2.包括數字,文字、圖形、圖像、聲音、檔案記錄等
3.以“記錄”形式按統一-的格式進行存儲
表:
1.將不同的記錄組織在一-起,就形成了“表”
2.是用來存儲具體數據的
數據庫:
1.數據庫就是表的集合,是存儲數據的倉庫
2.以一定的組織方式存儲的相互有關的數據
數據庫系統發展史
第一代數據庫:
自20世紀60年代起,第一-代數據庫系統問世。它們是層次模型與網狀模型的數據庫系統,爲統一管理和共享 數據提供了有力的支撐
第二代數據庫:
1.20世紀70年代初,第二代數據庫一 關係數據庫開始出現
2.20世紀80年代初,IBM公司的關係數據庫系統DB2問世,作爲第二代數據庫系統的關係數據庫,開始逐步取代層次與網狀模型的數據庫,成爲占主導地位的數據庫,成爲行業主流。到目前爲止,關係數據庫系統仍佔領數據庫應用的主要地位
第三代數據庫:
1.自20世紀80年代開始,各種適應不同領域的新型數據庫系統不斷涌現,如工程數據庫、多媒體數據庫、圖形數據庫、智能數據庫、分佈式數據庫及面向對象數據庫等,特別是面向對象數據庫系統,由於其實用性強、適應面廣而受到人們的青睞
2.20世紀90年代後期,形成了多種數據庫系統共同支撐應用的局面。當然,在商務應用方面,依然還是關係數據庫佔主流,不過已經有- -些新的元素被添加進主流商務數據庫系統中。例如,Oracle支持的"關係-對象”數據庫模型
關係數據庫:數據 整型,浮點型,字符型,字符串(固定長度,可變長),布爾
非關係數據庫:對象(圖片,視頻)
當今主流數據庫介紹
SQL Server (微軟公司產品)
1.面向Windows操作系統(客戶端)
2.簡單、易用
Oracle (甲骨文公司產品)
1.面向所有主流平臺
2.安全、完善,操作複雜
DB2 (IBM公司產品)
1.面向所有主流平臺
2.大型、安全、完善
MySQL (甲骨文公司收購)
1.免費、開源、體積小
關係數據庫
1.關係數據庫系統是基於關係模型的數據庫系統,它的基本概念來自於關係模型
2.關係模型建立在關係代數的理論基礎.上,數據結構使用簡單易懂的二維數據表,可以用簡單的“實體-關係”(E-R)圖來直接表示
3.E-R圖中包含了實體(數據對象)、關係和屬性三個要素
實體:
也稱爲實例,對應現實世界中可區別於其他對象的"事件"或"事物”,如銀行客戶、銀行賬戶等
屬性:
實體所具有的某一特性,一個實體可以有多個屬性。例如,"銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性
聯繫:
實體集之間的對應關係稱爲聯繫,也稱爲關係。例如,銀行客戶和銀行賬戶之間存在”儲蓄”的關係
所有實體及實體之間聯繫的集合構成一個關係數據庫
1.關係數據庫的存儲結構是二維表格,反映事物及其聯繫的數據是以表格形式保存的
2.在每個二維表中,每一行稱爲一條記錄用來描述一個對象的信息;每一列稱爲一 個字段,用來描述對象的一個屬性
非關係數據庫介紹
1.非關係數據庫也被稱作NoSQL(Not Only SQL),存儲數據不以關係模型爲依據,不需要固定的表格式
2.非關係型數據庫作爲關係數據庫的一個補充,在日益快速發展的網站時代,發揮着高效率與高性能
3.非關係型數據庫的優點:
①數據庫高併發讀寫的需求
②對海量數據高效率存儲與訪問(大數據)
③數據庫的高擴展性與高可用性的需求(可做羣集,確保高可用,高可靠)
對象包含:屬性,行爲
非關係型數據庫存儲方式
1.鍵-值方式(key-value), 以鍵爲依據存儲、刪、改數據
2.列存儲(Column-oriented),將相關的數據存儲在列族中
3.文檔的方式,數據庫由-系列數據項組成,每個數據項都有名稱與對應的值
4.圖形方式,實體爲頂點,關係爲邊,數據保存爲一個圖形
非關係數據庫產品
Memcached是一個開源的、高性能的、具有分佈式內存對象的緩存系統,以key-value方式存儲數據
1.緩存數據以減輕數據庫壓力並能加快訪問速度
2.加速動態Web應用
3.緩存的內容保存在內存中
redis也是一個以key-value方式存儲數據的, 數據也是保存在內存中,但會定期將數據寫入磁盤中
1.相對於Memcached有以下特點
①支持內存緩存
②支持持久化
③數據類型更多
④支持集羣、分佈式
⑤支持隊列
redis應用舉例:
1.數據庫前端緩存
2.session共享
3.當需要緩存除了key/value之外的更多數據類型時
4.當緩存的數據需要長久保存時
MySQL數據庫介紹
1.MySQL是一款深受歡迎的開源關係型數據庫
2.Oracle旗下的產品
3.遵守了GPL協議,可以免費使用與修改
4.特點
①性能卓越、服務穩定,
②開源、無版權限制、成本低
③多線程、多用戶
④基於C/S (客戶端/服務器)架構
⑤安全可靠
MySQL商業版與社區版
1.MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用
2.MySQL社區版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用
3.兩者區別:
①商業版組織管理與測試環節更加嚴格,穩定性更好
②商業版不遵守GPL
③商業版可獲得7*24小時的服務,如故障維護與打補丁等
MySQL產品陣營
1.第一陣營: 5.0-5.1陣營,可說是早期產品的延續
2.第二陣營: 5.4-5.7陣營,更好地整合了'MySQL AB公司、社區、第三方公司開的存儲引擎,從而提高性能
3.第三陣營: 6.0-7.1陣營,就是MySQL Cluster版本,爲適應新時代集羣對數據庫的需求而開發
4.MySQL下載網址:http://www.dev.mysql.com/downloads
Demo:MySQL數據庫5.7.17手工編譯安裝
[root@localhost ~]# yum -y install \
ncurses \
ncurses-devel \
bison \
cmake
[root@localhost ~]# useradd -s /sbin/nologin mysql
[root@localhost ~]# mkdir /aaa
[root@localhost ~]# mount.cifs //192.168.0.105/rpm /aaa
Password for root@//192.168.0.105/rpm:
[root@localhost ~]# cd /aaa
[root@localhost aaa]# ls
apr-1.6.2.tar.gz lf.jpg
apr-util-1.6.0.tar.gz mysql-5.6.26.tar.gz
awstats-7.6.tar.gz mysql-5.7.17.tar.gz
boost_1_59_0.tar.gz mysql-boost-5.7.20.tar.gz
cronolog-1.6.2-14.el7.x86_64.rpm nginx-1.12.2.tar.gz
Discuz_X3.4_SC_UTF8.zip php-7.1.10.tar.bz2
error.png php-7.1.20.tar.gz
extundelete-0.2.4.tar.bz2 TC
httpd-2.4.29.tar.bz2 wh.jpeg
john-1.8.0.tar.gz yy.png
jqwh.jpg
[root@localhost aaa]# tar zxvf mysql-5.7.17.tar.gz -C /opt/
[root@localhost aaa]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost aaa]# cd /usr/local/
[root@localhost local]# ls
bin etc include lib64 sbin src
boost_1_59_0 games lib libexec share
[root@localhost local]# mv boost_1_59_0/ boost
[root@localhost local]# ls
bin etc include lib64 sbin src
boost games lib libexec share
[root@localhost local]# cd /opt/mysql-5.7.17/
[root@localhost mysql-5.7.17]# ls
BUILD extra mysys strings
client include mysys_ssl support-files
cmake INSTALL packaging testclients
CMakeLists.txt libbinlogevents plugin unittest
cmd-line-utils libbinlogstandalone rapid VERSION
config.h.cmake libevent README vio
configure.cmake libmysql regex win
COPYING libmysqld scripts zlib
dbug libservices sql
Docs man sql-common
Doxyfile-perfschema mysql-test storage
[root@localhost mysql-5.7.17]# yum install gcc gcc-c++ -y
[root@localhost mysql-5.7.17]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
[root@localhost mysql-5.7.17]# make && make install
[root@localhost mysql-5.7.17]# chown -R mysql /usr/local/mysql/
[root@localhost mysql-5.7.17]# vim /etc/my.cnf
#先100dd刪除所有行,然後再插入以下內容
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
#修改結束後按Esc退出插入模式,輸入:wq保存退出
[root@localhost mysql-5.7.17]# chown mysql.mysql /etc/my.cnf
[root@localhost mysql-5.7.17]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.17]# echo 'export PATH' >> /etc/profile
[root@localhost mysql-5.7.17]# source /usr/local/mysql
[root@localhost mysql-5.7.17]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure
--user=mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
[root@localhost mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# systemctl start mysqld.service
[root@localhost mysql]# netstat -ntap | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 3029/mysqld
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# mysqladmin -u root -p password "abc123" #指定新密碼
Enter password: #此處爲空直接回車
[root@localhost mysql]# mysql -u root -p
Enter password: #此處輸入之前設置的密碼abc123
......此處省略多行
mysql>grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
#此時可以登錄數據庫,可以直接授予權限
Query OK, 0 rows affected, 1 warning (0.00 sec)