Mysql(基礎篇)

linux下的mysql操做  mysql

  一、# 打開 MySQL 服務linux

    sudo service mysql startsql

  二、#使用 root 用戶登陸,密碼爲空數據庫

    mysql -u root函數

  三、建立數據庫3d

    CREATE DATABASE <數據庫名字>;(注意不要漏掉分號 ;)blog

  四、鏈接數據庫排序

    use <數據庫名字>;索引

    show tables; (能夠查看該數據庫下的表)數學

  五、新建數據表    

    CREATE TABLE 表的名字
    (
    列名a 數據類型(數據長度),
    列名b 數據類型(數據長度),
    列名c 數據類型(數據長度)
    );

    select * from <表的名字>;  (查看錶的內容)

  六、插入表內容   

    INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);

  七、SQL的約束  

約束類型 主鍵約束 默認值約束 惟一約束 外鍵約束 非空約束
關鍵字 PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL

    七、1 主鍵約束  

    主鍵 (PRIMARY KEY)是用於約束表中的一行,做爲這一行的惟一標識符,在一張表中經過主鍵就能準肯定位到一行,所以主鍵十分重要。

    主鍵不能有重複且不能爲空。

    

    

    

    七、2 默認值約束  

    默認值約束 (DEFAULT) 規定,當有 DEFAULT 約束的列,插入數據爲空時,將使用默認值。

    

    七、3 惟一約束

    惟一約束 (UNIQUE) 比較簡單,它規定一張表中指定的一列的值必須不能有重複值,即這一列每一個值都是惟一的。

    

    七、4 外鍵約束   

    外鍵 (FOREIGN KEY) 既能確保數據完整性,也能表現表之間的關係。

    一個表能夠有多個外鍵,每一個外鍵必須 REFERENCES (參考) 另外一個表的主鍵,被外鍵約束的列,取值必須在它參考的列中有對應值。

    

    七、5 非空約束

    非空約束 (NOT NULL),聽名字就能理解,被非空約束的列,在插入值時必須非空。

    

   八、select語句

    八、1  select語句的基本格式:

      SELECT 要查詢的列名 FROM 表名字 WHERE 限制條件;

    八、2 數學符號條件

      SELECT name,age FROM employee WHERE age>25;

      SELECT name,age,phone FROM employee WHERE name='Mary';

    八、3 「AND"與「OR」

      #篩選出 age 小於 25,或 age 大於 30

      SELECT name,age FROM employee WHERE age<25 OR age>30;

      #篩選出 age 大於 25,且 age 小於 30

      SELECT name,age FROM employee WHERE age>25 AND age<30;

      而剛纔的限制條件 age>25 AND age<30 ,若是須要包含25和30這兩個數字的話,能夠替換爲 age BETWEEN 25 AND 30 

    八、4 IN 和NOT IN

      SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4');

      SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN ('dpt1','dpt3');

    八、5 通配符

      關鍵字 LIKE 在SQL語句中和通配符一塊兒使用,通配符表明未知字符。SQL中的通配符是 _ 和 % 。

      其中 _ 表明一個未指定字符,% 表明不定個未指定字符。

      好比,要只記得電話號碼前四位數爲1101,然後兩位忘記了,則能夠用兩個 _ 通配符代替:

      SELECT name,age,phone FROM employee WHERE phone LIKE '1101__';

      另外一種狀況,好比只記名字的首字母,又不知道名字長度,則用 % 通配符代替不定個字符:

      SELECT name,age,phone FROM employee WHERE name LIKE 'J%';

    八、6 對結果排序

      爲了使查詢結果看起來更順眼,咱們可能須要對結果按某一列來排序,這就要用到 ORDER BY 排序關鍵詞。

      默認狀況下,ORDER BY的結果是升序排列,而使用關鍵詞ASC和DESC可指定升序或降序排序。

      好比,咱們按salary降序排列,SQL語句爲:

      SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;

    八、7 內置函數與計算

      函數名: COUNT    SUM   AVG     MAX    MIN

      做用:  計數    求和   求平均值   最大值   最小值

    八、8 子查詢

      上面討論的 SELECT 語句都僅涉及一個表中的數據,然而有時必須處理多個表才能得到所需的信息。

      例如:想要知道名爲 "Tom" 的員工所在部門作了幾個工程。員工信息儲存在 employee 表中,但工程信息儲存在project 表中。

      對於這樣的狀況,咱們能夠用子查詢:

      SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt
      HAVING of_dpt IN
      (SELECT in_dpt FROM employee WHERE name='Tom');

    八、9 鏈接查詢

      在處理多個表時,子查詢只有在結果來自一個表時纔有用。但若是須要顯示兩個表或多個表中的數據,這時就必須使用鏈接 (join) 操做。

      鏈接的基本思想是把兩個或多個表看成一個新的表來操做,以下:

      SELECT id,name,people_num
      FROM employee,department
      WHERE employee.in_dpt = department.dpt_name
      ORDER BY id;
      這條語句查詢出的是,各員工所在部門的人數,其中員工的 id 和 name 來自 employee 表,people_num 來自 department 表

  九、數據庫及表的刪除和修改

     九、1 對數據庫的修改

        DROP DATABASE <數據庫名>   (傳說中的從入門到刪庫)

     九、2 對一張表的修改

        重命名一張表:

          RENAME TABLE 原名 TO 新名字;

          ALTER TABLE 原名 RENAME 新名;

          ALTER TABLE 原名 RENAME TO 新名;

     九、3 刪除一張表

        DROP TABLE <表名>

     九、4 對一列的修改(即對錶結構的修改)

        一、增長一列:

          ALTER TABLE 表名字 ADD COLUMN 列名字 數據類型 約束;

          ALTER TABLE 表名字 ADD 列名字 數據類型 約束;

        好比咱們新增一列 weight (體重)放置在 age (年齡)的後面:

          ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age;

        若是想放在第一列的位置,則使用 FIRST 關鍵詞,如語句:

          ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST;

        二、刪除一列:

          刪除表中的一列和剛纔使用的新增一列的語句格式十分類似,只是把關鍵詞 ADD 改成 DROP ,

          語句後面不須要有數據類型、約束或位置信息。具體語句格式:

            ALTER TABLE 表名字 DROP COLUMN 列名字;

            或: ALTER TABLE 表名字 DROP 列名字;

        三、重命名一列:

          這條語句其實不僅可用於重命名一列,準確地說,它是對一個列作修改(CHANGE) :

          ALTER TABLE 表名字 CHANGE 原列名 新列名 數據類型 約束;

        四、改變數據類型:

          要修改一列的數據類型,除了使用剛纔的CHANGE語句外,還能夠用這樣的MODIFY語句:

          ALTER TABLE 表名字 MODIFY 列名字 新數據類型;

          再次提醒,修改數據類型必須當心,由於這可能會致使數據丟失。      

     九、5 對錶的內容修改

        一、修改表中某個值:

          UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 條件;

          注:必定要加WHERE的條件

        二、刪除一行記錄:

          刪除表中的一行數據,也必須加上WHERE條件,不然整列的數據都會被刪除。刪除語句:

          DELETE FROM 表名字 WHERE 條件;

  十、其餘基本操做

    索引:能夠加快查詢速度

    視圖:是一種虛擬存在的表

    導入:從文件中導入數據到表

    導出:從表中導出到文件中

    備份:mysqldump 備份數據庫到文件

    恢復:從文件恢復數據庫

    一、索引

      索引是一種與表有關的結構,它的做用至關於書的目錄,能夠根據目錄中的頁碼快速找到所需的內容。

      當表中有大量記錄時,若要對錶進行查詢,沒有索引的狀況是全表搜索:將全部記錄一一取出,和查詢條件進行一一對比,

    而後返回知足條件的記錄。這樣作會消耗大量數據庫系統時間,並形成大量磁盤 I/O 操做。

      而若是在表中已創建索引,在索引中找到符合查詢條件的索引值,經過索引值就能夠快速找到表中的數據,能夠大大加快查詢速度。

      對一張表中的某個列創建索引,有如下兩種語句格式:

      ALTER TABLE 表名字 ADD INDEX 索引名 (列名);

      CREATE INDEX 索引名 ON 表名字 (列名);

    二、視圖

      視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。它就像一個窗口,經過這個窗口能夠看到系統專門提供的數據,

    這樣,用戶能夠不用看到整個數據庫中的數據,而只關心對本身有用的數據。

      注意理解視圖是虛擬的表:

        數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些數據存放在原來的表中;

        使用視圖查詢數據時,數據庫系統會從原來的表中取出對應的數據;

        視圖中的數據依賴於原來表中的數據,一旦表中數據發生改變,顯示在視圖中的數據也會發生改變;

        在使用視圖的時候,能夠把它看成一張表。

      建立視圖的語句格式爲:

      CREATE VIEW 視圖名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;

    三、導入

      導入操做,能夠把一個文件裏的數據保存進一張表。導入語句格式爲:

      LOAD DATA INFILE '文件路徑和文件名' INTO TABLE 表名字;

    四、導出

      導出與導入是相反的過程,是把數據庫某個表中的數據保存到一個文件之中。導出語句基本格式爲:

      SELECT 列1,列2 INTO OUTFILE '文件路徑和文件名' FROM 表名字;

      注意:語句中 「文件路徑」 之下不能已經有同名文件。

    五、備份

      備份與導出的區別:

        導出的文件只是保存數據庫中的數據;

        而備份,則是把數據庫的結構,包括數據、約束、索引、視圖等所有另存爲一個文件。

      mysqldump 是 MySQL 用於備份數據庫的實用程序。

      它主要產生一個 SQL 腳本文件,其中包含從頭從新建立數據庫所必需的命令CREATE TABLE INSERT 等。

      使用 mysqldump 備份的語句:

      mysqldump -u root 數據庫名>備份文件名; #備份整個數據庫

      mysqldump -u root 數據庫名 表名字>備份文件名; #備份整個表

    六、恢復

      用備份文件恢復數據庫,其實咱們早就使用過了。在本次實驗的開始,咱們使用過這樣一條命令:

      source /tmp/SQL6/MySQL-06.sql

      這就是一條恢復語句,它把 MySQL-06.sql 文件中保存的mysql_shiyan 數據庫恢復。

      輸入語句進行恢復,把備份的 bak.sql 恢復到 test 數據庫:

      mysql -u root test < bak.sql

相關文章
相關標籤/搜索