溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql/MariaDB數(shù)據(jù)庫入門

發(fā)布時間:2020-09-05 01:04:12 來源:網(wǎng)絡(luò) 閱讀:672 作者:maide821 欄目:數(shù)據(jù)庫

內(nèi)容:

1、數(shù)據(jù)庫簡介以及mysql/mariadb背景介紹

2、數(shù)據(jù)庫的一些名詞

3、mysql的服務結(jié)構(gòu)

4、mysql客戶端的使用

5、數(shù)據(jù)類型

6、SQL語句介紹

7、mysql的事務機制


一、數(shù)據(jù)庫簡介以及mysql/mariadb背景介紹

        數(shù)據(jù)可以存放在多種位置,如普通文件、專門的數(shù)據(jù)庫中,而兩者有什么區(qū)別,而為什么選擇數(shù)據(jù)庫存儲?我們知道,假如數(shù)據(jù)存在普通文件中,當我們要查找其中的一個數(shù)據(jù)時,要把整個文件加載到內(nèi)存中,再進行檢索,這樣速度慢不說,一旦文件較大,直接把內(nèi)存撐爆了,而數(shù)據(jù)庫的查詢可以只加載符合條件的內(nèi)容。

    數(shù)據(jù)庫常見的有三種模型:

        網(wǎng)狀模型

        層次模型

        關(guān)系模型

    關(guān)系模型是一個二維關(guān)系:表

        行:row

        列:column

        索引:數(shù)據(jù)結(jié)構(gòu),輔助完成數(shù)據(jù)查找的;

    mysql是一個廣泛使用的關(guān)系型數(shù)據(jù)庫

        1、MySQL由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle(被收購) 

        2、MySQL是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應用方面MySQL是最好的 RDBMS (Relational DatabaseManagement System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一。

        3、MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

        4、MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。                                   

        5、MySQL 軟件采用了雙授權(quán)政策:它分為社區(qū)版和商業(yè)版。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache(nginx) 可組成良好的開發(fā)環(huán)境


mysql與MariaDB的關(guān)系:

    (1)因為mysql被sun公司給收購了,而sun公司又被oracle公司給收購了,而oracle是一個商業(yè)數(shù)據(jù)庫公司,創(chuàng)始人擔心MySQL會存在閉源風險,因此用mysql的源代碼創(chuàng)立了MariaDB。

    (2)MariaDB名字來源于創(chuàng)始人的三女兒,而MysDB則是源于創(chuàng)始人的大女兒。

    (3)目前centos7的base源中MariaDB已經(jīng)替代了mysql稱為默認的數(shù)據(jù)庫類型。

二、數(shù)據(jù)庫的一些名詞:

    名詞:

        數(shù)據(jù)庫:database

        表:table

        索引:index

        視圖:view

        行:row

        列:column

        主鍵:primary key 

        外鍵:foreign key

        唯一鍵:unique key 

        字符集:character  

        排序:collate


三、mysql的服務結(jié)構(gòu):

        MySQL是單進程,多線程的工作方式 

        mysql是一個C/S的架構(gòu):

        C:client

        mysql:CLI交互式客戶端程序 

        mysqldump:備份工具

        mysqladmin:管理工具

        S:server

    可以監(jiān)聽三類套接字地址:

            ipv4

            ipv6

            unix sock:只監(jiān)聽本機的客戶端響應


        其服務端的結(jié)構(gòu)可以簡單分為三個層次:

Mysql/MariaDB數(shù)據(jù)庫入門

        第一層,即最上一層,它們都是服務于C/S程序或者是這些程序所需要的 :接受用戶請求,身份驗證,安全性等等。

        第二層,這是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL據(jù)庫系統(tǒng)處理底層數(shù)據(jù)之前的所有工作都是在這一層完成的,包括權(quán)限判斷, sql解析,行計劃優(yōu)化, query cache 的處理以及所有內(nèi)置的函數(shù)(如日期,時間,數(shù)學運算,加密)等等。各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發(fā)器,視 圖等。

        第三層,包括了存儲引擎。通常叫做StorEngine Layer ,也就是底層數(shù)據(jù)存取操作實現(xiàn)部分,由多種存儲引擎共同組成。它們負責存儲和獲取所有存儲在MySQL中的數(shù)據(jù)。就像Linux眾多的文件系統(tǒng) 一樣。每個存儲引擎都有自己的優(yōu)點和缺陷。服務器是通過存儲引擎API來與它們交互的。這個接口隱藏 了各個存儲引擎不同的地方。對于查詢層盡可能的透明。這個API包含了很多底層的操作。如開始一個事物,或者取出有特定主鍵的行。存儲引擎不能解析SQL,互相之間也不能通信。僅僅是簡單的響應服務器的請求。


四、mysql客戶端的使用:

        命令行交互式客戶端程序:mysql

        連接數(shù)據(jù)庫:mysql [OPTIONS] [database]

        常用選項:

            -uUSERNAME

            -hHOST

            -p[PASSWORD]

            -Ddb_name:連接并使用指定的數(shù)據(jù)庫作為默認數(shù)據(jù)庫

            --socket=path, -S path:指定套接字方式

            --port=port_num, -P port_num:指定端口

            --execute=statement, -e statement:無需登錄到mysql而是把一些執(zhí)行的結(jié)果返回

    命令:

    客戶端命令

    mysql> help

        \u db_name:設(shè)定默認數(shù)據(jù)庫;

        \q:退出客戶端;

        \d CHAR:自定義語句結(jié)束符,默認為分號; 

        \g:語句結(jié)束標記,將命令發(fā)往服務端運行;

        \G:語句結(jié)束標記,將命令發(fā)往服務 端運行,行數(shù)據(jù)縱向顯示;

        \! SHELL_COMMAND:可以執(zhí)行shell的命令

        \s:連接狀態(tài)及服務器運行狀態(tài)

        \. /path/to/some_sql_script:運行SQL腳本

        ...

    服務端命令:發(fā)往服務器端執(zhí)行的SQL語句

        (1) 語句結(jié)束符,默認是分號(;)

        (2) 建立了與某服務器有效通信連接;

五、數(shù)據(jù)類型:

        表:由行和列組成,定義列時需要選定合適的數(shù)據(jù)類型,同時需要滿足符合范式設(shè)計的要求;

        字符型:

        定義字符型:CHAR(#),BINARY(#)

        變長字符型:VARCHAR(#) ,VARBINARY(#)

        對象存儲:TEXT,BLOB

        內(nèi)建:ENUM,SET 

           注意:所有字符型數(shù)據(jù)要使用引號;

        數(shù)值型:

        精確數(shù)值:INT 

        近似數(shù)值:FLOAT,DOUBLE

            注意:不能使用引號;

        日期時間型:

        DATE,TIME,DATETIME,TIMESTAMP,YEAR

六、SQL語句:

        DDL:數(shù)據(jù)定義語言,主要用于管理庫組件,例如數(shù)據(jù)庫、表、索引、視圖、用戶、存儲過程、存儲函數(shù)、觸發(fā)器、……

        CREATE,ALTER,DROP

        DML:數(shù)據(jù)操縱語言,主要用于管理表中數(shù)據(jù),實現(xiàn)數(shù)據(jù)CRUD操作

        DCL:管理授權(quán)

            獲取幫助:

        mysql> help KEYWORD

        數(shù)據(jù)庫管理:

        創(chuàng)建:

        CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name  

        修改:

        ALTER DATABASE

        刪除:

        DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

        表管理:

        表創(chuàng)建:

        CREATE TABLE [IF NOT EXISTS] tbl_name (create_defination) [table options]

        create_defination:由逗號分隔的列表

        字段定義:

        colume_name COLUMN DEFINATION

        約束:

            PRIMARY KEY 

            UNIQUE KEY 

            FOREIGN KEY 

            CHECK(expr)

        索引:

            {INDEX|KEY}  

            {FULLTEXT|SPATIAL}

        column_definition:

            data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]

[table options]

        ENGINE [=] engine_name

        ……

        查看數(shù)據(jù)庫所支持所有存儲引擎類型:

        mysql> SHOW ENGINES;

        查看表的屬性信息:

        SHOW TABLE STATUS [WHERE Name='tbl_name'][LIKE PATTERN]

        修改:

        ALTER  TABLE tbl_name [alter_specification [, alter_specification] ...]

        alter_specification:

        (1) 表選項

        table_options

        (2)表組成

        字段:

        ADD col_name DATA_TYPE [FIRST|AFTER col_name]

        DORP [COLUMN] col_name

        CHANGE 

        MODIFY

        索引:

        ADD INDEX(col1, col2, ...)

        DROP INDEX index_name;

        鍵:

        ADD {PRIMARY|UNIQUE|FOREIGN} key (col1, col2, ...)

        DROP {PRIMARY|UNIQUE|FOREIGN} KEY key_name

        刪除:

        DROP TABLE [IF EXISTS] tbl_name [, tbl_name]

        索引管理:

        創(chuàng)建:

        CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name  ON tbl_name (index_col_name,...)


        index_col_name:

        col_name [(length)] [ASC | DESC]

        刪除:

        DROP INDEX index_name ON tbl_name

        查看:

        SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]

        DML:INSERT, DELETE, UPDATE,SELECT

        INSERT INTO:

        INSERT  [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...

        SELECT:

        (1) SELECT * FROM tbl_name;

        (2) SELECT col1, col2, ... FROM tbl_name;

        字段:column_name [AS Alias]

        (3) SELECT col1, col2, ... FROM tbl_name WHERE CLUASE;

            WHERE CLAUSE:過濾條件

            col_name 操作符 value|col_name;

        操作符:

            >, <, >=, <=, =, !=

        組合多個條件:

        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 col1, col2, ... [ASC|DESC];

        DELETE:

        DELETE  FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

        UPDATE:

            UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...

        [WHERE where_condition]

        [ORDER BY ...]

        [LIMIT row_count]


演示:

        A、DDL定義語言命令包含如下:

        1、CREATE

        2、ALTER

        3、DROP

    1、CREATE:

        1.1:創(chuàng)建數(shù)據(jù)庫

MariaDB [(none)]> SHOW DATABASES; #查看所有數(shù)據(jù)庫(需要有指定權(quán)限)
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)
MariaDB [(none)]> CREATE DATABASE nihao;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nihao              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

        1.2、創(chuàng)建表

MariaDB [(none)]> SELECT DATABASE(); #內(nèi)建函數(shù),查看當前的數(shù)據(jù)庫
+------------+
| DATABASE() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)
MariaDB [(none)]> USE nihao; #切換默認的數(shù)據(jù)庫
Database changed
MariaDB [nihao]> CREATE TABLE users(id INT UNSIGNED NOT NULL PRIMARY KEY,name CHAR(50) NOT NULL,gender ENUM('F','M'));
Query OK, 0 rows affected (0.31 sec)
MariaDB [nihao]> SHOW TABLES;
+-----------------+
| Tables_in_nihao |
+-----------------+
| users           |
+-----------------+
1 row in set (0.00 sec)
MariaDB [nihao]> DESC users; #查看表的詳細信息
+--------+------------------+------+-----+---------+-------+
| Field  | Type             | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| id     | int(10) unsigned | NO   | PRI | NULL    |       |
| name   | char(50)         | NO   |     | NULL    |       |
| gender | enum('F','M')    | YES  |     | NULL    |       |
+--------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
MariaDB [nihao]> SHOW TABLE STATUS FROM nihao\G  #查看數(shù)據(jù)庫的詳細信息
*************************** 1. row ***************************
           Name: users
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 10485760
 Auto_increment: NULL
    Create_time: 2016-10-14 11:22:12
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)


        2、ALTER 修改表

MariaDB [nihao]> ALTER TABLE users RENAME user;
Query OK, 0 rows affected (0.29 sec)
MariaDB [nihao]> SHOW TABLES;
+-----------------+
| Tables_in_nihao |
+-----------------+
| user            |
+-----------------+
1 row in set (0.01 sec)



    3、DROP

        3.1刪除表:

MariaDB [nihao]> SHOW TABLES;
+-----------------+
| Tables_in_nihao |
+-----------------+
| user            |
+-----------------+
1 row in set (0.01 sec)
MariaDB [nihao]> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| nihao      |
+------------+
1 row in set (0.00 sec)
MariaDB [nihao]> SHOW TABLES;
+-----------------+
| Tables_in_nihao |
+-----------------+
| user            |
+-----------------+
1 row in set (0.00 sec)
MariaDB [nihao]> DROP TABLE user; #刪除表
Query OK, 0 rows affected (0.01 sec)


        3.2、刪除數(shù)據(jù)庫:

MariaDB [nihao]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nihao              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [nihao]> DROP DATABASE nihao;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)


    B、DML操縱語言命令如下

        1、INSERT

        2、DELETE

        3、SELECT

        4、UPDATE

    1、INSERT 插入數(shù)據(jù)

MariaDB [nihao]> INSERT INTO users(id,name,gender) VALUES (1,'tom','M'),(2,'hill','M');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [nihao]> SELECT * FROM users;
+----+------+--------+
| id | name | gender |
+----+------+--------+
|  1 | tom  | M      |
|  2 | hill | M      |
+----+------+--------+
2 rows in set (0.00 sec)


    2、DELETE 刪除數(shù)據(jù)

MariaDB [nihao]> DELETE FROM users WHERE name='tom';
Query OK, 1 row affected (0.00 sec)
MariaDB [nihao]> SELECT * FROM users;
+----+------+--------+
| id | name | gender |
+----+------+--------+
|  2 | hill | M      |
+----+------+--------+
1 row in set (0.00 sec)
MariaDB [nihao]> INSERT INTO users(id,name,gender) VALUES (3,'nihao','M'),(4,'herry','M');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [nihao]> SELECT * FROM users;
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  2 | hill  | M      |
|  3 | nihao | M      |
|  4 | herry | M      |
+----+-------+--------+
3 rows in set (0.00 sec)
MariaDB [nihao]> DELETE FROM  users;
Query OK, 3 rows affected (0.00 sec)
MariaDB [nihao]> SELECT * FROM users;
Empty set (0.00 sec)


        3、SELECT 查看數(shù)據(jù)

MariaDB [nihao]> SELECT * FROM users; #沒有指定條件
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  1 | nihao | M      |
|  2 | herry | M      |
|  3 | hill  | M      |
|  4 | tom   | M      |
+----+-------+--------+
4 rows in set (0.00 sec)
MariaDB [nihao]> SELECT * FROM users WHERE id = 2 #指定查詢的條件
    -> ;
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  2 | herry | M      |
+----+-------+--------+
1 row in set (0.00 sec)
MariaDB [nihao]> SELECT * FROM users WHERE id > 2
    -> ;
+----+------+--------+
| id | name | gender |
+----+------+--------+
|  3 | hill | M      |
|  4 | tom  | M      |
+----+------+--------+
2 rows in set (0.00 sec)
MariaDB [nihao]> SELECT * FROM users WHERE name LIKE '%l';
+----+------+--------+
| id | name | gender |
+----+------+--------+
|  3 | hill | M      |
+----+------+--------+
1 row in set (0.00 sec)


        4、UPDATE 更改數(shù)據(jù)

MariaDB [nihao]> UPDATE users SET id = 10 WHERE name = 'hill';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
MariaDB [nihao]> SELECT * FROM users ;
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  1 | nihao | M      |
|  2 | herry | M      |
|  4 | tom   | M      |
| 10 | hill  | M      |
+----+-------+--------+
4 rows in set (0.00 sec)



C、DCL控制語言命令如下

    1、GRANT;當用戶不存在時還會自動創(chuàng)建用戶,創(chuàng)建完用戶后需要重新刷新授權(quán)表

    2、REVOKE:

 

1、GRANT

MariaDB [nihao]> GRANT ALL ON *.* TO 'hill'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.29 sec)
MariaDB [nihao]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [nihao]> GRANT ALL ON *.* TO 'hill'@'127.0.0.1' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [nihao]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [nihao]> EXIT
Bye
[root@localhost ~]# mysql -uhill -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 5.5.46-MariaDB-log MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> 
MariaDB [nihao]> INSERT INTO users (id,name,gender) VALUES (5,'alex','M');
Query OK, 1 row affected (0.01 sec)
MariaDB [nihao]> SELECT * FROM users; #授權(quán)的用戶可登錄以及插入數(shù)據(jù)
+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  1 | nihao | M      |
|  2 | herry | M      |
|  4 | tom   | M      |
|  5 | alex  | M      |
| 10 | hill  | M      |
+----+-------+--------+
5 rows in set (0.00 sec)



2、REVOKE

MariaDB [(none)]> REVOKE INSERT ON *.* FROM 'hill'@'127.0.0.1' ; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> REVOKE INSERT ON *.* FROM 'hill'@'localhost' ; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES
    -> ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> EXIT
Bye
[root@localhost ~]# mysql -uhill -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 5.5.46-MariaDB-log MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> USE NIHAO
ERROR 1049 (42000): Unknown database 'NIHAO'
MariaDB [(none)]> USE nihao
Database changed
MariaDB [nihao]> INSERT INTO users (id,name,gender) VALUES (6,'hello','M');
ERROR 1142 (42000): INSERT command denied to user 'hill'@'localhost' for table 'users'

        總結(jié)(源自網(wǎng)絡(luò))

Mysql/MariaDB數(shù)據(jù)庫入門

七、mysql的事務機制

    1、什么是事務:

        事務:transaction

        一個事務是一個連續(xù)的一組數(shù)據(jù)庫操作,就好像它是一個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內(nèi)的每個單獨的操作是成功的。如果在事務的任何操作失敗,則整個事務將失敗。

        2、為什么需要事務功能:

以一個經(jīng)典的例子來舉例事務的必要性: 

    假設(shè)一個銀行的數(shù)據(jù)庫有兩張表:支票(checking)和儲蓄(savings)?,F(xiàn)在如果要從用戶Jane的支票賬戶轉(zhuǎn)移轉(zhuǎn)移200美元到她的儲蓄賬戶。 

那么至少需要以下3個步驟: 

     (1)檢查支票賬戶的余額是否大于200美元。 

     (2)如果為真則,從支票賬戶減去200美元。 

     (3)在儲蓄賬戶余額中增加200美元。 顯而易見,這3步必須打包在一個事務中,任何一個步驟失敗,必須全部回滾。 假設(shè),在執(zhí)行到第3步時服務器崩潰了,這時會發(fā)生什么情況?——用戶很可能會損失200美元。又或者在執(zhí)行第二步和第三步之間時,另外一個進程要刪除支票賬戶的所有余額,這時又會發(fā)生什么情況?——銀行很可能白白給用戶200美元。 

        3、一個事務的必須要同時支持ACID四個特性

    ACID表示:原子性(atomicity)、一致性(consistency)、隔離性(Isolation)、持久性(durability) 

        A:原子性(atomicity)整個事務中的所有操作要么全部成功執(zhí)行,要么全部失敗后回滾; 

        C:一致性(consistency)數(shù)據(jù)庫總是從一個一致性狀態(tài)轉(zhuǎn)換為另一個一致性狀態(tài); 

        I:隔離性(Isolation)一個事務所做出的操作在提交之前,是不能為其它所見;隔離有多種隔離級別; 

        D:持久性(durability)一旦事務提交,其所做的修改會永久保存于數(shù)據(jù)庫中; 

        4、mysql的事務:

        MySQL的事務支持不是綁定在MySQL服務器本身,而是與存儲引擎相關(guān)

        MyISAM:不支持事務,用于只讀程序提高性能 

        InnoDB:支持ACID事務、行級鎖、并發(fā) 

                Berkeley DB:支持事務

 

        在MySQL中,事務開始使用COMMIT或ROLLBACK語句開始工作和結(jié)束。開始和結(jié)束語句的SQL命令之間形成了大量的事務。


        COMMIT & ROLLBACK: 

        這兩個關(guān)鍵字提交和回滾主要用于MySQL的事務。

        當一個成功的事務完成后,發(fā)出COMMIT命令應使所有參與表的更改才會生效。

        如果發(fā)生故障時,應發(fā)出一個ROLLBACK命令返回的事務中引用的每一個表到以前的狀態(tài)。

        可以控制的事務行為稱為AUTOCOMMIT設(shè)置會話變量。如果AUTOCOMMIT設(shè)置為1(默認值),然后每一個SQL語句(在事務與否)被認為是一個完整的事務,并承諾在默認情況下,當它完成。 AUTOCOMMIT設(shè)置為0時,發(fā)出SET AUTOCOMMIT =0命令,在隨后的一系列語句的作用就像一個事務,直到一個明確的COMMIT語句時,沒有活動的提交。

        可以通過使用mysql_query()函數(shù)在PHP中執(zhí)行這些SQL命令。 

 

        OK,更多文章請關(guān)注我的博客


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI