顯示數據庫語句:java
SHOW DATABASES 只是顯示數據庫的名字sql
顯示數據庫建立語句:數據庫
SHOW CREATE DATABASE db_namejsp
數據庫刪除語句:函數
DROP DATABASE [IF EXISTS] db_name排序
建立數據庫事務
create database day15 -- 指定默認字符集建立數據庫rem
-> default character set utf8字符串
-> ;servlet
查看數據庫的默認字符集
show create database day15;
刪除數據庫
drop database day15;
修改數據庫
alter database day15 default character set gbk;
查看全部表
show tables;
建立表
create table student[A1] (
-> sid[A2] int[A3] ,
-> sname varchar(20)[A4] ,
-> sage int
-> );
查看錶結構
desc student;
刪除表
drop table student;
修改表
1)添加字段
alter table student add column sgender varchar(2);
2)刪除字段
alter table student drop column sgender;
3)修改字段類型
alter table student modify column remark varchar(100);
4)修改字段名稱
alter table student change column sgender gender varchar(2);
5)修改表名稱
alter table student rename to teacher;
增刪改數據
1.1 增長數據
-- 插入全部字段。必定依次按順序插入
INSERT INTO student VALUES(1,'張三','男',20);
-- 注意不能少或多字段值
-- INSERT INTO student VALUES(2,'李四','女');
-- 插入部分字段
INSERT INTO student(id,NAME) VALUES(2,'李四');
-- 1.2 修改數據
-- 修改全部數據(建議少用)
UPDATE student SET gender='女';
-- 帶條件的修改(推薦使用)
UPDATE student SET gender='男' WHERE id=1; -- 修改id爲1的學生,修改性別爲男
-- 修改多個字段,注意: SET 字段名=值,字段名=值,....
UPDATE student SET gender='男',age=30 WHERE id=2;
1.3 刪除數據
-- 刪除全部數據(建議少用)
DELETE FROM student;
-- 帶條件的刪除(推薦使用)
DELETE FROM student WHERE id=2;
-- 另外一種方式
-- delete from: 能夠全表刪除 1)能夠帶條件刪除 2)只能刪除表的數據,不能刪除表的約束 3)使用delete from刪除的數據能夠回滾(事務)
-- truncate table: 能夠全表刪除 1)不能帶條件刪除 2)便可以刪除表的數據,也能夠刪除表的約束 3)使用truncate table刪除的數據不能回滾
TRUNCATE TABLE student;
查詢數據(重點)
1 查詢全部列
SELECT * FROM student;
2 查詢指定列
SELECT id,NAME,gender FROM student;
3.查詢時添加常量列
需求: 在查詢student表時添加一個班級列,內容爲「java就業班」
SELECT id,NAME,gender,age,'java就業班' AS '年級' FROM student;
4 查詢時合併列
查詢每一個學生的servlet和jsp的總成績
SELECT id,NAME,(servlet+jsp) AS '總成績' FROM student;
-- 注意:合併列只能合併數值類型的字段
SELECT id,(NAME+servlet) FROM student;
5.查詢時去除重複記錄
查詢時去除重複記錄(DISTINCT)
-- 需求: 查詢學生的性別 男 女
SELECT DISTINCT gender FROM student;
-- 另外一種語法
SELECT DISTINCT(gender) FROM student;
-- 需求: 查詢學生所在的地區
SELECT DISTINCT address FROM student;
6 條件查詢
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:表示沒有值
-- 空字符串:有值的!
-- 判斷null
SELECT * 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 '李_';
7 聚合查詢
2.8 聚合查詢(使用聚合函數的查詢)
-- 經常使用的聚合函數: sum() avg() max() min() count()
-- 需求:查詢學生的servlet的總成績 (sum() :求和函數)
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;
-- 需求: 統計當前有多少學生(count(字段))
SELECT COUNT(*) FROM student;
SELECT COUNT(id) FROM student;
-- 注意:count()函數統計的數量不包含null的數據
-- 使用count統計表的記錄數,要使用不包含null值的字段
SELECT COUNT(age) FROM student;
8 分頁查詢
2.9 分頁查詢(limit 起始行,查詢幾行)
-- 起始行從0開始
-- 分頁:當前頁 每頁顯示多少條
-- 分頁查詢當前頁的數據的sql: SELECT * FROM student LIMIT (當前頁-1)*每頁顯示多少條,每頁顯示多少條;
-- 需求: 查詢第1,2條記錄(第1頁的數據)
SELECT * FROM student LIMIT 0,2;
-- 查詢第3,4條記錄(第2頁的數據)
SELECT * FROM student LIMIT 2,2;
查詢第5,6條記錄(第3頁的數據)
SELECT * FROM student LIMIT 4,2;
-- 查詢第7,8條記錄 (沒有記錄不顯示)
SELECT * FROM student LIMIT 6,2;
9 查詢排序
2.10 查詢排序(order by )
-- 語法 :order by 字段 asc/desc
-- asc: 順序,正序。數值:遞增,字母:天然順序(a-z)
-- desc: 倒序,反序。數值:遞減,字母:天然反序(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;
10 分組查詢
2.11 分組查詢(group by)
-- 需求: 查詢男女的人數
-- 預期結果:
-- 男 3
--- 女 2
-- 1) 把學生按照性別分組(GROUP BY gender)
-- 2) 統計每組的人數(COUNT(*))
SELECT gender,COUNT(*) FROM student GROUP BY gender;
11 分組查詢後篩選
2.12 分組查詢後篩選
-- 需求: 查詢總人數大於2的性別
-- 1) 查詢男女的人數
-- 2)篩選出人數大於2的記錄(having)
--- 注意: 分組以前條件使用where關鍵字,分組以前條件使用having關鍵字
SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;