天天看點

MySQL基本指令

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&gt; CREATE DATABASE test_db;</code>

<code>Query OK, 1 row affected (0.00 sec)</code>

<code>mysql&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; INSERT INTO students VALUES (</code><code>'ZengChengpeng'</code><code>,28,</code><code>'M'</code><code>,</code><code>'IT'</code><code>);</code>

<code>mysql&gt; 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&gt; 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&gt; 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&gt; 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&gt; 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&gt; GRANT ALL PRIVILEGES ON test_db.* TO </code><code>'jerry'</code><code>@</code><code>'%'</code><code>;</code>

<code>mysql&gt; 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&gt; REVOKE ALL PRIVILEGES ON test_db.* FROM jerry@</code><code>'%'</code><code>;</code>

<code>mysql&gt; SHOW GRANTS FOR </code><code>'jerry'</code><code>@</code><code>'%'</code><code>;                      </code>

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1795352,如需轉載請自行聯系原作者