對SQL簡單介紹、資料庫、表的簡單操作
1.SQL語句簡單介紹:
SQL(結構化查詢語言(Structured Query Language))包含6個部分(資料查詢語言DQL、資料操作語言DML、資料定義語言DDL、事務處理語言TPL、資料控制語言DCL、指標控制語言CCL),在Java中常用的有三種,DQL、DML、DDL:
一:資料查詢語言(DQL):
其語句,也稱為“資料檢索語句”,用以從表中獲得資料,確定資料怎樣在應用程式給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他型別的SQL語句一起使用。
二:資料操作語言(DML):
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用於新增,修改和刪除表中的行。也稱為動作查詢語言。
三:資料定義語言(DDL):
其語句包括動詞CREATE和DROP。在資料庫中建立新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與資料庫目錄中獲得資料有關的保留字。它也是動作查詢的一部分。
四:事務處理語言(TPL):
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
五:資料控制語言(DCL):
它的語句通過
六:指標控制語言(CCL):
它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE 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中,日期時間值使用單引號引起來。 相當於Java中Date,Calender
4.表的操作:
建立表:
1.先進入某一個數據庫: use database_name;(指定建立的表應該在哪個資料庫)
2.輸入建表的SQL命令:
CREATE TABLE 表名(
列名1 列的型別 [約束],
列名2 列的型別 [約束],
....
列名N 列的型別 約束
);
注意:最後一行沒有逗號
注意:不能使用MySQL中的關鍵字作為識別符號.
比如:訂單表(order),但是ORDER是SQL中排序的關鍵字.
解決方案:
方式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 KEY,A表中的外來鍵列.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