1.信息與數據:
????????數據是信息的載體,信息是數據的內涵。數據庫就是存儲數據的倉庫,并長期存儲在計算機磁盤中,可由多個用戶和應用程序共享的數據集合,就是數據庫。
2.數據庫中的數據的特點:
? ? ? ? 2.1.數據是按照某種結構組織的:數據的內部構成及對外聯系就是數據庫的“型”,而數據的具體取值就是數據庫的“值”。
? ? ? ? 2.2.數據具有整體性:即數據庫中的數據是從整體出發,綜合了各個應用程序和用戶的需求,數據是整體結構化的。
? ? ? ? 2.3.數據有共享性、數據有較高的獨立性:數據庫中的數據和應用程序在物理和邏輯上均實現了分離,數據結構的該變不影響應用程序的運行,數據和程序具有較高的獨立性。
3.數據庫管理系統的功能
? ? ? ? DBMS(數據庫管理系統):是管理數據庫的系統軟件,它實現數據庫系統的各種功能。是數據庫系統的核心。數據庫管理系統位于操作系統之上,通過調用操作系統的各種服務,為用戶提供管理各種數據庫對象的接口和各種方法,從而實現對數據的各種操作。DBMS的功能建立在操作系統的底層服務之上,數據庫的管理控制及用戶對數據的各種操作命令的執行均由DBMS實現。
? ? ? ? 數據庫管理系統主要有三個功能:數據定義(DDL)、數據操縱(DML)、數據控制。
數據定義是定定義了數據庫的各種對象,表,視圖,索引,存儲過程,觸發器等。一般有create,drop,alter
? ? ? ? 數據操作是對數據表中的操作,如增、刪、改、查、統計等各種存儲操作。實現對數據庫中數據的基本操作。一般有insert,delete,update等。
? ? ? ? 數據控制一般有grant,revoke。
? ? ? ? 數據查詢語句:select
????????結構化查詢語言(SQL)是一種專門用來與數據庫通信的語言,其利用一些簡單的句子構成基本的語法來存取數據庫中的內容,便于用戶從數據庫中獲得及操作所需數據。
? ? ? ? SQL語言具有以下特點:(1)SQL語言是非過程化語言。(2)SQL語言是統一的語言。(3)SQL語言是關系型數據庫的公共語言。
? ? ? ? 關系型數據庫中的一個表是由行和列組成的,并且要求表中的每行記錄必須唯一。在設計表時,可以通過定義主鍵(primary key)來保證記錄(實體)的唯一性。關系型數據庫一般是MySQL,SQL Server,access,DB2,sybase等等。關系型數據庫結構是二維數據庫表,二維表中每個字段用來描述對象的一個屬性。每個記錄用來描述一個對象的信息,關系數據寫到哪里也就是存儲在硬盤當中讀寫系統就會受到的IO限制或者瓶頸。非關系型數據庫:NoSQL,Redis。它們都存儲高熱數據(在內存中高速運行),不同點:redis可以做持久化保存,可以存儲對象。
? ? ? ? 一個表的主鍵由一個或多個字段組成,值具有唯一性,且不允許去控制,主鍵的作用是唯一的標識表中的每一條記錄。
? ? ? ? 關系型數據庫中的術語:
關系:關系就是二維表,其中表中的行、列次序并不重要
行row:表中的每一行,又稱為一條記錄或元組
列column:表中的每一列,稱為屬性或字段或域
主鍵primary key:用于唯一確定一個記錄的字段,一張表只有一個主鍵,可以有多個外鍵
域domain:屬性的取值范圍,如:性別只能是“男”和“女”兩個人,人類的年齡只能0-150
聯系類型:一對一聯系(1:1)、一對多聯系(1:n)外鍵、多對多聯系(n:n)三張表。
數據庫的編譯安裝:
#創建一個目錄/data/
[root@Node1 ~]#:mkdir /data ; cd /data/
#把源碼包拖進來。
[root@Node1 data]#:ls
mysql-boost-5.7.20.tar.gz
#解壓
[root@Node1 data]#:tar xf?mysql-boost-5.7.20.tar.gz[root@Node1 data]#:ls
mysql-5.7.20 ?mysql-boost-5.7.20.tar.gz[root@Node1 data]#:cd /data/mysql-5.7.20/
#安裝依賴包
[root@Node1 mysql-5.7.20]#:yum install -y ncurses-devel autoconf cmake?
[root@Node1 mysql-5.7.20]#:yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
#新建一個用戶mysql,用于管理mysql
[root@Node1 mysql-5.7.20]#:useradd -M -s /sbin/nologin ?mysql
#編譯安裝:
[root@Node1 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[root@Node1 mysql-5.7.20]#:make -j4? ? ? ? ? ? ? ?#編譯,4核。這里等待時間較長,約20分鐘
[root@Node1 mysql-5.7.20]#:make install
數據庫安裝成功。給數據庫mysql用戶權限
#數據庫目錄進行權限調整
[root@localhost mysql-5.7.20]#:chown -R mysql:mysql /usr/local/mysql/
#建立調整配置文件
[root@localhost mysql-5.7.20]#: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 = 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? ? #這里是一行
#修改配置文件權限
[root@localhost mysql-5.7.20]#:chown -R mysql:mysql /etc/my.cnf
#設置環境變量
[root@localhost mysql-5.7.20]#:echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]#:echo 'export PATH' >> /etc/profile
[root@localhost mysql-5.7.20]#:source /etc/profile#初始化數據庫,相對路徑
[root@localhost mysql-5.7.20]#:cd /usr/local/mysql/[root@localhost mysql]#:bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data#ls看一下,就會有一個data文件夾
#準備systemctl配置文件
[root@localhost mysql]#:cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
[root@localhost mysql]#:systemctl daemon-reload
[root@localhost mysql]#:systemctl start mysqld#可以查看狀態,是否啟動
[root@localhost mysql]#:systemctl status mysqld#修改數據庫密碼
[root@localhost mysql]#:mysqladmin -u root -p password "abc123"
#直接回車#登錄數據庫:
[root@localhost mysql]#:mysql -uroot -p"abc123"
登錄成功!ctrl + D退出登錄
--end---
DDL和DML:以分號結尾;
1.顯示所有數據庫:show databases;
2.創建數據庫:create database db1;
查看:多了一個數據庫,其他的四個是系統中自帶的數據庫
3.創建表:
創建一個學生表student,包括學號ID,姓名name,性別sex,年齡age,電話號碼phone,郵箱email。其中學號ID為int型,設置為主鍵。電話號碼最長不超過11位,不為空。郵箱不超過30位,唯一。創建表要先進入數據庫:use db1;
create table student (
id int primary key,
name varchar(10),
sex char(1),
age varchar(3),
phone varchar(11) not null,
email varchar(30) unique
);
Query OK, 0 rows affected (0.00 sec)
4.添加字段:
查看表結構:desc student;
如果再添加一個字段,使用alter,add添加。如,添加班級class,字符型,最長為10位。
alter table student add class varchar(10) not NULL;
5.修改字段名:
如果修改字段名:使用change修改。
如果將class修改成bj,語句:alter table student change class bj varchar(10) not NULL;
修改成功:
6.修改字段約束:
在改字段名的時候也可以指定新名字的字段約束,如將class改成bj并直接將varchar改成char。
如果在不修改字段名的情況下,直接修改字段約束:使用alter .. modify
alter table student modify bj char(5);
7.刪除字段:
刪除字段:使用alter ..drop:
如將bj字段刪除掉:alter table student drop bj;
8.顯示表:
必須use進入到一個數據庫中,才能顯示表:
show tables;? ?只創建了一張表student。
9.刪除數據庫:
通過語句:drop database db1;
db1的表已刪除了。
---end---