1. 程式人生 > >對SQL簡單介紹、資料庫、表的簡單操作

對SQL簡單介紹、資料庫、表的簡單操作

1.SQL語句簡單介紹:

SQL(結構化查詢語言(Structured Query Language)包含6個部分(資料查詢語言DQL資料操作語言DML資料定義語言DDL事務處理語言TPL資料控制語言DCL指標控制語言CCL),Java中常用的有三種,DQLDMLDDL

一:資料查詢語言(DQL

其語句,也稱為“資料檢索語句”,用以從表中獲得資料,確定資料怎樣在應用程式給出。保留字SELECTDQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHEREORDER BYGROUP BYHAVING。這些DQL保留字常與其他型別的SQL語句一起使用。

二:資料操作語言(DML):

其語句包括動詞INSERTUPDATEDELETE。它們分別用於新增,修改和刪除表中的行。也稱為動作查詢語言。

:資料定義語言(DDL):

其語句包括動詞CREATEDROP。在資料庫中建立新表或刪除表(CREAT TABLE DROP TABLE);為表加入索引等。DDL包括許多與資料庫目錄中獲得資料有關的保留字。它也是動作查詢的一部分。

:事務處理語言(TPL):

它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTIONCOMMITROLLBACK

:資料控制語言(DCL):

它的語句通過

GRANTREVOKE獲得許可,確定單個使用者和使用者組對資料庫物件的訪問。某些RDBMS可用GRANTREVOKE控制對錶單個列的訪問。

六:指標控制語言(CCL):

它的語句,像DECLARE CURSORFETCH INTOUPDATE WHERE CURRENT用於對一個或多個表單獨行的操作。


2.MySQL列型別對應Java的資料型別:

MySQL列型別    Java資料型別

-------------------------------------------------------

INT:                      int/Integer

BIGINT:               long/Long

FLOAT                 float/Float

DOUBLE             double/Double

DECIMAL              BigDecimal

---------------------------------------------------------

3.資料庫的操作

檢視資料庫伺服器存在哪些資料庫:

SHOW  DATABASES;

使用指定的資料庫:

USE database_name;

建立指定名稱的資料庫:

CREATE DATABASE database_name;

刪除資料庫:

DROP DATABASE database_name;

注意:MySQL中,日期時間值使用單引號引起來。 相當於JavaDateCalender

4.表的操作

建立表:

1.先進入某一個數據庫: use database_name;(指定建立的表應該在哪個資料庫)

2.輸入建表的SQL命令:

CREATE TABLE 表名(

   列名1    列的型別   [約束],

   列名2    列的型別   [約束],

   ....

   列名N    列的型別   約束    

);

注意:最後一行沒有逗號

注意:不能使用MySQL中的關鍵字作為識別符號.

     比如:訂單表(order),但是ORDERSQL中排序的關鍵字.

     解決方案:

              方式1:使用反引號,把關鍵字引起來:`ORDER`.

              方式2:開發中,習慣t_表名;

檢視資料庫中存在哪些表:

SHOW TABLES;

查看錶結構:

DESC table_name;

查看錶的詳細定義:(顯示建立表的語句cd

SHOW CREATE TABLE table_name;(定義表的SQL語句)

刪除表:

DROP TABLE table_name;

表的約束:

表的約束(針對於某一列):

1.非空約束(NK)NOT NULL,不允許某列的內容為空。

2.設定列的預設值:DEFAULT

3.唯一約束(UK)UNIQUE,在該表中,該列的內容必須唯一。

4.主鍵約束:PRIMARY KEY,約束在當前表中,指定列的值非空且唯一

5.主鍵自增長:AUTO_INCREMENT,從1開始,步長為1。(常和主鍵配合使用)

6.外來鍵約束:FOREIGN KEYA表中的外來鍵列.A表中的外來鍵列的值必須參照於B表中的某一列(B表主鍵)可以為NULL

主表:不用依賴其他表,可以獨立存在

從表:外來鍵列的資料要參照於主表中的資料,有外來鍵列的表為從表

主鍵/外來鍵的起名規則:

主鍵:id

外來鍵:xx_id:xx只的是參照表的名詞,productdir_id,也可以簡寫,dir_id


注意:MySQL,InnoDB支援事務和外來鍵.

修改表的儲存引擎為InnoDB:

ALTER TABLE 表名 ENGINE='InnoDB';

開發中,有時從效能考慮,我們會刪除外來鍵.但是依然使用InnoDB儲存引擎.


消除結果中重複的資料。

語法:

SELECT DISTINCT 列名,..

設定列名的別名。

關鍵字:[AS]

1、改變列的標題頭;

2、用於表示計算結果的含義;

3、作為列的別名;

4、如果別名中使用特殊字元,或者是強制大小寫敏感,或有空格時,都需加單引號;--->英文單詞

需求:查詢所有貨品的id,名稱,各進50個,並起別名的成本

SELECT id,productName,costPrice * 50 'price' FROM product

使用別名注意事項:

SQL語句是有一定的執行順序的,如若別名還沒定義出來,就先使用了,就會出錯,如:

SELECT id,productName,salePrice*cutoff pf FROM product WHERE pf>350(錯誤的)

SQL語句是先執行where語句再執行select的,而在執行where時,pf都還定義,故會出錯

SQL的執行順序:

1.先執行FROM子句:  確定查詢哪一張表

2.接著執行WHERE :  過濾篩選條件

3.接著做SELECT  :  確定選擇的列

4.最後做ORDER BY:  對結果集按照某列排序

優先順序:

優先順序         運算子

------------------------------------

1             所有比較運算子

2             NOT

3             AND

4             OR

注意:括號將跨越所有優先順序規則

對結果集排序

使用ORDER BY子句將結果的記錄排序.

ASC : 升序,預設。

DESC: 降序。

ORDER BY 子句出現在SELECT語句的最後。

格式:

SELECT <selectList>

FROM table_name

WHERE 條件

ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;

注意:別名不能使用引號括起來,否則不能排序。(下面的排序將失效)

SELECT *,salePrice*cutoff 'pf' FROM product WHERE productName LIKE '%M%' ORDER BY 'pf'

SELECT語句執行順序:

先執行FROM--->接著執行WHERE--->再執行SELECT--->最後執行ORDER BY