想要去國外網(wǎng)站買東西怎么做最好的營銷策劃公司
一、數(shù)據(jù)庫管理系統(tǒng)DBMS
數(shù)據(jù)庫技術(shù)是計算機(jī)科學(xué)的核心技術(shù)之一,具有完備的理論基礎(chǔ)。使用數(shù)據(jù)庫可以高效且條理分明地存儲數(shù)據(jù),使人們能夠更加迅速、方便地管理數(shù)據(jù)
1.可以結(jié)構(gòu)化存儲大量的數(shù)據(jù)信息,方便用戶進(jìn)行有效的檢索和訪問
2.可以有效地保持?jǐn)?shù)據(jù)信息的一致性、完整性,降低數(shù)據(jù)冗余
3.可以滿足應(yīng)用的共享和安全方面的要求
文件管理系統(tǒng)缺點 | 數(shù)據(jù)庫管理系統(tǒng)DBMS優(yōu)點 |
編寫應(yīng)用程序不方便 | 相互關(guān)聯(lián)的數(shù)據(jù)的集合 |
數(shù)據(jù)冗余不可避免 | 較少的數(shù)據(jù)冗余 |
應(yīng)用程序依賴性 | 程序與數(shù)據(jù)相互獨立 |
不支持對文件的并發(fā)訪問 | 保證數(shù)據(jù)的安全、可靠 |
數(shù)據(jù)間聯(lián)系弱 | 最大限度地保證數(shù)據(jù)的正確性 |
難以按用戶視圖表示數(shù)據(jù) | 數(shù)據(jù)可以并發(fā)使用并能同時保證一致性 |
無安全控制功能 |
1.DBMS的功能
數(shù)據(jù)管理系統(tǒng)的基本功能為數(shù)據(jù)定義、數(shù)據(jù)處理、數(shù)據(jù)安全、數(shù)據(jù)備份
1.數(shù)據(jù)庫的建立和維護(hù)功能包括建立數(shù)據(jù)庫的結(jié)構(gòu)和數(shù)據(jù)的錄入與轉(zhuǎn)換、數(shù)據(jù)庫的 轉(zhuǎn)儲與恢復(fù)、數(shù)據(jù)庫的重組與性能監(jiān)視等功能
2.數(shù)據(jù)定義功能:包括定義全局?jǐn)?shù)據(jù)結(jié)構(gòu)、局部邏輯數(shù)據(jù)結(jié)構(gòu)、存儲結(jié)構(gòu)、保密模式及信息格式等功能。保證存儲在數(shù)據(jù)庫中的數(shù)據(jù)正確、有效和相容,以防止不合語義的錯誤數(shù)據(jù)被輸入或輸出
3.數(shù)據(jù)操縱功能:包括數(shù)據(jù)查詢統(tǒng)計和數(shù)據(jù)更新兩個方面
4.數(shù)據(jù)庫的運行管理功能:這是數(shù)據(jù)庫管理系統(tǒng)的核心部分,包括并發(fā)控制、存取控制、數(shù)據(jù)庫內(nèi)部維護(hù)等功能
5.通信功能:DBMS與其他軟件系統(tǒng)之間的通信,如Access能與其他Office組件進(jìn)行數(shù)據(jù)交換
2.DBMS架構(gòu)
單機(jī)架構(gòu)、大型主機(jī)/終端架構(gòu)、主從式架構(gòu)(C/S)、分布式架構(gòu)
3.DBMS分類
1.層次數(shù)據(jù)庫
層次模型數(shù)據(jù)庫系統(tǒng)是最早研制成功的數(shù)據(jù)庫系統(tǒng),這種數(shù)據(jù)庫最成功的典型是IMS,IMS的全稱是Information Management System,由IBM公司研制成功。IMS于1969年投入運行,最早的版本有IMS/360-1和IMS/360-2。較近的版本有IMS/VS DL/1,它是在操作系統(tǒng)DOS/VS(Disk Operation System/Virtual Storage)支持下運行
2.網(wǎng)狀數(shù)據(jù)庫
網(wǎng)狀數(shù)據(jù)庫是采用網(wǎng)狀原理和方法,以網(wǎng)狀數(shù)據(jù)模型為基礎(chǔ)建立的數(shù)據(jù)庫。一般是指由網(wǎng)狀數(shù)據(jù)庫管理系統(tǒng)產(chǎn)生的網(wǎng)狀數(shù)據(jù)庫系統(tǒng)。網(wǎng)狀數(shù)據(jù)模型是以記錄類型為結(jié)點的網(wǎng)絡(luò)結(jié)構(gòu),即一個結(jié)點可以有一個或多個下級結(jié)點,也可以有一個或多個上級結(jié)點,兩個結(jié)點之間甚至可以有多種聯(lián)系。例如“教師”與“課程”兩個記錄類型,可以有“任課”和“輔導(dǎo)”兩種聯(lián)系,稱之為復(fù)合鏈。兩個記錄類型之間的值可以是多對多的聯(lián)系,例如一門課程被多個學(xué)生修讀,一個學(xué)生選修多門課程
3.RDBMS關(guān)系型數(shù)據(jù)庫
Relational Database Management System,關(guān)系模型最初由IBM公司的英國計算機(jī)科學(xué)家埃德加·科德(Edgar F. Codd)于1969年描述,1974年,IBM開始開發(fā)系統(tǒng)R,這是一個開發(fā)RDBMS原型的研究項目。然而,第一個商業(yè)上可用的RDBMS是甲骨文,于1979年由關(guān)系軟件(現(xiàn)為甲骨文公司)發(fā)布
二、RDBMS關(guān)系型數(shù)據(jù)庫
1.關(guān)系型數(shù)據(jù)庫
1.關(guān)系Relational:關(guān)系就是二維表,其中:表中的行、列次序不重要
2.行row:表中的每一行又稱為一條記錄record
3.列column:表中的每一列,稱為屬性,字段,域field
4.主鍵primary key:PK,用于唯一確定一個記錄的字段,一張表只有一個主鍵
5.域domain:屬性的取值范圍,例如:性別只能是男或女
2.常用關(guān)系數(shù)據(jù)庫
1.MYSQL(免費、開源、體積小)
2.SQL Server(面向Windows操作系統(tǒng)、簡單、容易使用)
3.Oracle(面向所有主流平臺、安全完善、操作復(fù)雜)
4.DB2(面向所有主流平臺、大型、安全完善)
5.PostgreSQL(簡稱pgsql,EnterpriseDB)
3、關(guān)系型數(shù)據(jù)庫三要素
實體:對應(yīng)現(xiàn)實世界中可區(qū)別于其他對象的“事件”或“事物”,如銀行客戶、銀行賬戶等
屬性:實體所具有的某一特性,一個實體可以有多個屬性,如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性
聯(lián)系:實體集之間的對應(yīng)關(guān)系稱為聯(lián)系,也稱為關(guān)系,如銀行客戶和銀行賬戶之間存在“儲蓄”的關(guān)系
4.關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫
1.關(guān)系數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫的存儲結(jié)構(gòu)是二維表格,在每個二維表中,每一行稱為一條記錄,用來描述一個對象的信息,每一列稱為一個字段,用來描述對象的一個屬性
1.關(guān)系數(shù)據(jù)庫系統(tǒng)是基于關(guān)系模型的數(shù)據(jù)庫系統(tǒng)
2.關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)使用簡單易懂的二維數(shù)據(jù)表
3.關(guān)系模型可用簡單的“實體-關(guān)系”(E-R)圖來表示
4.E-R圖中包含了實體(數(shù)據(jù)對象)、關(guān)系和屬性三個要素
2.非關(guān)系數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù)不以關(guān)系模型為依據(jù),不需要固定的表格式(常用的非關(guān)系數(shù)據(jù)庫:Redis、mongoDB等)
1.數(shù)據(jù)庫可高并發(fā)讀寫
2.對海量數(shù)據(jù)高效率存儲與訪問
3.數(shù)據(jù)庫具有高擴(kuò)展性與高可用性
三、數(shù)據(jù)庫基礎(chǔ)
數(shù)據(jù)庫內(nèi)核的作用:調(diào)用硬件資源
1.數(shù)據(jù)
1.描述事物的符號記錄
2.包括數(shù)字、文字、圖形、圖像、聲音、檔案記錄等
3.以“記錄”形式按統(tǒng)一的格式進(jìn)行存儲
2.表
1.將不同的記錄組織在一起
2.用來存儲具體數(shù)據(jù)
3.數(shù)據(jù)庫
1.表的集合,是存儲數(shù)據(jù)的倉庫
2.以一定的組織方式存儲的相互有關(guān)的數(shù)據(jù)集合
4.訪問數(shù)據(jù)庫的流程
過程:應(yīng)用程序把查詢SQL語句發(fā)給服務(wù)器端執(zhí)行>服務(wù)器解析請求的SQL語句>語句執(zhí)行
注:確保SQL語法正確,確保SQL語義上的正確性即對象是否存在,數(shù)據(jù)庫用戶是否具有相應(yīng)的訪問權(quán)限
四、數(shù)據(jù)庫介紹
1.數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)是由人機(jī)系統(tǒng)、硬件、OS、數(shù)據(jù)庫、DBMS、應(yīng)用軟件和數(shù)據(jù)庫用戶組成,用戶可以通過DBMS或應(yīng)用程序操作數(shù)據(jù)庫
數(shù)據(jù)庫分兩大類,關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫SQL:
操作命令:SQL語句
存儲結(jié)構(gòu):二維表格
存儲的數(shù)據(jù):結(jié)構(gòu)化數(shù)據(jù)
每一行稱為一條記錄,用來描述一個對象的信息
每一列稱為一個字段,用來描述對象的一個屬性
非關(guān)系數(shù)據(jù)庫NoSQL:
存儲結(jié)構(gòu):鍵值對文檔索引時間序列
緩存型:Redis Memcached
文檔型:MongoDB
索引型:ElasticSearch
時序型:Prometheus InfluxDB
主鍵:
主鍵(Primary Key)是一個數(shù)據(jù)庫表中的一列或一組列,用于確保數(shù)據(jù)的唯一性和數(shù)據(jù)行的唯一標(biāo)識,在表中,主鍵的值是唯一的
主鍵具有以下特點:
1.唯一性:主鍵列中的值必須是唯一的,每一行的主鍵值都不相同
2.非空性:主鍵列的值不能為空,也就是不允許為空值或NULL值
3.唯一標(biāo)識性:主鍵用于識別和區(qū)分表中的不同行數(shù)據(jù),通過主鍵可以快速定位和訪問表中的數(shù)據(jù)
主鍵還可以用于建立表與表之間的關(guān)系,實現(xiàn)數(shù)據(jù)的關(guān)聯(lián)和連接操作
2.MySQL數(shù)據(jù)庫的特點和三大分支
MySQL數(shù)據(jù)庫特點:
1.性能卓越、服務(wù)穩(wěn)定
2.開源,無版權(quán)限制,成本低
3.多線程,多用戶
4.基于(C/S)(客戶端/服務(wù)端)架構(gòu)
5.安全可靠
MySQL三大分支:
1.mysql
2.mariadb
3.percona Server
查看MySQL版本:mysql -V
3.MySQL的組成
客戶端程序:
1.mysql交互式的CLI工具
2.mysqladmin:基于mysql協(xié)議管理mysqld
3.mysqlimport:數(shù)據(jù)導(dǎo)入工具
4.myisamchk:檢查MyISAM庫
5.myisampack:打包MyISAM表,只讀
服務(wù)器端程序:
1.mysqld_safe
2.mysqld
3.mysqld_multi多實例
4.常用的數(shù)據(jù)類型
int :整型 無符號[0,232-1],有符號[-231,2^31-1]
float :單精度浮點 4字節(jié)32位
double :雙精度浮點 8字節(jié)64位
char :固定長度的字符類型
varchar :可變長度的字符類型
text :文本
image :圖片
decimal(5,2) :5個有效長度數(shù)字,小數(shù)點后面有2位
5.SQL語句
SQL語句用于維護(hù)管理數(shù)據(jù)庫,包括數(shù)據(jù)查詢、數(shù)據(jù)更新、訪問控制、對象管理等功能。
SQL語言分類:
DDL:數(shù)據(jù)定義語言,用于創(chuàng)建數(shù)據(jù)庫對象,如庫、表、索引等
DML:數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進(jìn)行管理
DQL:數(shù)據(jù)查詢語言,用于從數(shù)據(jù)表中查找符合條件的數(shù)據(jù)記錄
DCL:數(shù)據(jù)控制語言,用于設(shè)置或者更改數(shù)據(jù)庫用戶或角色權(quán)限
6.MySQL的約束特性
1.primary key(主鍵約束):字段的值不能重復(fù)且不能為null,一個表只能有一個唯一鍵
2.uniq key(唯一性約束):字段的值不能重復(fù),可以為null,一個表可以有多個唯一鍵
3.not null(非空約束):字段的值不能為null
4.default(默認(rèn)值約束):字段的值如果沒有設(shè)置,則使用默認(rèn)值自動填充
5.auto_increment (自增約束) :字段的值如果沒有設(shè)置,默認(rèn)會從1開始,每次自動遞增1,要求自增字段必須設(shè)置主鍵
6.int(N) zerofill (零填充)
五、編譯安裝MySQL數(shù)據(jù)庫
1.安裝相關(guān)依賴包
yum -y install gcc gcc-c++?bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ?gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel? ?ncurses-devel autoconf cmake
2.下載并解壓壓縮源碼包
cd? /opt
tar? xf? mysql-boost-5.7.20.tar.gz
3.切換到mysql目錄下檢測編譯環(huán)境并選擇功能
cd? mysql-5.7.20
?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=boost \
-DWITH_SYSTEMD=1
4.編譯安裝(時間較久)
make? -j2? &&? make? install
5.數(shù)據(jù)庫目錄進(jìn)行權(quán)限調(diào)整,改變屬主屬組
useradd? -s? /sbin/nologin? mysql
chown? -R? mysql:mysql? /usr/local/mysql
chown? mysql:mysql? /etc/my.cnf
6.編輯配置文件
?vim? /etc/my.cnf
[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 = 1sql_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
7.設(shè)置環(huán)境變量
#配置環(huán)境變量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile#刷新
source /etc/profile
#查看環(huán)境變量是否配置成功
echo? $PATH
8.初始化數(shù)據(jù)庫
#切換目錄
cd? /usr/local/mysql
#初始化
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
9.復(fù)制
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
10.數(shù)據(jù)庫開啟自啟、關(guān)閉、狀態(tài)
#設(shè)置開機(jī)自啟
systemctl enable mysqld
#開啟
systemctl start mysqld
#關(guān)閉
systemctl stop mysqld
#查看狀態(tài)
systemctl status mysqld
#過濾端口驗證是否開啟
ss? -anpt |grep 3306
11.設(shè)置MySQL密碼
#設(shè)置密碼為123,開始初始密碼為空,直接回車即可
mysqladmin -u root -p password? "123"
?12.登錄和登出mysql
#登錄
mysql? -u? root -p
#退出
quit
六、yum安裝mysql數(shù)據(jù)庫
1.yum安裝5.7版本
yum install mariadb-server -y
2.啟動 MariaDB 數(shù)據(jù)庫服務(wù)
systemctl start mariadb.service
3.對MariaDB數(shù)據(jù)庫進(jìn)行初始化設(shè)置,這里只用設(shè)置一個密碼,一路回車即可
#進(jìn)入初始化設(shè)置
mysql_secure_installation?
4.創(chuàng)建一個新的YUM倉庫配置文件,將相關(guān)的倉庫信息寫入到這個文件中
#創(chuàng)建一個新的yum倉庫配置文件
tee /etc/yum.repos.d/mysql.repo <<EOF
#將此內(nèi)容寫入該文件,官方源5.7.3
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
5.使用yum包管理器安裝MySQL服務(wù)器
yum -y install mysql-community-server
6.啟動mysql服務(wù)
systemctl start mysqld
7.查看3306端口使用情況
ss -ntap |grep 3306
8.啟動mysql
mysql? -u root -p
輸入密碼
七、MySQL數(shù)據(jù)庫基本操作
1.登錄Mysql數(shù)據(jù)庫
表名和庫名區(qū)分大小寫,命令不區(qū)分大小寫
#登錄
mysql? -u? root? -p
2.新建數(shù)據(jù)庫與查看數(shù)據(jù)庫的基礎(chǔ)信息
#建立數(shù)據(jù)庫
create database eva;
#查看數(shù)據(jù)庫的基礎(chǔ)信息
show create database eva;
3.新建數(shù)據(jù)庫,指定字符集
#指定utf8字符集
create database eva?charset=utf8;
#查看數(shù)據(jù)庫的基礎(chǔ)信息
show create database eva;
4.if no exists是否存在(判斷數(shù)據(jù)庫是否存在)
#判斷數(shù)據(jù)庫是否存在
create database IF NOT EXISTS eva;
#查看警告信息
show warnings;
#創(chuàng)建數(shù)據(jù)庫的SQL語句,用于創(chuàng)建一個名為
zabbix
的數(shù)據(jù)庫,并指定字符集為utf8
,排序規(guī)則為utf8_bin
create database
?是創(chuàng)建新數(shù)據(jù)庫的SQL語句esdeath 是要創(chuàng)建的數(shù)據(jù)庫的名稱
character set utf8
?指定了數(shù)據(jù)庫的默認(rèn)字符集為utf8
,這意味著存儲在數(shù)據(jù)庫中的所有字符串?dāng)?shù)據(jù)將使用utf8
編碼
collate utf8_bin
?指定了數(shù)據(jù)庫的默認(rèn)字符排序規(guī)則為utf8_bin
,這意味著字符串比較將區(qū)分大小寫create database zabbix character set utf8 collate utf8_bin;
#查看該數(shù)據(jù)庫的基礎(chǔ)信息
show create database esdeath;
5.刪除數(shù)據(jù)庫
#刪除名為esdeath的數(shù)據(jù)庫
drop database eva;
6.查看數(shù)據(jù)庫列表
#查看所有數(shù)據(jù)庫(不推薦)
show databases;
7.新建表
#進(jìn)入數(shù)據(jù)庫
use eva;
#創(chuàng)建數(shù)據(jù)表名為student(id 2個字節(jié),不加符號,主鍵 插入新數(shù)據(jù)時自動為主鍵分配唯一遞增的值,名字 可變最多10個字符,age 一個字節(jié) 不加符號,性別 多選M或F,默認(rèn)為M)
create table student (id smallint unsigned primary key auto_increment, name varchar(10), age tinyint unsigned,gender enum('M','F') default 'M' );
#加入數(shù)據(jù),名字和年齡分別為eva,18歲
insert student (name,age) values('eva',18);
#查看student數(shù)據(jù)表記錄
select * from student;
#加入空字段
insert student values();
#查看student數(shù)據(jù)表記錄
select * from student;
#刪除該空字段
delete from student where id=2;
#查看student數(shù)據(jù)表記錄
select * from student;
#描述數(shù)據(jù)庫中名為student表的結(jié)構(gòu)信息
desc student;
#查看創(chuàng)建數(shù)據(jù)表的語句
show create table student;
#刪除數(shù)據(jù)表
drop table student;