基本操作
查看數(shù)據(jù)庫
| <code>show databases;</code> |
指定字符集
| <code>create database day15 default character set utf8</code> |
查看字符集
| <code>show create database day15;</code> |
刪除
| <code>drop database day15</code> |
修改字符集
| <code>alter database day15 default character set gbk;</code> |
使用數(shù)據(jù)庫
| <code>USE day15;</code> |
查看所有表
| <code>SHOW TABLES; </code> |
創(chuàng)建表
| <code>CREATE TABLE student(id INT,NAME VARCHAR(20),gender VARCHAR(2),age INT)</code> |
查看表結構:
| <code>DESC student;</code> |
刪除表
| <code>DROP TABLE student;</code> |
增
| <code>-- 插入所有字段。一定依次按順序插入INSERT INTO student VALUES(1,'張三','男',20);-- 注意不能少或多字段值-- INSERT INTO student VALUES(2,'李四','女');-- 插入部分字段INSERT INTO student(id,NAME) VALUES(2,'李四');</code> |
改
| <code>-- 修改所有數(shù)據(jù)(建議少用)UPDATE student SET gender='女';-- 帶條件的修改(推薦使用)UPDATE student SET gender='男' WHERE id=1;-- 修改id為1的學生,修改性別為男-- 修改多個字段,注意: SET 字段名=值,字段名=值,....UPDATE student SET gender='男',age=30 WHERE id=2;</code> |
刪
| <code>-- 刪除所有數(shù)據(jù)(建議少用)DELETE FROM student;-- 帶條件的刪除(推薦使用)DELETE FROM student WHERE id=2;-- 和另一種方式比較-- delete from: 可以全表刪除 1)可以帶條件刪除 3)使用delete from刪除的數(shù)據(jù)可以回滾(事務)-- truncate table: 可以全表刪除 1)不能帶條件刪除 2)即可以刪除表的數(shù)據(jù),也可以刪除表的約束 3)使用truncate table刪除的數(shù)據(jù)不能回滾TRUNCATE TABLE student;</code> |
查
| <code>-- 2.1 查詢所有列SELECT * FROM student;-- 2.2 查詢指定列SELECT id,NAME,gender FROM student;-- 2.3 查詢時指定別名(as)-- 注意: 在多表查詢是經常使用表的別名SELECT id AS '編號',NAME AS '姓名' FROM student;-- 2.4 查詢時添加常量列-- 需求: 在查詢student表時添加一個班級列,內容為“java就業(yè)班”SELECT id,NAME,gender,age,'java就業(yè)班' AS '年級' FROM student;-- 2.5 查詢時合并列-- 需求: 查詢每個學生的servlet和jsp的總成績SELECT id,NAME,(servlet+jsp) AS '總成績' FROM student;-- 注意:合并列只能合并數(shù)值類型的字段SELECT id,(NAME+servlet) FROM student;-- 2.6 查詢時去除重復記錄(DISTINCT)-- 需求: 查詢學生的性別 男 女SELECT DISTINCT gender FROM student;-- 另一種語法SELECT DISTINCT(gender) FROM student;-- 需求: 查詢學生所在的地區(qū)SELECT DISTINCT address FROM student;-- 2.7 條件查詢(where)-- 2.7.1 邏輯條件: and(與) or(或)-- 需求: 查詢id為2,且姓名為李四的學生SELECT * FROM student WHERE id=2 AND NAME='李四'; -- 交集-- 需求: 查詢id為2,或姓名為張三的學生SELECT * FROM student WHERE id=2 OR NAME='張三'; -- 并集-- 2.7.2 比較條件: > < >= <= = <>(不等于) between and (等價于>= 且 <=)-- 需求: 查詢servlet成績大于70分的學生SELECT * FROM student WHERE servlet>70;-- 需求: 查詢jsp成績大于等于75,且小于等于90分的學生SELECT * FROM student WHERE jsp>=75 AND jsp<=90;-- 另一個語法SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后)SELECT * FROM student WHERE gender<>'男';-- 2.7.3 判空條件(null 空字符串): is null / is not null / ='' / <>''-- 需求: 查詢地址為空的學生(包括null和空字符串)-- null vs 空字符串-- null:表示沒有值-- 空字符串:有值的!-- 判斷nullSELECT * FROM student WHERE address IS NULL ;-- 判斷空字符串SELECT * FROM student WHERE address='';SELECT * FROM student WHERE address IS NULL OR address=''; -- (包括null和空字符串)-- 需求: 查詢有地址的學生(不包括null和空字符串)SELECT * FROM student WHERE address IS NOT NULL AND address<>'';-- 2.7.4 模糊條件: like-- 通常使用以下替換標記:-- % : 表示任意個字符-- _ : 表示一個字符-- 需求: 查詢姓‘張'的學生SELECT * FROM student WHERE NAME LIKE '李%';-- 需求: 查詢姓‘李',且姓名只有兩個字的學生SELECT * FROM student WHERE NAME LIKE '李_';-- 2.8 聚合查詢(使用聚合函數(shù)的查詢)-- 常用的聚合函數(shù): sum() avg() max() min() count()-- 需求:查詢學生的servlet的總成績 (sum() :求和函數(shù))SELECT SUM(servlet) AS 'servlet的總成績' FROM student;-- 需求: 查詢學生的servlet的平均分SELECT AVG(servlet) AS 'servlet的平均分' FROM student;-- 需求: 查詢當前servlet最高分SELECT MAX(servlet) AS '最高分' FROM student;-- 需求: 查詢最低分SELECT MIN(servlet) AS '最低分' FROM student;-- 需求: 統(tǒng)計當前有多少學生(count(字段))SELECT COUNT(*) FROM student;SELECT COUNT(id) FROM student;-- 注意:count()函數(shù)統(tǒng)計的數(shù)量不包含null的數(shù)據(jù)-- 使用count統(tǒng)計表的記錄數(shù),要使用不包含null值的字段SELECT COUNT(age) FROM student;SELECT * FROM student;-- 2.9 分頁查詢(limit 起始行,查詢幾行)-- 起始行從0開始-- 分頁:當前頁 每頁顯示多少條-- 分頁查詢當前頁的數(shù)據(jù)的sql: SELECT * FROM student LIMIT (當前頁-1)*每頁顯示多少條,每頁顯示多少條;-- 需求: 查詢第1,2條記錄(第1頁的數(shù)據(jù))SELECT * FROM student LIMIT 0,2;-- 查詢第3,4條記錄(第2頁的數(shù)據(jù))SELECT * FROM student LIMIT 2,2;-- 查詢第5,6條記錄(第3頁的數(shù)據(jù))SELECT * FROM student LIMIT 4,2;-- 查詢第7,8條記錄 (沒有記錄不顯示)SELECT * FROM student LIMIT 6,2;-- 2.10 查詢排序(order by )-- 語法 :order by 字段 asc/desc-- asc: 順序,正序。數(shù)值:遞增,字母:自然順序(a-z)-- desc: 倒序,反序。數(shù)值:遞減,字母:自然反序(z-a)-- 默認情況下,按照插入記錄順序排序SELECT * FROM student;-- 需求: 按照id順序排序SELECT * FROM student ORDER BY id ASC;SELECT * FROM student ORDER BY id; -- 默認正序SELECT * FROM student ORDER BY id DESC;-- 反序-- 注意:多個排序條件-- 需求: 按照servlet正序,按照jsp的倒序SELECT * FROM student ORDER BY servlet ASC,jsp DESC;-- 2.11 分組查詢(group by)-- 需求: 查詢男女的人數(shù)-- 預期結果:-- 男 3--- 女 2-- 1) 把學生按照性別分組(GROUP BY gender)-- 2) 統(tǒng)計每組的人數(shù)(COUNT(*))SELECT gender,COUNT(*) FROM student GROUP BY gender;-- 2.12 分組查詢后篩選-- 需求: 查詢總人數(shù)大于2的性別-- 1) 查詢男女的人數(shù)-- 2)篩選出人數(shù)大于2的記錄(having)--- 注意: 分組之前條件使用where關鍵字,分組之前條件使用having關鍵字SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;</code> |