Mysql安裝方式
MySQL安裝方式有三種,一種是RPM方式安裝,一種是源碼編譯安裝,一種是通用二進制格式包安裝。
RPM方式安裝,可以直接使用yum指令安裝或者下載下傳RPM包後再安裝
yum安裝指令:
yum -y install mysql-server
系統會自動解決依賴關系,并将mysql用戶端也安裝上。
mysql互動模式中的指令類别:
用戶端指令:在用戶端執行的指令
伺服器指令:在伺服器上執行,并将結果傳回給用戶端。必須使用語句結束符,預設為封号“;”
MySQL資料庫:
<a href="http://s1.51cto.com/wyfs02/M00/83/A0/wKiom1d4vJSyirHlAACTLBqTWRg313.png" target="_blank"></a>
mysql安裝完成後,預設有3個資料庫
information_schema:是mysql運作過程中位于記憶體中的資訊,儲存mysql運作時資料,隻有mysql啟動時才有資料,平時是空的。
test:測試時才用到的資料庫
mysql:mysql 的資料庫
MySQL資料庫目錄:
1
2
<code>[root@host2 ~]</code><code># ls /var/lib/mysql/</code>
<code>ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock </code><code>test</code>
可以看到沒有information_schema資料庫,因為它是存在記憶體中的。
MySQL常用指令:
DDL:定義資料庫對象:
CREATE:
ALTER:
DROP:
DML:資料操縱語言
INSERT
UPDATE
DELETE
DCL資料控制語言
GRANT:
REVOKE:
建立資料庫:
CREATE DATABASE db_name;
CREATE DATABASES IF NOT EXISTS testdb;
3
4
5
6
7
8
9
10
11
12
<code>mysql> CREATE DATABASE test_db;</code>
<code>Query OK, 1 row affected (0.00 sec)</code>
<code>mysql> SHOW DATABASES;</code>
<code>+--------------------+</code>
<code>| Database |</code>
<code>| information_schema |</code>
<code>| mysql |</code>
<code>| </code><code>test</code> <code>|</code>
<code>| test_db |</code>
<code>4 rows </code><code>in</code> <code>set</code> <code>(0.01 sec)</code>
删除資料庫:
DROP DATABASE db_name;
<code>mysql> DROP DATABASE test_db;</code>
<code>Query OK, 0 rows affected (0.00 sec)</code>
<code>3 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
建立表:
CREATE TABLE tb_name(col1,col2,...) col1,col2為字段名
注意:表是依賴于資料庫的,是以在建立表之前,一定要指定預設資料庫,使用指令
USER DATABASE; 來指定資料庫
建立一個表,名為student,包含三個字段,Name、Age、Gender
<code>mysql> CREATE TABLE students(Name CHAR(20) NOT NULL, Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);</code>
<code>Query OK, 0 rows affected (0.01 sec)</code>
<code>mysql> SHOW TABLES;</code>
<code>+-------------------+</code>
<code>| Tables_in_test_db |</code>
<code>| students |</code>
<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
檢視某個資料庫中的表:
SHOW TABLES FROM db_name;
檢視表結構:
DESC table_name;
<code>mysql> DESC students;</code>
<code>+--------+---------------------+------+-----+---------+-------+</code>
<code>| Field | Type | Null | Key | Default | Extra |</code>
<code>| Name | char(20) | NO | | NULL | |</code>
<code>| Age | tinyint(3) unsigned | YES | | NULL | |</code>
<code>| Gender | char(1) | NO | | NULL | |</code>
删除表:
DROP TABLE tb_name;
修改表:
ALTER TABLE tb_name;
MODIFY:修改某個字段,修改字段屬性,字段名不改
CHANGE:改變某個字段,改變字段名稱
ADD:添加字段
DROP:删除字段
可以通過help指令查詢幫助資訊:
help CREATE TABLE;
增加一個字段
例如:修改前面建立的student表,增加一個字段課程course,
13
<code>mysql> ALTER TABLE students ADD course VARCHAR(100);</code>
<code>Records: 0 Duplicates: 0 Warnings: 0</code>
<code>| course | varchar(100) | YES | | NULL | |</code>
<code>4 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
修改字段名稱,例如将上面添加的course字段名改為Course
<code>mysql> ALTER TABLE students CHANGE course Course VARCHAR(100);</code>
<code>| Course | varchar(100) | YES | | NULL | |</code>
删除一個字段:
DROP col_name;
插入資料:
<code>INSERT INTO tb_name (col1,col2,...) VALUES|VALUE (</code><code>'STRING'</code><code>,NUM...);</code>
上面指令意思是:往某個表中插入資料,字段名為col1,col2,... 插入的值為字元串則,用引号引起來,如果為數值,則直接用數字。如果每一個字段都給值,則不用寫字段名稱
例如:在students表中插入兩條資料,張三和李四
mysql> INSERT INTO students (Name,Gender) VALUE ('ZhangSan','M'),('LiSi','F');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
檢視資料
<code>mysql> SELECT * FROM students;</code>
<code>+----------+------+--------+--------+</code>
<code>| Name | Age | Gender | Course |</code>
<code>| ZhangSan | NULL | M | NULL |</code>
<code>| LiSi | NULL | F | NULL |</code>
<code>2 rows </code><code>in</code> <code>set</code> <code>(0.01 sec)</code>
插入一個使用者,所有字段都有值:
注意,所有字段都有值,就不需要指定字段名
<code>mysql> INSERT INTO students VALUES (</code><code>'ZengChengpeng'</code><code>,28,</code><code>'M'</code><code>,</code><code>'IT'</code><code>);</code>
<code>mysql> SELECT * FROM students WHERE Name=</code><code>'ZengChengpeng'</code><code>;</code>
<code>+---------------+------+--------+--------+</code>
<code>| Name | Age | Gender | Course |</code>
<code>| ZengChengpeng | 28 | M | IT |</code>
修改資料:
UPDATE tb_name SET column=value WHERE 條件
例如:将ZengChengpeng的Course課程名稱改為Develop
<code>mysql> UPDATE students SET Course=</code><code>'Develop'</code> <code>WHERE Name=</code><code>'ZengChengpeng'</code><code>;</code>
<code>Rows matched: 1 Changed: 1 Warnings: 0</code>
<code>+---------------+------+--------+---------+</code>
<code>| Name | Age | Gender | Course |</code>
<code>| ZengChengpeng | 28 | M | Develop |</code>
SELETE語句:
selete語句分為兩種情況,
<code>選擇:指定以某字段作為搜尋碼,做邏輯比較,篩選符合條件的行。WHERE指定選擇條件</code>
<code> </code>
<code>投影:指定以某字段作為搜尋碼,做邏輯比較,篩選符合條件的字段。</code>
<code>mysql> SELECT Name,Course FROM students WHERE Gender=</code><code>'M'</code><code>; </code>
<code>+---------------+---------+</code>
<code>| Name | Course |</code>
<code>| ZhangSan | NULL |</code>
<code>| ZengChengpeng | Develop |</code>
删除資料:
DELECT FROM tb_name WHERE 條件;
建立使用者:
CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD';
删除使用者:
DROP USER 'USERNAME'@'HOST';
HOST:
IP:
HOSTNAME:
NETWORK:
通配符: 通配符用引号引起來
_:下劃線比對任意單個字元:例如172.16.0._
%:比對任意字元:
jerry@'%'
使用者權限:
添權重限:
GRANT pri1,pri2,... ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD'];
pri1 pri2表示權限名稱,所有權限用ALL PRIVILEGES表示
取消權限:
REVOKE pri1,pri2,... ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';
建立使用者示例:
<code>mysql> CREATE USER </code><code>'jerry'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'jerry'</code><code>;</code>
檢視使用者授權:
SHOW GRANTS FOR 'USERNAME'@'HOST';
<code>mysql> SHOW GRANTS FOR jerry@</code><code>'%'</code><code>;</code>
<code>+------------------------------------------------------------------------------------------------------+</code>
<code>| Grants </code><code>for</code> <code>jerry@% |</code>
<code>| GRANT USAGE ON *.* TO </code><code>'jerry'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY PASSWORD </code><code>'*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0'</code> <code>|</code>
示例:給jerry使用者test_db這個資料庫所有表的所有權限
<code>mysql> GRANT ALL PRIVILEGES ON test_db.* TO </code><code>'jerry'</code><code>@</code><code>'%'</code><code>;</code>
<code>mysql> SHOW GRANTS FOR </code><code>'jerry'</code><code>@</code><code>'%'</code><code>;</code>
<code>| GRANT ALL PRIVILEGES ON `test_db`.* TO </code><code>'jerry'</code><code>@</code><code>'%'</code> <code>|</code>
<code>2 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
取消所有權限:
<code>mysql> REVOKE ALL PRIVILEGES ON test_db.* FROM jerry@</code><code>'%'</code><code>;</code>
<code>mysql> SHOW GRANTS FOR </code><code>'jerry'</code><code>@</code><code>'%'</code><code>; </code>
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1795352,如需轉載請自行聯系原作者