學(xué)java的小亂 2019-12-18 16:49:37 MySQL基礎(chǔ)語法 DDL定義 創(chuàng)建數(shù)據(jù)庫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ù)庫 查看數(shù)據(jù)庫SHOW DATABASES; --查看所有數(shù)據(jù)庫 SHOW CREATE DATABASE 數(shù)據(jù)庫名; --查看某個庫的定義信息 SELECT DATABASE(); -- 查看正在使用的數(shù)據(jù)庫 Use 數(shù)據(jù)庫名; -- 使用/切換數(shù)據(jù)庫 修改和刪除數(shù)據(jù)庫ALTER DATABASE 數(shù)據(jù)庫名 DEFAULT CHARACTER SET 新字符集; --修改數(shù)據(jù)庫字符集 DROP DATABASE 數(shù)據(jù)庫名; --刪除數(shù)據(jù)庫 創(chuàng)建表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 表名; -- 判斷表是否存在并刪除表 修改表結(jié)構(gòu)ALTER TABLE 表名 ADD 字段名 字段類型; --添加列 ALTER TABLE 表名 MODIFY 字段名 新的類型; --修改列類型 ALTER TABLE 表名 CHANGE 老字段名 新字段名 類型; --修改列名 ALTER TABLE 表名 DROP 字段名; --刪除列 RENAME TABLE 舊表名 TO新表名; --修改表名 ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集; --修改表的字符集 DML插入記錄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)...; DML更新表記錄UPDATE 表名 SET 字段名=新的值; --不帶條件修改數(shù)據(jù) UPDATE 表名 SET 字段名=新的值 WHERE 條件; --帶條件修改數(shù)據(jù) DML刪除表記錄DELETE FROM 表名 WHERE 字段名=值; --帶條件刪除數(shù)據(jù) DELETE FROM 表名; --不帶條件刪除數(shù)據(jù),刪除所有數(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 蠕蟲復(fù)制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 DQL查詢語句語法格式: SELECT 字段 FROM 表名 WHERE 條件; 比較運算符>`大于 `<`小于 `<=`小于等于 `>=`大于等于 `=`等于 `<>`、`!=`不等于 邏輯運算符AND(&&) 多個條件同時滿足 OR(||) 多個條件其中一個滿足 NOT(!) 不滿足 關(guān)鍵字in: in() in里面每個數(shù)據(jù)都會作為一次條件,只要滿足的就會顯示 模糊查詢likeLIKE 像 像什么什么一樣 SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;--滿足通配符字符串的數(shù)據(jù)就會顯示 MySQL通配符有兩個: %:表示任意多個字符 _:表示一個字符 DQL查詢語句-排序關(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; DQL查詢語句-聚合函數(shù)COUNT: 統(tǒng)計記錄數(shù),記錄為NULL的不統(tǒng)計 SUM: 計算指定列數(shù)值的和,如果不是數(shù)值類型,那么結(jié)果為0 MAX: 計算指定列最大值 MIN: 計算指定列最小值 AVG: 計算指定列平均值 聚合函數(shù)的使用: 寫在SQL語句SELECT后 SELECT 聚合函數(shù)(字段名) FROM 表名; DQL查詢語句-分組分組一般和聚合函數(shù)一起使用,單獨分組沒卵用 關(guān)鍵字: GROUP BY 將字段中相同值作為一組,返回第一條數(shù)據(jù) SELECT * FROM 表名 GROUP BY 字段名; SELECT * FROM 表名 WHERE 條件 GROUP BY 字段名; DQL查詢語句-limit語句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)操作級聯(lián)更新: ON UPDATE CASCADE主表更新時,從表跟著更新 級聯(lián)刪除: ON DELETE CASCADE 主表刪除時,從表跟著刪除 內(nèi)連接隱式內(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 條件; 子查詢作為表需要取別名,否則這張表沒有名稱無法訪問表中的字段 事務(wù)四大特性: 1.原子性 2.一致性 3.隔離性 4.持久性 START TRANSACTION; 開啟事務(wù) COMMIT; 提交事務(wù) ROLLBACK; 回滾事務(wù) 每條SQL語句都是一個單獨的事務(wù),自開自提,通過設(shè)置可以關(guān)閉自動提交事務(wù)。 關(guān)閉自動提交事務(wù): SET AUTOCOMMIT= 0; 0:OFF(關(guān)) 1:ON(開) 回滾點設(shè)置回滾點: SAVEPONIT 回滾點名字; 回到回滾點: ROLLBACK TO 回滾點; JDBC訪問數(shù)據(jù)庫步驟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é)果集 JDBC實現(xiàn)對單表數(shù)據(jù)查詢關(guān)鍵字ResultSet 調(diào)用next方法,ResultSet內(nèi)部指針回移動到下一行數(shù)據(jù),有數(shù)據(jù)則返回true,無則false 調(diào)用getXXX(),方法獲取數(shù)據(jù): 參數(shù)是字符串則根據(jù)字段名獲取值; 參數(shù)是整數(shù)則通過字段序號獲取值 JDBC事務(wù)Connection接口與事務(wù)有關(guān)的方法: SQLException(false/ture); false:開啟事務(wù) ture :關(guān)閉事務(wù) commit(); 提交事務(wù) rollback(); 回滾事務(wù) PreparedSatement使用步驟編寫SQL語句,位置內(nèi)容使用?占位: SELECT * FROM user WHERE name=? AND password=?; 參數(shù)化的SQL 設(shè)置參數(shù): setXXX(第幾個?, ?的具體值); 用executeQuery() 、executeUpdate() 執(zhí)行SQL語句 |
|