@java
數據庫的概念
1)結構化查詢語言(Structured Query Language)簡稱SQL;
2)數據庫管理系統(Database Management System)簡稱DBMS;
3)數據庫管理員(Database Administration)簡稱DBA,功能是確保DBMS的正常高效運行;mysql
SQL經常使用的3個部分
1)數據查詢語言(DQL):其語句也稱「數據庫檢索語句」,用以從表中得到數據,保留字SELECT常常使用,DQL也是全部SQL中用的最多的,其餘保留字還有WHERE, ORDER BY, GROUP BY和HAVING這些保留字還與DML一塊兒使用;
2)數據操做語言(DML):其他局包括動詞INSERT,UPDATE和DELETE。他們分別用於添加,修改和刪除表中的行。也稱動做語言;
3)數據定義語言(DDL):DDL主要用於操做數據庫。sql
MySQL: | Java: INT | int BIGINT | long DECIMAL | BigDecimal DATE/DATETIME | java.util.Date VARCHAR | String
mysql -uroot -padmin;
show databases
create database 數據庫名稱;
drop database 數據庫名稱;;
# 修改數據庫編碼格式 alter database 數據庫名稱 charset=編碼格式;
show tables;
表的約束
1)非空約束:NOT NULL,不容許某列的內容爲空;
2)設置列的默認值:DEFAULT;
3)惟一約束:UNIQUE,該表中,該列的內容必須惟一;
4)主鍵約束:PRIMARY KEY,非空且惟一;
5)主鍵自增加:AUTO_INCREMENT,從1開始,步長爲1;
6)外鍵約束:FOREIGN KEY,A表中的外鍵列。A表中的外鍵列的值必須參照於B表中的某一列(B表主鍵)。數據庫
建表
1)建表語法:函數
列名1 列的類型 [約束], 列名2 列的類型 [約束], ... 列名N 列的類型 [約束] ); // 注意:最後一行沒有逗號
例子:創建一個學生表(t_student)有id name email age
注意:建表不要使用關鍵字編碼
## 若是表存在就移除,由於不能存在兩個同樣名稱的表 DROP TABLE IF EXISTS 't_student'; CREATE TABLE t_student( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(25) UNIQUE, email VARCHAR(25) NOT NULL, age INT DEFAULT 17 );
DROP TABLE 表名;
UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE [條件]
// 一、將張三改成獨孤求敗 UPDATE t_student SET name="獨孤求敗" WHERE name="張三";
注意:不要省略where條件子句,省略的話,全表數據都會被修改。code
INSERT INTO 表名 (列1,列2,...) VALUE (值1,值2,...);
// 一、插入完整數據記錄 INSERT INTO t_student (name, email, age) VALUE ("xiaoming", "xiao@qq.com", 16); // 二、插入部分數據記錄 INSERT INTO t_student (name, age) VALUE ("xiaoming", 16); // 三、插入查詢結果 INSERT INTO t_student(name, email, age) SELECT name,email,age FROM t_student;
DELETE FROM 表名 WHERE [條件]
// 刪除 id 爲 2 的學生信息 DELETE FROM t_student WHERE id = 2;
注意:Where子句別省略,不然全表的數據都會被刪除。blog
SELECT DISTINCT 列名, ... FROM 表名;
算術運算符的使用範圍
1)對 number 型數據能夠使用算術運算符(+,-,*,/)對數據進行操做;對date型數據能夠使用部分算術運算符(+,-)對數據進行操做。排序
算術運算符的優先級
1)與數學中運算相同ci
實戰
// 查詢全部貨物的id,名稱和批發價(折扣價=銷售價*折扣) SELECT id, productName, salePrice * disCount From product;
做用
1)改變列的標題頭;
2)做爲計算結果的含義;
3)做爲列的別名;
4)若是別名使用特殊字符(強烈不建議使用特殊字符),或是強制大小寫或有空格時都須要加單引號。
語法
// 第一種 SELECT 列名 AS 別名 FROM 表名 [WHERE]; // 第二種 SELECT 列名 別名 FROM 表名 [WHERE];
// 查詢全部貨物的id,名稱和折扣價價(折扣價=銷售價*折扣)(使用別名) SELECT id, productName, salePrice * disCount AS price From product;
1)爲了方便用戶瀏覽查詢結果數據,有時須要設置查詢結果的顯示格式,能夠使用CONCAT函數來鏈接字符串。
CONCAT(字符串1, 字符串2, ...)
// 查詢商品的名字和零售價。格式:xxx商品的零售價爲:ooo SELECT CONCAT(productName, " 商品的零售價爲:", salePrice) FROM product;
1)使用WHERE子句限定返回的記錄。
SELECT <selectList> FROM 表名 WHERE 條件;
注意:WHERE子句在FROM子句以後。
1)不等於:<> 等價 !=;
// 查詢商品名爲 羅技G9X 的貨品信息 SELECT * FROM product WHERE productName = "羅技G9X"; // 查詢批發價大於350的貨品信息(折扣價 = 銷售價*折扣) SELECT *, salePrice * discount FROM product WHERE salePrice * discount > 350;
1)AND:若是組合的田間都是 true,返回true;
2)OR:若是組合的條件之一是true,返回true;
3)NOT:若是給出的條件是false,返回true;若是給出的條件是true,則返回false。
// 查詢售價在300-400(包括300和400)的貨品信息 SELECT * FROM product WHERE salePrice >= 300 ADN salePrice <= 400; // 查詢分類編號爲2, 4的全部貨品信息 SELECT * FROM product WHERE dir_id = 2 OR dir_id = 4; // 查詢編號不爲2的全部商品信息 SELECT * FROM product WHERE NOT dir_id = 2
1)範圍匹配:BETWEEN AND 運算符,通常使用在數字類型的範圍上。但對於字符數據和日期類型一樣可用。
注意:BETWEE AND 使用的是閉區間。
// 使用的是閉區間,也就是包括minValue 和 maxValue WHERE 列名 BETWEEN minValue AND maxValue;
// 查詢零售價不在 300 - 400 之間的貨品信息 SELECT * FROM product WHERE NOT salePrice BETWEEN 300 AND 400;
2)集合查詢:使用 IN 運算符,判斷列的值是否在指定的集合中。
WHERE 列名 IN (值1, 值2, ...);
// 查詢分類編號爲 2,4 的全部貨品的 id,貨品名稱 SELECT id, productName FROM product WHERE dir_id IN (2,4); // 查詢分類編號不爲 2, 4 的全部貨品的 id,貨品名稱 SELECT id, dir_id, productName FROM product WHERE NOT dir_id IN (2,4);
1)IS NULL:判斷列的值是否爲空值,非空字符串,空字符串使用 == 判斷;
WHERE 列名 IS NULL;
// 查詢商品名爲NULL的全部商品信息 SELECT * FROM product WHERE productName IS NULL; SELECT * FROM product WHERE supplier = "";
結論:使用 = 來判斷只能判斷空字符串,不能判斷 null;而使用 IS NULL 只能判斷 null 值,不能判斷空字符串。
1)LIKE:模糊查詢數據使用 LIKE 運算執行通配符;
2)通配符:% 表示可有零個或多個任意字符; _ 即是須要一個任意字符;
WHERE 列名 LIKE "%M_";
// 查詢貨品名稱以 羅技M9* 結尾的全部貨品信息,這裏的 * 表示一個任意字符,它不具有任何意義,只是我出於題目須要才這樣寫,便於你理解而已 SELECT * FROM product WHERE productName LIKE "%羅技M9_";
1)ORDER BY:使用 ORDER BY子句將查詢結果進行排序,ORDER BY子句出如今 SELECT 語句的最後;
2)ASC:升序;DESC:降序;
// 查詢 id,貨品名稱,分類編號,零售價 按分類編號降序排序,若是分類編號相同再按零售價升序排序 SELECT * FROM product ORDER BY dir_id DESC, salePrice ASC;
1)FROM字句:從哪張表中去查數據;
2)WHERE字句:篩選須要的行數據;
3)SELECT字句:篩選須要顯示的列數據;(AS 起別名是在這時候,因此 WHERE 中不能用別名,ORDER BY 中能夠使用別名)
4)ORDER BY字句:排序操做。
概念
1)COUNT(*):統計表中有多少條數據;
2)SUM(列):彙總列的總和;
3)MAX(列):獲取某一列的最大值;
4)MIN(列):獲取某一列的最小值;
5)AVG(列):獲取某一列的平均值;
實戰
// 查詢貨品表共有多少數據 SELECT COUNT(*) FROM product; // 計算全部貨品的銷售價 SELECT SUM(costPrice) FROM product;
以上就是對 MYSQL的 SQL 語句的總結了,代碼僅供參考,歡迎討論交流。