基礎(chǔ)語法
DDL定義
CREATR DATABASE 數(shù)據(jù)庫名; --直接創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫名; --判斷是否存在并創(chuàng)建
CREATE DATABASE 數(shù)據(jù)庫名 CHARACTER SET `GBK`; --創(chuàng)建指定格式數(shù)據(jù)庫
SHOW DATABASES; --查看所有數(shù)據(jù)庫
SHOW CREATE DATABASE 數(shù)據(jù)庫名; --查看某個庫的定義信息
SELECT DATABASE(); -- 查看正在使用的數(shù)據(jù)庫
Use 數(shù)據(jù)庫名; -- 使用/切換數(shù)據(jù)庫
ALTER DATABASE 數(shù)據(jù)庫名 DEFAULT CHARACTER SET 新字符集; --修改數(shù)據(jù)庫字符集
DROP DATABASE 數(shù)據(jù)庫名; --刪除數(shù)據(jù)庫
CREATE TABLE 表名(字段名 數(shù)據(jù)類型,字段名 數(shù)據(jù)類型); -- 創(chuàng)建表
CREATE TABLE 表名 LIKE 新表名; -- 快速創(chuàng)建愛你一個表結(jié)構(gòu)相同的表
SHOW TABLES; --查看數(shù)據(jù)庫中所有表
DESC 表名; -- 查看表結(jié)構(gòu)
SHOW CREATE TABLE 表名; --查看創(chuàng)建表的SQL語句
DROP TABLE 表名; -- 直接刪除表
DROP TABLE IF EXISTS 表名; -- 判斷表是否存在并刪除表
ALTER TABLE 表名 ADD 字段名 字段類型; --添加列
ALTER TABLE 表名 MODIFY 字段名 新的類型; --修改列類型
ALTER TABLE 表名 CHANGE 老字段名 新字段名 類型; --修改列名
ALTER TABLE 表名 DROP 字段名; --刪除列
RENAME TABLE 舊表名 TO新表名; --修改表名
ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集; --修改表的字符集
INSERT INTO 表名(字段名1,字段名2...) VALUES (字段值1,字段值2); --插入全部字段
省略寫法: INSERT INTO 表名 VALUES (字段值1,字段值2);
沒有添加數(shù)據(jù)的字段可以使用NULL
插入多條數(shù)據(jù):
INSERT INTO 表名(字段名1,字段名2...) VALUES (字段值1,字段值2),(字段值1,字段值2)...;
UPDATE 表名 SET 字段名=新的值; --不帶條件修改數(shù)據(jù)
UPDATE 表名 SET 字段名=新的值 WHERE 條件; --帶條件修改數(shù)據(jù)
DELETE FROM 表名 WHERE 字段名=值; --帶條件刪除數(shù)據(jù)
DELETE FROM 表名; --不帶條件刪除數(shù)據(jù),刪除所有數(shù)據(jù)
PRIMARY KEY 主鍵約束 UNIQUE 唯一約束
NOT NULL 不為空
DEFAULT 默認(rèn)約束
FOREIGH KEY 外鍵約束
ALTER TABLE 表名 ADD PRIMARY KEY(字段名); --已有表添加主鍵
ALTER TABLE 表名 DROP PRIMARY KEY; --刪除主鍵
AUTO_INCREMENT 主鍵自增(整數(shù)類型自動增長)
ALTER TABLE 表名 AUTO_INCREMENT=起始值; 修改自增起始值
DELETE和TRUNCATE/ 前者只刪除表中數(shù)據(jù),后者刪除數(shù)據(jù)的同時,重置主鍵自增的值為1
CREATE TABLE 表2 LIKE 表1; --創(chuàng)建表2結(jié)構(gòu)和表1結(jié)構(gòu)一樣
INSERT INTO 表名2 SELECT * FROM 表名1; --表1的數(shù)據(jù)復(fù)制到表2
語法格式:
SELECT 字段 FROM 表名 WHERE 條件;
>`大于
`<`小于
`<=`小于等于
`>=`大于等于
`=`等于
`<>`、`!=`不等于
AND(&&) 多個條件同時滿足
OR(||) 多個條件其中一個滿足
NOT(!) 不滿足
關(guān)鍵字in:
in() in里面每個數(shù)據(jù)都會作為一次條件,只要滿足的就會顯示
LIKE 像 像什么什么一樣
SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;--滿足通配符字符串的數(shù)據(jù)就會顯示
MySQL通配符有兩個:
%:表示任意多個字符
_:表示一個字符
關(guān)鍵字:
ORDER BY 字段名 [ASC|DESC]
ASC:升序 DESC:降序
單列排序:
使用字段數(shù)據(jù)排序
SELECT * FROM 表名 ORDER BY 字段名 DESC;
組合排序:
當(dāng)字段1數(shù)據(jù)有相同時,再用字段2數(shù)據(jù)進(jìn)行排序
SELECT * FROM 表名 WHERE 條件 ORDER BY 字段名1 ASC, 字段名2 ASC;
COUNT: 統(tǒng)計記錄數(shù),記錄為NULL的不統(tǒng)計
SUM: 計算指定列數(shù)值的和,如果不是數(shù)值類型,那么結(jié)果為0
MAX: 計算指定列最大值
MIN: 計算指定列最小值
AVG: 計算指定列平均值
聚合函數(shù)的使用: 寫在SQL語句SELECT后
SELECT 聚合函數(shù)(字段名) FROM 表名;
分組一般和聚合函數(shù)一起使用,單獨(dú)分組沒卵用
關(guān)鍵字: GROUP BY 將字段中相同值作為一組,返回第一條數(shù)據(jù)
SELECT * FROM 表名 GROUP BY 字段名;
SELECT * FROM 表名 WHERE 條件 GROUP BY 字段名;
LIMIT語句格式:
SELECT * FROM 表名 WHERE 條件 LIMIT offset, length;
offset 指偏移量,可以認(rèn)為是跳過的記錄數(shù)量,不寫則默認(rèn)為0
length 指需要顯示的總記錄數(shù)
使用:
SELECT * FROM 表名 LIMIT offset,length;
新建表時增加外鍵:
CREATE TABLE 表名(
字段名 字段類型,
字段名 字段類型,
-- 外鍵約束
[CONSTRAINT 外鍵約束名] FOREIGN KEY(外鍵字段名) REFERENCES 主表名(主鍵)
);
已有表時增加外鍵:
ALTER TABLE 從表 ADD [CONSTRAINT 外鍵約束名] FOREIGN KEY(外鍵字段名)
REFERENCES 主表(主鍵字段名);
刪除外鍵:
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵約束名;
級聯(lián)更新: ON UPDATE CASCADE主表更新時,從表跟著更新
級聯(lián)刪除: ON DELETE CASCADE 主表刪除時,從表跟著刪除
隱式內(nèi)連接:看不到JOIN關(guān)鍵字,條件使用WHERE指定
SELECT 字段 FROM 表1,表2 WHERE 條件;
顯式內(nèi)連接:使用INNER JOIN ... ON語句,可以省略INNER
SELECT 字段 FROM 左表 INNER JOIN 右表 ON 表連接條件 WHERE 查詢條件;
SELECT 字段 FROM 左表 LEFT OUTER JOIN 右表 ON 表連接條件 WHERE 查詢條件;
單行單列: 在WHELE 后面作為條件
SELECT 查詢字段FROM 表 WHERE 字段=(子查詢);
多行單列: 在WHERE 后面作為條件
SELECT 查詢字段 FROM 表 WHERE 字段 IN (子查詢);
多行多列: 在FROM后面作為表
SELECT 查詢字段FROM (子查詢) 表別名 WHERE 條件;
子查詢作為表需要取別名,否則這張表沒有名稱無法訪問表中的字段
四大特性: 1.原子性 2.一致性 3.隔離性 4.持久性
START TRANSACTION; 開啟事務(wù)
COMMIT; 提交事務(wù)
ROLLBACK; 回滾事務(wù)
每條SQL語句都是一個單獨(dú)的事務(wù),自開自提,通過設(shè)置可以關(guān)閉自動提交事務(wù)。
關(guān)閉自動提交事務(wù): SET AUTOCOMMIT= 0; 0:OFF(關(guān)) 1:ON(開)
設(shè)置回滾點(diǎn):
SAVEPONIT 回滾點(diǎn)名字;
回到回滾點(diǎn):
ROLLBACK TO 回滾點(diǎn);
1. Class.forName(“com.mysql.jdbc.driver”); --注冊驅(qū)動
2. DriverManager.getConnection(“URL”, ”User”, “PassWord”); --連接數(shù)據(jù)庫
3. 調(diào)用 .createStatement() 獲取Statement對象執(zhí)行SQL語句
Statement對象的API介紹:
Boolean execute(String sql) --執(zhí)行任何SQL語句,如果是查詢語句返回true,不是返回false
Int executeUpdate(String sql) --用于執(zhí)行增刪改語句;返回影響的行數(shù)
ResultSet executeQuery(String sql) --執(zhí)行查詢語句;返回查詢到的結(jié)果集
關(guān)鍵字ResultSet
調(diào)用next方法,ResultSet內(nèi)部指針回移動到下一行數(shù)據(jù),有數(shù)據(jù)則返回true,無則false
調(diào)用getXXX(),方法獲取數(shù)據(jù):
參數(shù)是字符串則根據(jù)字段名獲取值; 參數(shù)是整數(shù)則通過字段序號獲取值
Connection接口與事務(wù)有關(guān)的方法:
SQLException(false/ture); false:開啟事務(wù) ture :關(guān)閉事務(wù)
commit(); 提交事務(wù)
rollback(); 回滾事務(wù)
編寫SQL語句,位置內(nèi)容使用?占位:
SELECT * FROM user WHERE name=? AND password=?; 參數(shù)化的SQL
設(shè)置參數(shù):
setXXX(第幾個?, ?的具體值);
用executeQuery() 、executeUpdate() 執(zhí)行SQL語句
聯(lián)系客服