MYSQL服務之SQL語句應用 (一)

一、SQL語句的語言特點

1.一體化:SQL集數據定義DDL、數據操縱DML和數據控制DCL於一體,可以完成數據庫中的全部工作。
2.使用方式靈活:它具有兩種使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主語言中使用。
3.非過程化:只提操作要求,不必描述操作步驟,也不需要導航。使用時只需要告訴計算機“做什麼”,而不需要告訴它“怎麼做”。
4.語言簡潔,語法簡單,好學好用:在ANSI標準中,只包含了94個英文單詞,核心功能只用6個動詞,語法接近英語口語。

二、SQL語句的語句結構

1、數據定義語言(DDL) : Data Defination Language;

 用來定義數據對象的,包含CREATE(增)、DROP(刪)、ALTER(改)語句。

2、數據操作語言(DML):Data Manapulation Language;

 此語句主要是操作數據而不是操作對象,包含INSERT(插入), DELETE(刪除), UPDATE(更新)語句。

3、數據查詢語言(DQL): Data Query Language;

 數據檢索語句,以從表中獲取相關數據信息,SELECT(查詢)語句。

4、數據控制語言(DCL): Data Control Language

 用於對用戶的授權管理的語句,包含GRANT(授權), REVOKE(收回權限)語句。


三、SQL語句中的數據類型

1、字符型 ,以字符格式存儲

1
2
3
4
5
6
CHAR(n) : 定長字符
VARCHAR(n) :可變長字符
BINARY(n) :二進制字符
VARBINARY(n) :可變長二進制字符
TEXT :文本型數據
BLOB :二進制大對象

 修飾符:NOT NULL , DEFAULT ' '

2、數值型 ,以數值格式存儲

  1)、精確數值型

① 整型數據

1
2
3
4
5
TINYINT: 1byte, -128, 127    0,255  微整形
SMALLINIT: 2bytes, -32768, 32767   0,65535  小整形
MEDIUMINT: 3bytes, 0,2^24  中整形
INT: 4bytes, 0,2^32  整型
BIGINT: 8bytes, 0,2^64  大整型

修飾符:NOT NULL, DEFAULT '', UNSIGNED, AUTO_INCREMENT

   ② 浮點型數據

1
2
3
FLOAT  單精度
DOUBLE  雙精度
REAL

修飾符:NOT NULL, DEFAULT ' '

3、日期時間型

1
2
3
4
5
DATE
TIME
DATETIME
YEAR(2), YEAR(4)
TIMESTAMP

修飾符:NOT NULL, DEFAULT ' '

4、布爾型 ,1爲真,0爲假

5、內置類型

1
ENUM, SET

修飾符:NOT NULL, DEFAULT ' '


四、mysql客服端常用的命令

不用分號結尾

1、quit | \q :退出mysql;

2、delimier | \d : 如何改變語句結束符;

3、go | \g : 無論結束符是什麼都送到服務器端;

4、use | \u : 設定默認數據庫;

5、ego | \G : 結果取回,縱向顯示;

6、system | \! : 執行系統命令而不用退出當前mysql



五、mysql服務端的相關命令

必須使用分號結尾

1、 顯示服務器參數變量,有些變量的值可以修改,能夠改變mysql的工作特性,

有些可以動態調整,即刻生效;另外一些只能修改配置文件後,重啓生效;

1
mysql> show [global|session] variables;

2、顯示服務器狀態變量,記錄了當前包括過去的時間內mysql的運行統計數據。

1
mysql> show [global|session] status;

3、顯示所支持的所有字符集;

1
mysql> SHOW CHARACTER SET;

4、顯示所有字符集的排序規則

1
mysql> SHOW COLLATION;

5、顯示當前mysql版本號

1
mysql> SELECT VERSION();

6、顯示有權限訪問的所有數據庫

1
mysql> SHOW DATABASES;

7、顯示默認數據庫

1
mysql> SELECT DATABASE();

8、創建名爲DB_NAME的數據庫

1
mysql> CREATE DATABASE DB_NAME;

9、刪除名爲DB_NAME的數據庫

1
mysql> DROP DATABASE DB_NAME;

六、mysql的執行方式

 1、交互式方式

   ① -h | --host : 遠程連接主機

   ② -u | --user : 指定用戶

   ③ -p | --password :輸入密碼

   ④ -D | --database : 登錄之後,直接設定默認庫

   ⑤ -e 'SQL_Statement;' : 不用登錄而是連接後,輸入命令,直接取回結果

 2、批處理方式

  使用sql腳本

1
2
mysql OPTIONS < script.sql
mysql> source/path/to/script.sql


七、用戶管理

1、創建用戶

1
mysql>CREATE USER username@host [IDENTIFIED BY 'password'];

2、用戶或主機可以使用通配符

  %:匹配任意長度的任意字符

  _: 匹配任意單個字符

3、用戶授權

1
mysql>GRANT ALL PRIVILEGES ON dbname.tablename TO username@host [IDENTIFIED BY 'password'];

4、修改用戶密碼

1
mysql> SET PASSWORD FOR username@host=PASSWORD('password');

5、刪除用戶

1
mysql>DROP USER username@host;


八、關係數據型數據庫

  1、主鍵 primary key

    不能爲空,不能重複,惟一;

  2、惟一鍵 uniq key

    可以爲空,惟一;

  3、外鍵  foreign key

    引用性約束

  4、檢查性約束


九、表管理

1、創建表

1
mysql>CREATE TABLE tb_name (col1 defination, col2 defination, ..., key defination);

2、刪除表

1
mysql>DROP TABLE tb_name;


十、SELECT語句用法

 mysql> SELECT 字段 FROM 表 WHERE;

 1、比較運算:>,<,>=,<=,=,!=

 2、通配符:LIKE

    % 任意長度的任意字符

   _ 任意單個字符

3、RLIKE :支持正則表達式

十一、DML 數據操作語言的用法

1、INSERT 插入語句用法

1
mysql> INSERT INTO 表 字段 VALUES;

2、UPDATE 更新語句用法

1
mysql> UPDATE 表名 SET 字段名=值 WHERE;

3、DELETE 刪除語句用法

1
mysql> DELETE FROM 表名 WHERE 條件


實戰案例

MySQL基礎操作練習(所屬的庫叫做mytestdb):


1、新建如下表(包括結構和內容):


ID    Name          Age     Gender     Course

1     Ling Huchong   24      Male       Hamogong

2     Huang Rong    19      Female     Chilian Shenzhang

3     Lu Wushaung   18      Female     Jiuyang Shenggong

4     Zhu Ziliu     52      Male       Pixie Jianfa

5     Chen Jialuo   22      Male       Xianglong Shiba Zhang


完成如下操作

(1)找出性別爲女性的所有人;

(2)找出年齡大於20的所有人;

(3)修改Zhu Ziliu的Course爲Kuihua Baodian;

(4)刪除年齡小於等於19歲的所有人;

(5)創建此表及所屬的庫;

(6)授權給testuser對testdb庫有所有訪問權限;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> CREATE DATABASE mytestdb
use mytestdb
myaql> CREATE TABLE students (ID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
Name CHAR(30) NOT NULL UNIQUE KEY,
Age TINYINT UNSIGNED, Gender CHAR(1) DEFAULT 'M',
Course VARCHAR(50) NOT NULL);
mysql> INSERT  students (Name,Age,Gender,Course)VALUES('Ling Huchong',24,'M','Hamogong'),
('Huang Rong',19,'F','Chilian Shenzhang'),
('Lu Wushuang',18,'F','Jiuying Shengong'),
('Zhu Ziliu',52,'M','Pixie Jianfa'),
('Chen Jialuo',22,'M','Xianglong Shiba Zhang');
mysql> SELECT name FROM students WHERE Gender='Female';
mysql> SELECT name FROM students WHERE Age>20;
mysql> UPDATE students SET Course='Kuihua Baodian'WHERE name='Zhu Ziliu';
mysql> DELETE FROM students WHERE Age<=19;
mysql> GRANT ALL ON testdb.* TO 'testuser'@'%';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章