1. 程式人生 > >MySQL基本概念以及簡單操作

MySQL基本概念以及簡單操作

software 倉庫 必須 key 不能 即使 同時 databases ecif

一、MySQL

  MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。   MySQL是將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。   MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。 由於其社區版的性能卓越,搭配 PHP 和 Apache可組成良好的開發環境 二、MySQL與其他的大型數據庫比較

  例如Oracle 、DB2、SQL Server等相比,MySQL 自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由於 MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。   Linux作為操作系統,Apache 或Nginx作為 Web 服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由於這四個軟件都是免費或開源軟件軟件(FLOSS:Free/Libre and Open Source Software),因此使用這種方式除開人工成本就可以建立起一個穩定、免費的網站系統,也被稱為“LAMP“或“LNMP”組合。 三、數據庫在Web中的重要性
  為使靜態的HTML頁面做活,變成動態頁面展示,需要通過Apache服務器端PHP腳本編程語言,依托數據庫處理數據,實現動態化,因此學習PHP的同時,掌握MySQL數據庫的基本操作是有必要的。

四、常見的一些數據庫系統

  MySQL、DB2、Oracle、SQL Server、MariaDB等等,由於MySQL已是Oracle旗下產品,可能會被閉源,不再免費,但MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,MariaDB是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM;使用XtraDB來代替MySQL的InnoDB。

五、數據庫類型

  1.關系型數據庫

  2.非關系型數據庫

六、SQL結構化查詢語言

  必須是通過服務器,連接我們的數據庫,才能進行操作

  使用各種SQL語句、增、刪、改、查

  1.數據定義語言(DDL):

  用於定義和管理數據對象,包括數據庫,數據表等。例如:CREATE,DROP,ALTER等。

  數據庫 -> 數據表:對數據庫或數據表的創建、刪除、修改等操作

  2.數據操作語言(DML):

  用於操作數據庫對象中所包含的數據。例如:INSERT,UPDATE,DELETE語句。

  對數據的 增、刪、改 這些操作,就是數據操作語言

  3.數據查詢語言(DQL):

  用於查詢數據庫對象中所包含的數據,能夠進行單表查詢,

  連接查詢,嵌套查詢,以及集合查詢等各種復雜程度不同的數據庫查詢,並將數據

  返回客戶機中顯示。SELECT

  4.數據控制語言(DCL):

  是用來管理數據庫的語言,包括管理權限及數據更改。

七、在DOC系統中操作MySQL


  由於我是個人學習,安裝環境是在windows操作系統中完成的,也就是windows+Apache+PHP+MySQL的集成包,下面簡稱之為“wamp”。要在DOC系統中操作MySQL

前需要進行的一些配置

  1> 環境變量

    我的電腦 -> 右擊屬性 -> 高級系統設置 -> 環境變量 ->系統變量 ->path

    在path變量後加上;變量值

    變量值就是MySQL下的bin目錄路徑

    註意:必須開啟wamp服務器才可以進去

  2>進入MySQL數據庫

    DOS系統下清屏的命令:cls

    mysql -h localhost -u root -p -b

      -h 服務器(本地、指定服務器IP的)[本地localhost可以省略]
      -u 用戶名(我們用的是root用戶:超級管理員)
      -p 用戶密碼(不需要再它後面寫密碼,密碼是回車之後寫的)
      -b 蜂鳴器(當命令敲錯了,報錯時提示的聲音)

  3>進入MySQL數據庫以後的命令

    註意:
    1> 每一行命令結束了以後,請使用 ; 或 \g 來結束,否則命令可以一直寫下去
    2> 在MySQL的命令中,如果一行命令沒有敲完,就回車了,它會繼續執行下去,前提是必須是一條完整的命令
    3> 退出敲錯的命令、或不想繼續執行下去的命令時,用\c 或者 Ctrl+c
    4> 我們要想讓數據豎起來顯示,在命令後用\G,有時候一行盛不下了會亂,\G可以解決這個問題
    5> \s 可以顯示當前服務器的配置
    6> help 查看所有可以使用的快捷命令
    7> 如果在命令行中遇到了單引號,則MySQL認為你要輸入一段字符串,所以,它是必須使用結束的單引號,可以跳出字符串輸入狀態;

  4> 退出數據庫服務器
    \q 、 exit、 quit  三者皆可

    註意:

      要想將我們在DOS命令行下邊輸入的所有的命令都存儲到一個文檔中,就需要使用tee命令

    tee 路徑;

    例如:tee E:\wamp\www\Test\Test_MySQL\1.php

八、操作數據庫的一些命令

    1.創建數據庫

      create database 數據庫名;

    註意:
      1.如果數據庫已存在,不能創建同名的數據庫
      2.創建命令和數據庫名都不區分大小寫

      if not exists 如果數據庫已存在,加上前面的關鍵字可以避免報錯

    2.刪除數據庫

      drop database 數據庫名;

    3.查看已創建的數據庫

      show databases;

    4.使用一個數據庫

      use 數據庫名;

    5.查看當前我們所使用的數據庫

      select database();

    6.查看建庫語句

      show create database 數據庫名;

      說明:通過該命令,我們可以看到所建數據庫的建庫語句、編碼類型;

      註意:
          1.MySQL數據庫中命令不區分大小寫。

          2.每創建一個數據庫,就會在data目錄下創建一個以此數據庫名稱命名的文件夾。

          3.在Windows下,數據庫名稱也是不區分大小寫的,但在Linux下,數據庫名稱嚴格區分大小寫。

    7. 對數據表的操作

      表中的字段,其實可以理解為table表格中的表頭

          1>創建數據表(不加任何主鍵信息,自增,數據限制條件的簡易數據表創建)>最初練習可用
            create table 表名(
            字段名1 字段類型,
            字段名2 字段類型,
            字段名3 字段類型
            );

            註意:
            1.創建一個數據表時,它的每個字段之間用逗號","隔開;
            2.最後一個字段不用逗號",";
            3.創建完表以後,最後的括號後面使用分號結束
            4.建表時,表名後面的括號中寫表的字段名(字段類型)

          2> 查看表結構

            desc 表名;

          3> 查看建表語句

            show create table 表名;

          4> 查看當前數據庫存在的數據表

            show tables;

          5> 刪除數據表

            drop table 表名

    8.對數據的操作

          1> 添加數據
            ① insert into 表名 (字段1,字段2……) values (值1,值2……);

            ② insert into 表名 values (值1,值2……),(值1,值2……);

            ③ insert into 表名 (字段1,字段2……) values (值1,值2……),(值1,值2……);

            ④ insert into 表名 values (值1,值2...);

            ⑤ insert into 表名 set 字段1=值1,字段2=值2...;

              註意:
                1.值和字段名要一一對應,否則會報錯
                2.你寫入的值一定要和數據類型相匹配

          2> 刪除數據

             delete from 表名 where 條件;

              註意:刪除數據的時候,一定要加上where條件,否則會刪除所有的數據

          3> 修改數據

             update 表名 set 要修改的字段=修改後的值 where 條件

              註意:修改數據的時候,一定要加上where條件,否則會修改所有的數據

          4> 查找數據

             select *(所有字段) from 表;

             select 字段1,字段2.. from 表;

下面是對數據庫簡單操作實例:

技術分享
<?php
//對數據庫的簡單操作方法

//顯示存在所有的數據庫
mysql> show databases;    
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lamp183            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)


//刪除數據庫lamp183
mysql> drop database lamp183;
Query OK, 1 row affected (0.01 sec)


//刪除數據庫lamp183
mysql> drop database lamp183;
Query OK, 0 rows affected (0.00 sec)


//創建數據庫lmap175
mysql> create database lamp175;
Query OK, 1 row affected (0.00 sec)


//查看當前的數據庫[沒有被使用的數據庫即使被創建也不會被查詢到]
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)


//使用lamp175數據庫
mysql> use lamp175;
Database changed


//當前數據庫顯示出lamp175,說明此數據庫為當前操作的庫
mysql> select database();
+------------+
| database() |
+------------+
| lamp175    |
+------------+
1 row in set (0.00 sec)


//查看lamp175的建庫語句 /G可以縱向顯示
mysql> show create database lamp175\G;
*************************** 1. row ***************************
       Database: lamp175
Create Database: CREATE DATABASE `lamp175` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)

ERROR: 
No query specified


//查看lamp175建庫語句
mysql> show create database lamp175;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| lamp175  | CREATE DATABASE `lamp175` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> create database lamp183;
Query OK, 1 row affected (0.00 sec)

mysql> use lamp183;
Database changed


//在lamp183數據庫中創建stu數據表
mysql> create table stu(    
    -> id int,
    -> name varchar(32),
    -> sex varchar(2),
    -> age int,
    -> job varchar(32)
    -> );
Query OK, 0 rows affected (0.05 sec)


mysql> desc stu;    //查看stu數據表的表結構
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(32) | YES  |     | NULL    |       |
| sex   | varchar(2)  | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| job   | varchar(32) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


//查看stu的建表語句[可以查看到該表的編碼類型,存儲類型]
mysql> show create table stu;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu   | CREATE TABLE `stu` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  `sex` varchar(2) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `job` varchar(32) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)



//查看stu表的建表語句[豎起來查看]
mysql> show create table stu\G;    
*************************** 1. row ***************************
       Table: stu
Create Table: CREATE TABLE `stu` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  `sex` varchar(2) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `job` varchar(32) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

ERROR: 
No query specified


//查看當前數據庫中所有的表
mysql> show tables;
+-------------------+
| Tables_in_lamp183 |
+-------------------+
| stu               |
+-------------------+
1 row in set (0.00 sec)


//刪除stu數據表
mysql> drop table stu;
Query OK, 0 rows affected (0.00 sec)


//創建stu數據表
mysql> create table stu(
    -> id int,
    -> name varchar(32),
    -> sex varchar(2),
    -> age int,
    -> job varchar(32)
    -> );
Query OK, 0 rows affected (0.01 sec)


//查看stu數據表的表結構
mysql> desc stu;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(32) | YES  |     | NULL    |       |
| sex   | varchar(2)  | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| job   | varchar(32) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


//查看stu數據表的所有數據
mysql> select * from stu;
Empty set (0.00 sec)


//在stu數據表中插入數據
mysql> insert into stu set id=9,name=‘haiyang‘,sex=‘w‘,age=38,job=‘toupai‘;
Query OK, 1 row affected (0.00 sec)


//查看stu數據表中所有數據
mysql> select * from stu;
+------+----------+------+------+---------+
| id   | name     | sex  | age  | job     |
+------+----------+------+------+---------+
|    1 | zhangsan | w    |   18 | laobao  |
|    2 | lisi     | m    | NULL | NULL    |
|    3 | wangwu   | w    | NULL | NULL    |
|    4 | maliu    | m    | NULL | NULL    |
|    5 | zhaoqi   | w    | NULL | NULL    |
|    6 | wangba   | m    |   20 | baoan   |
|    7 | haibo    | w    |   28 | guigong |
|    8 | hongze   | m    |   17 | student |
|    9 | haiyang  | w    |   38 | toupai  |
+------+----------+------+------+---------+
9 rows in set (0.00 sec)
//退出MySQL數據庫
mysql> \q
技術分享

MySQL基本概念以及簡單操作