mariadb基礎應用
一、 前言
MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, WordPress.com and Google.
mariadb是mysql的一個分支,由同一個作者開發,mysql是作者大女兒的名字,mariadb是作者三女兒的名字。mysql是甲骨文(oracle)公司的眼中釘,故將其收購。mysql作者擔心其會遭遇閉源危機,故有開發了mariadb,知名用戶有谷歌,wordpress等等。
二、基本概念
1、mysql主要有兩種存儲引擎
MyISAM:mysql 5.5之前的默認數據庫引擎,擁有較高的插入、查詢速度,但不支持事務。 InnoDB:事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定,mysql5.5之后成為默認的數據庫引擎。 事務(Transaction):組織多個操作為一個整體,要么全部都執行,要么全部都不執行。就是轉賬,自己這邊扣掉錢了,對方還沒有到賬,就要全部回滾。要不就自己掉錢了 對方也沒拿到。
2、設計范式基礎概念
1、第一范式:無重復的域(列不重復) 2、第二范式:在第一范式的基礎上屬性完全依賴于主鍵(行不重復,重復的放在另一張表上,形成一對多,例如統計XX部門的N的人的信息,都是XX部門,在第一張表寫一次即可,映射到另外一張表。) 3、第三范式:在第二范式的基礎上要求,一個關系不能包含已在其他關系已包含的非主關鍵字信息。一個關系中的A表現出年齡,B表不能存在。
三、mysql基礎應用
常用mysql實用程序
mysqlshow mysqladmin mysql
1、mysqlshow 簡單應用
(1)顯示mysql服務器中的所有數據庫:mysqlshow
(2)顯示mysql服務器中的表:mysqlshow mysql
2、mysqladmin 簡單應用
(1)設置mysql用戶root的密碼,密碼為passwd
mysqladmin -u root password 'passwd'
(2)顯示mysql服務器的基本狀態信息
mysqladmin status 或 mysqladmin -u root -p status
3、mysql詳解
mysql是mysql命令行工具,相當于一個簡單的SQL shell。
客戶端命令:本地執行,常用如下
mysql> help \u db_name:設定哪個庫為默認數據庫 \q:退出; \d CHAR:設定新的語句結束符; \g:語句結束標記;
服務端命令:通過 mysql 連接發往服務器執行并取回結果;
DDL, DML, DCL
注意:每個語句必須有語句結束符,默認為分號(;)
DDL :CREATE ALTER DROP
1、數據庫管理:增刪查改
創建: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name; [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name 查看支持的所有字符集:SHOW CHARACTER SET 查看支持的所有排序規則:SHOW COLLATION 修改: ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
2、表管理:增刪查改
創建: CREATE TABLE [IF NOT EXISTS] tbl_name (create_defination) [table_options] create_defination: 字段:col_name data_type 鍵: PRIMARY KEY (col1, col2, ...) UNIQUE KEY (col1, col2,...) FOREIGN KEY (column) 索引: KEY|INDEX [index_name] (col1, col2,...) table_options: ENGINE [=] engine_name 查看數據庫支持的所有存儲引擎類型: mysql> SHOW ENGINES; 查看某表的存儲引擎類型: mysql> SHOW TABLES STATUS [LIKE 'tbl_name']
CREATE TABLE students(id INT UNSIGNED NOT NULL PRIMARYKEY,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m'));
DESC students ;
DROP TABLE students; 刪除表格
修改表格:ALTER TABLE students ADD class VARCHAR(100) NOT NULL AFTER name;
ALTER TABLE students MODIFY class VARCHAR(100) NOT NULL AFTER age;
ALTER TABLE students DROP class; 刪除表格中的class
3、索引管理:索引是特殊的數據結構
創建: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [BTREE|HASH] ON tbl_name (col1, col2,,...) 刪除: DROP INDEX index_name ON tbl_name
DML :INSERT SELECT DELETE UPDATE
1、INSERT
INSERT INTO: INSERT [INTO] tbl_name [(col1,...)] {VALUES|VALUE} (val1, ...),(...),... 注意: 字符型:引號; 數值型:不能用引號;
INSERT students(id,name) VALUES(2,'HuangYaoshi'),(3,'ZhouBotong');
SELECT * FROM students;
2、SELECT
(1) SELECT * FROM tbl_name; (2) SELECT col1, col2, ... FROM tbl_name; 顯示時,字段可以顯示為別名; col_name AS col_alias (3) SELECT col1, ... FROM tbl_name WHERE clause; WHERE clause:用于指明挑選條件; col_name 操作符 value: age > 30; 操作符(1) : >, <, >=, <=, ==, != 組合條件: and or not 操作符(2) : BETWEEN ... AND ... LIKE 'PATTERN' 通配符: %:任意長度的任意字符; _:任意單個字符; RLIKE 'PATTERN' 正則表達式對字符串做模式匹配; IS NULL IS NOT NULL (4) SELECT col1, ... FROM tbl_name [WHERE clause] ORDER BY col_name, col_name2, ... [ASC|DESC]; ASC: 升序; DESC: 降序;
3、DELETE:刪除一整行,很危險,不加條件,整張表就沒了,每一個回合都要確認N遍
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...][LIMIT row_count] (1) DELETE FROM tbl_name WHERE where_condition (2) DELETE FROM tbl_name [ORDER BY ...] [LIMIT row_count]
4、UPDATE:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1=value1 [, col_name2=value2] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
UPDATA students SET age=age-5 ORDER BY id DESC;
UPDATA students SET age=age-15 WHERE name NOT LIKE 'stu%';
用戶賬戶及權限管理:
1、創建用戶賬號
CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass'; 只有查看的權限,沒有寫權限
禁止檢查主機名:my.cnf
[mysqld]
skipnameresolve = ON
2、刪除用戶賬號
DROP USER ’user‘@’host' [, user@host] …
3、授權
GRANT priv_type,... ON [object_type] db_name.tbl_name TO 'user'@'host' [IDENTIFIED BY 'password'];
CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass';
GRANT SELECT ON mydb.students TO 'testuser'@'192.168.%.%';
FLUSH PRIVILEGES;
mysql -utestuser -h192.168.1.120 -ptestpass
查看指定用戶所獲得的授權: SHOW GRANTS FOR 'user'@'host' SHOW GRANTS FOR CURRENT_USER;
4、回收權限
REVOKE priv_type, ... ON db_name.tbl_name FROM 'user'@'host'; 注意:MariaDB 服務進程啟動時,會讀取 mysql 庫的所有授權表至內存中; (1) GRANT 或 REVOKE 命令等執行的權限操作會保存于表中,MariaDB 此時一 般會自動重讀授權表,權限修改會立即生效; (2) 其它方式實現的權限修改,要想生效,必須手動運行 FLUSH PRIVILEGES 命令方可;
5、加固mysql服務器
加固 mysql 服務器,在安裝完成后,運行 mysqlsecureinstallation 命令;
6、圖形管理組件phpMyAdmin見上一個博客。
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/63876
贊~詳細描述mysql一些常用的操作~~建議補充下備份、恢復相關的內容,會更好點~~繼續加油~