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

1、SQL語句的語言特色mysql

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

2、SQL語句的語句結構
正則表達式

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

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

 二、數據操做語言(DML):Data Manapulation Language;bash

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

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

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

 四、數據控制語言(DCL): Data Control Languageui

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


3、SQL語句中的數據類型

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

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

  修飾符:NOT NULL , DEFAULT ' '

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

   1)、精確數值型

① 整型數據

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

    ② 浮點型數據

FLOAT  單精度
DOUBLE  雙精度
REAL

修飾符:NOT NULL, DEFAULT ' '

 三、日期時間型

DATE
TIME
DATETIME
YEAR(2), YEAR(4)
TIMESTAMP

修飾符:NOT NULL, DEFAULT ' '

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

 五、內置類型

ENUM, SET

修飾符:NOT NULL, DEFAULT ' '


4、mysql客戶端經常使用的命令

不用分號結尾

 一、quit | \q :退出mysql;

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

 三、go | \g : 不管結束符是什麼都送到服務器端;

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

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

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



5、mysql服務端的相關命令

必須使用分號結尾

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

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

mysql> show [global|session] variables;

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

mysql> show [global|session] status;

三、顯示所支持的全部字符集;

mysql> SHOW CHARACTER SET;

四、顯示全部字符集的排序規則

mysql> SHOW COLLATION;

五、顯示當前mysql版本號

mysql> SELECT VERSION();

六、顯示有權限訪問的全部數據庫

mysql> SHOW DATABASES;

七、顯示默認數據庫

mysql> SELECT DATABASE();

八、建立名爲DB_NAME的數據庫

mysql> CREATE DATABASE DB_NAME;

九、刪除名爲DB_NAME的數據庫

mysql> DROP DATABASE DB_NAME;

6、mysql的執行方式

  一、交互式方式

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

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

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

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

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

  二、批處理方式

   使用sql腳本

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


7、用戶管理

一、建立用戶

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

二、用戶或主機可使用通配符

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

   _: 匹配任意單個字符

三、用戶受權

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

四、修改用戶密碼

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

五、刪除用戶

mysql>DROP USER username@host;


8、關係數據型數據庫

   一、主鍵 primary key

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

   二、唯一鍵 uniq key

     能夠爲空,唯一;

   三、外鍵  foreign key

     引用性約束

   四、檢查性約束


9、表管理

一、建立表

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

二、刪除表

mysql>DROP TABLE tb_name;


10、SELECT語句用法

  mysql> SELECT 字段 FROM 表 WHERE;

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

  二、通配符:LIKE

     % 任意長度的任意字符

    _ 任意單個字符

三、RLIKE :支持正則表達式

11、DML 數據操做語言的用法

一、INSERT 插入語句用法

mysql> INSERT INTO 表 字段 VALUES;

二、UPDATE 更新語句用法

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

三、DELETE 刪除語句用法

mysql> DELETE FROM 表名 WHERE 條件


實戰案例

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


一、新建以下表(包括結構和內容):


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庫有全部訪問權限;

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'@'%';
相關文章
相關標籤/搜索