1. 程式人生 > >最近學習MySQL的一些筆記

最近學習MySQL的一些筆記

SQL 語句分類

  1. Data Definition Language (DDL 資料定義語言) 如:建庫,建表
  2. Data Manipulation Language(DML 資料操縱語言)如:對錶中的記錄操作增刪改
  3. Data Query Language(DQL 資料查詢語言),如:對錶中的查詢操作
  4. Data Control Language(DCL 資料控制語言),如:對使用者許可權的設定

 

MySQL 的語法

  1. 每條語句以分號結尾,如果在 SQLyog 中不是必須加的。  
  2. SQL 中不區分大小寫,關鍵字中認為大寫和小寫是一樣的  
  3. 3 種註釋:

註釋的語法

說明

--空格

單行註釋

/* */

多行註釋

#  

這是 mysql 特有的註釋方式

 

 

建立資料庫的幾種方式

建立資料庫  

CREATE DATABASE 資料庫名;

判斷資料庫是否已經存在,不存在則建立資料庫  

CREATE DATABASE IF NOT EXISTS 資料庫名;

建立資料庫並指定字符集  

CREATE DATABASE 資料庫名 CHARACTER SET 字符集;

檢視所有的資料庫  

show databases;

修改資料庫預設的字符集

ALTER DATABASE 資料庫名 DEFAULT CHARACTER SET 字符集;     

 刪除資料庫的語法

DROP DATABASE 資料庫名;

 檢視正在使用的資料庫  

SELECT DATABASE();  使用的一個 mysql 中的全域性函式

6.5.2 使用/切換資料庫  

USE 資料庫名;

建立表的格式

CREATE TABLE 表名 ( 欄位名 1 欄位型別 1,  欄位名 2 欄位型別 2 );

 

7.1.2 關鍵字說明:

建立表的關鍵字

說明

CREATE

建立

TABLE

 

常使用的資料型別如下:

 

檢視某個資料庫中的所有表  

SHOW TABLES;

 

查看錶結構  

DESC 表名;     

 

 

檢視建立表的 SQL 語句  

SHOW CREATE TABLE 表名;

快速建立一個表結構相同的表語法

CREATE TABLE 新表名 LIKE 舊錶名;

直接刪除表  

DROP TABLE 表名;

判斷表是否存在,如果存在則刪除表  

DROP TABLE IF EXISTS 表名;

新增表列 ADD

ALTER TABLE 表名 ADD 列名 型別;     

修改列型別 MODIFY

ALTER TABLE 表名 MODIFY列名 新的型別;

 修改表名

RENAME TABLE 表名 TO 新表名;

 修改字符集 character set

ALTER TABLE 表名 character set 字符集;

 

插入記錄

INSERT [INTO] 表名 [欄位名] VALUES (欄位值)

INSERT INTO 表名:表示往哪張表中新增資料

(欄位名 1, 欄位名 2, …)要給哪些欄位設定值

VALUES (1, 2, …)設定具體的值

 

  1. 所有的欄位名都寫出來  

INSERT INTO 表名 (欄位名1, 欄位名2, 欄位名3…) VALUES (值1, 值2, 值3);

 

不寫欄位名  

INSERT INTO 表名 VALUES (1, 2,

3…);

 

插入部分資料

 

INSERT INTO 表名 (欄位名1, 欄位名2,

...) VALUES (1, 2, ...);

 

檢視包含 character 開頭的全域性變數

show variables like 'character%';

  1. 將表名2中的所有的列複製到表名1中

INSERT INTO 表名 1 SELECT * FROM 表名 2;

  1. 將表名2中的所有的列複製到表名1中

INSERT INTO 表名 1 SELECT * FROM 表名 2;

更新表記錄

UPDATE 表名 SET 列名= [WHERE 條件表示式]  

UPDATE: 需要更新的表名

SET: 修改的列值

WHERE: 符合條件的記錄才更新

不帶條件修改資料  

UPDATE 表名 SET 欄位名=值;  -- 修改所有的行

帶條件修改資料  

UPDATE 表名 SET 欄位名=值 WHERE 欄位名=值;

DELETE FROM 表名 [WHERE 條件表示式]

如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被刪除。

你可以在 WHERE 子句中指定任何條件     

 

不帶條件刪除資料  

DELETE FROM 表名;

帶條件刪除資料  

DELETE FROM 表名 WHERE 欄位名=值;

    

使用 truncate 刪除表中所有記錄  

TRUNCATE TABLE 表名;

 

       truncate 和 delete 的區別: truncate 相當於刪除表的結構,再建立一張表。

 

-- 帶條件刪除資料,刪除id為1的記錄 delete from student where id=1;

 

-- 不帶條件刪除資料,刪除表中的所有資料 delete from student;

DQL 查詢表中的資料查詢不會對資料庫中的資料進行修改.只是一種顯示資料的方式

SELECT 列名 FROM 表名 [WHERE 條件表示式]  

  1. SELECT 命令可以讀取一行或者多行記錄。
  2. 你可以使用星號(*)來代替其他欄位,SELECT 語句會返回表的所有欄位資料
  3. 你可以使用 WHERE 語句來包含任何條件。

 

查詢表所有行和列的資料

l 使用*表示所有列  

SELECT * FROM 表名;

 查詢指定列

  1. 查詢指定列的資料,多個列之間以逗號分隔  

SELECT 欄位名1, 欄位名2, 欄位名3, ... FROM 表名;

  1. 對列指定別名

SELECT 欄位名1 AS 別名, 欄位名2 AS 別名... FROM 表名;     

  1. 對列和表同時指定別名

SELECT 欄位名1 AS 別名, 欄位名2 AS 別名... FROM 表名 AS 表別名;

查詢指定列並且結果不出現重複資料

SELECT DISTINCT 欄位名 FROM 表名;

 某列資料和固定值運算  

SELECT 列名 1 + 固定值 FROM 表名;

某列資料和其他列資料參與運算  

SELECT 列名 1 + 列名 2 FROM 表名;

 

 條件查詢的語法

SELECT 欄位名 FROM 表名 WHERE 條件;

流程:取出表中的每條資料,滿足條件的記錄就返回,不滿足條件的記錄不返回

 

  1. 運算子

比較運算子

說明

><<=>==<>

<>在 SQL 中表示不等於,在 mysql 中也可以使用!= 沒有==

BETWEEN...AND

在一個範圍之內,如:between 100 and 200 相當於條件在 100 到 200 之間,包頭又包尾

IN(集合)

集合表示多個值,使用逗號分隔

LIKE '%'

模糊查詢

IS NULL

查詢某一列為 NULL 的值,注:不能寫=NULL

 

  1. 邏輯運算子

 

邏輯運算子

說明

and &&

與,SQL 中建議使用前者,後者並不通用。

or ||

not !

 

  1. in 關鍵字  

SELECT 欄位名 FROM 表名 WHERE 欄位 in (資料 1, 資料 2...);

in 裡面的每個資料都會作為一次條件,只要滿足條件的就會顯示

 

  1. 範圍查詢

BETWEEN 1 AND 2

表示從值 1 到值 2 範圍,包頭又包尾

比如:age BETWEEN 80 AND 100 相當於: age>=80 && age<=100

 

  1. like 關鍵字
<

LIKE 表示模糊查詢

SELECT * FROM 表名 WHERE 欄位名 LIKE '萬用字元字串';