資料庫
資料庫(Database)是按照資料結構來組織、存儲和管理資料的建立在計算機儲存設備上的倉庫。
簡單來說是本身可視為電子化的檔案櫃——存儲電子檔案的處所,使用者可以對檔案中的資料進行新增、截取、更新、删除等操作。
所謂“資料庫”是以一定方式儲存在一起、能與多個使用者共享、具有盡可能小的備援度、與應用程式彼此獨立的資料集合。
資料庫可以分為關系型資料庫和非關系型資料庫
關系資料庫
1.MySQL
(1)MariaDB(MySQL的代替品,英文維基百科從MySQL轉向MariaDB)
(2)Percona Server(MySQL的代替品·)
2.PostgreSQL
3.Microsoft Access
4.Microsoft SQL Server
5.Google Fusion Tables
6.FileMaker
7.Oracle資料庫
8.Sybase
9.dBASE
10.Clipper
11.FoxPro
12.foshub
幾乎所有的資料庫管理系統都配備了一個開放式資料庫連接配接(ODBC)驅動程式,令各個資料庫之間得以互相內建。
非關系型資料庫(NoSQL)
主條目:NoSQL
1.BigTable(Google)
2.Cassandra
3.MongoDB
4.CouchDB
5.鍵值(key-value)資料庫
(1) Apache Cassandra(為Facebook所使用):高度可擴充
(2)Dynamo
(3)LevelDB(Google)
關系型資料庫: 一對一 一對多 多對多
MariaDB
首先了解一下常用資料的類型
了解知識點
在定義文本資料類型是 char 和varchar的差別
char和varchar |
---|
char的長度是不可變的 varchar的長度是可變的 |
定義一個char[10]和varchar[10],如果存進去的是‘abcd’,那麼char所占的長度依然為10,除了字元‘abcd’外,後面跟六個空格,而varchar就立馬把長度變為4了,取資料的時候,char類型的要用trim()去掉多餘的空格,而varchar是不需要的, |
char的存取數度還是要比varchar要快得多,因為其長度固定,友善程式的存儲與查找;但是char也為此付出的是空間的代價,因為其長度固定,是以難免會有多餘的空格占位符占據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。 |
char的存儲方式是,對英文字元(ASCII)占用1個位元組,對一個漢字占用兩個位元組;而varchar的存儲方式是,對每個英文字元占用2個位元組,漢字也占用2個位元組,兩者的存儲資料都非unicode的字元資料 |
資料庫的三種語言
DML(data manipulation language)資料操縱語言: | 就是我們最經常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用來對資料庫的資料進行一些操作。 |
---|---|
DDL(data definition language)資料庫定義語言: | 其實就是我們在建立表的時候用到的一些sql,比如說:CREATE、ALTER、DROP等。DDL主要是用在定義或改變表的結構,資料類型,表之間的連結和限制等初始化工作上 |
DCL(Data Control Language)資料庫控制語言: | 是用來設定或更改資料庫使用者或角色權限的語句,包括(grant,revoke等)語句。這個比較少用到。 |
操作:
一、安裝部署
#系統預設已經安裝該資料庫,如果沒有安裝,使用以下指令進行安裝
[[email protected] ~]# yum install -y mariadb
#啟動資料庫服務
[[email protected] ~]# systemctl restart mariadb
#初始化資料庫
[[email protected] ~]# mysql_secure_installation
#在防火牆添加永久允許政策
[[email protected] ~]# firewall-cmd --permanent --add-service=mysql
#重新加載防火牆配置
[[email protected] ~]# firewall-cmd --reload
[[email protected] ~]# netstat -tlunup | grep mysql (檢視資料庫的預設監聽端口 為3306)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3926/mysqld
[[email protected] ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation:行379: find_mysql_client: 未找到指令
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables…
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
… Success!
By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
-
Dropping test database…
… Success!
-
Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
因為第一次 建立 一直YES 即可,中間會需要你建立登入資料庫使用者的密碼
第二步
#資料庫系統登陸
[[email protected] ~]# mysql -uroot -predhat
[[email protected] ~]# mysql -uroot -p
[[email protected] ~]# mysql -u root -h localhost -p [DATABASE NAME]
#退出資料庫系統
MariaDB [(none)]> quit
MariaDB [(none)]> exit
#檢視系統有多少資料庫
MariaDB [(none)]> show databases;
#建立一個資料庫
MariaDB [mysql]> create database luntan;
#切換到某個資料庫下
MariaDB [mysql]> use mysql;
#檢視資料庫的表
MariaDB [mysql]> show tables;
#檢視資料表的表結構
MariaDB [mysql]> desc user;
#查詢user表中的某些資料
MariaDB [mysql]> select host,user,password from user;
在資料庫中建立一張表 并對表進行操作的指令
建立一個新的表
MariaDB [luntun]> create table student (
-> number int,
-> name varchar(255),
-> age int,
-> sex varchar(10),
-> birth date );
Query OK, 0 rows affected (0.01 sec)
MariaDB [luntun]> insert into student (number,name,birth) values (1,'haha',20160509);
Query OK, 1 row affected (0.00 sec)
對表的操作
#插入幾條資料
MariaDB [mysql]> insert into person (number,name,birthday) values (1,'haha',20160509);
MariaDB [mysql]> insert into person (number,name,birthday) values (2,'heihei',20160609);
MariaDB [mysql]> insert into person (number,name,birthday) values (3,'maomao',20160709);
#查詢表的内容
MariaDB [mysql]> SELECT * FROM person;
#删除表的内容
MariaDB [mysql]> delete from person where name="maomao";
MariaDB [mysql]> delete from person where number=1;
#更新表中的資料
MariaDB [mysql]> update person set name="xixi" where name="heihei";
MariaDB [mysql]> update person set name="haha" where number=2;
三、使用者的管理和通路權限的控制
建立資料庫登陸使用者
MariaDB [mysql]> create user [email protected] identified by 'redhat';
MariaDB [mysql]> create user [email protected] identified by 'xixi';
檢視目前使用使用者:MariaDB [(none)]> select user();
檢視目前使用者的資料庫:MariaDB [(none)]> select database();
#檢視結果
MariaDB [mysql]> select name,number from person where name="maomao";
#退出重新使用maomao使用者登入資料庫
[[email protected] ~]# mysql -u maomao -p
#檢視可以通路的資料庫
MariaDB [(none)]> show databases;
#給maomao使用者一張表的權限 賦予權限
MariaDB [mysql]> grant select,update,insert,delete on mysql.person to [email protected];
權限資訊
退出資料庫系統,并使用maomao使用者重新登陸
#測試查詢的權限
MariaDB [mysql]> select * from person;
#測試插入的權限
MariaDB [mysql]> insert person (number,NAME,BIRTHDAY) value (1,"hehe",20161010);
#測試更新資料的權限
MariaDB [mysql]> update person set name="heihei" where number=2;
#測試删除資料的權限
MariaDB [mysql]> delete from person where number=1;
#使用root使用者登入,改變maomao使用者的權限 回收權限
MariaDB [mysql]> revoke select on mysql.person from [email protected];
#使用select語句進行查詢表,确認權限已被禁用
MariaDB [mysql]> select * from person;
四、備份和還原
[[email protected] ~]# mysqldump -u root -p mysql > /mysql_backup_20160510.dump
#使用root使用者登入資料庫,删除person表
#查詢person表
MariaDB [mysql]> select * from person;
#删除表
MariaDB [mysql]> drop table person;
#退出系統,進行還原操作
[[email protected] ~]# mysql -u root -p mysql < /mysql_backup_20160510.dump
#登陸資料庫系統
[[email protected] ~]# mysql -u root -p
#檢視person表 檢驗
MariaDB [mysql]> select * from person;