2.2 什么是數(shù)據(jù)庫軟件
數(shù)據(jù)庫橄杨,俗稱數(shù)據(jù)的倉庫秘症。方便管理數(shù)據(jù)的軟件(或程序)。
2.4 MySQL入門
1)到mysql官網(wǎng)下載式矫。
2)安裝mysql軟件
3)使用登錄驗證是否成功
SQL語言:和數(shù)據(jù)庫交互的語言乡摹,進行數(shù)據(jù)庫管理的語言。(Structure Query Lanuage采转,結(jié)構(gòu)化查詢語言)
mysql -u root -p? 回車? -> 輸入密碼(登錄root賬戶的mysql服務(wù)器)
show databases;(查看所有的數(shù)據(jù)庫)
information_schema |? ? -- mysql元數(shù)據(jù)聪廉,基礎(chǔ)數(shù)據(jù)
| mysql? ? ? ? ? ? ? |? ? —mysql配置 數(shù)據(jù)庫,其中包含用戶信息故慈。(用戶名和密碼板熊,權(quán)限管理)
| performance_schema |? ? --mysql數(shù)據(jù)庫軟件的運行數(shù)據(jù),日志信息察绷,性能數(shù)據(jù)
| test? ? ? ? ? ? ? |? ? --測試數(shù)據(jù)庫干签。空的
create database day15? ? ? -- 指定默認字符集創(chuàng)建數(shù)據(jù)庫
-> default character set?
-> ;(create 數(shù)據(jù)庫完畢不加分號拆撼,回車加指定字符集)
show create database day15; 查看數(shù)據(jù)庫的默認字符集
drop database day15;刪除數(shù)據(jù)庫
alter database day15 default character set gbk;修改數(shù)據(jù)庫
use ?數(shù)據(jù)庫名
show tables;查看所有表
create table student( 創(chuàng)建表
-> sid int,
-> sname varchar(20),
-> sage int
-> );
desc student;查看表結(jié)構(gòu)
drop table student;刪除表
修改表
alter table student add column sgender varchar(2);添加字段
alter table student drop column sgender; 刪除字段
alter table student modify column remark varchar(100);修改字段類型
alter table student change column sgender gender varchar(2);修改字段名稱
alter table student rename to teacher;修改表名稱
增刪改數(shù)據(jù)庫
-- 注意不能少或多字段值
-- INSERT INTO student VALUES(2,'李四','女');
-- 插入部分字段
INSERT INTO student(id,NAME) VALUES(2,'李四');
1.2 修改數(shù)據(jù)
-- 修改所有數(shù)據(jù)(建議少用)
UPDATE student SET gender='女';
-- 帶條件的修改(推薦使用)
UPDATE student SET gender='男' WHERE id=1; -- 修改id為1的學(xué)生容劳,修改性別為男
-- 修改多個字段,注意: SET 字段名=值,字段名=值,....
UPDATE student SET gender='男',age=30 WHERE id=2;
-- 1.3 刪除數(shù)據(jù)
-- 刪除所有數(shù)據(jù)(建議少用)
DELETE FROM student;
-- 帶條件的刪除(推薦使用)
DELETE FROM student WHERE id=2;
--? 另一種方式
-- delete from: 可以全表刪除? ? ? 1)可以帶條件刪除? 2)只能刪除表的數(shù)據(jù),不能刪除表的約束? ? 3)使用delete from刪除的數(shù)據(jù)可以回滾(事務(wù))
-- truncate table: 可以全表刪除? 1)不能帶條件刪除 2)即可以刪除表的數(shù)據(jù)闸度,也可以刪除表的約束 3)使用truncate table刪除的數(shù)據(jù)不能回滾(SQL數(shù)據(jù)庫優(yōu)化可以用它來)
TRUNCATE TABLE student;
查詢數(shù)據(jù)庫
select ID竭贩,name,gender from student莺禁;查詢指定列
select id AS ‘編號’留量,name AS ‘姓名’ from student AS s; 指定列的別名(指定后可以用別名訪問也可以用原名稱訪問)指定表別名睁宰,不能用單引號肪获,不能用漢字寝凌,在多表查詢是經(jīng)常食用表的別名柒傻。
2.4 查詢時添加常量列
-- 需求: 在查詢student表時添加一個班級列,內(nèi)容為“java就業(yè)班”
SELECT id,NAME,gender,age,'java就業(yè)班' AS '年級'? FROM student;
2.5 查詢時合并列
-- 需求: 查詢每個學(xué)生的servlet和jsp的總成績
SELECT id,NAME,(servlet+jsp) AS '總成績' FROM student;
-- 注意:合并列只能合并數(shù)值類型的字段
SELECT id,(NAME+servlet) FROM student;
- 2.6 查詢時去除重復(fù)記錄( distinct)?
-- 需求: 查詢學(xué)生的性別? ? 男 女
SELECT DISTINCT gender FROM student;()(distinct做關(guān)鍵字來用)
-- 另一種語法
SELECT DISTINCT(gender) FROM student;(distinct做函數(shù)來用)
-- 需求: 查詢學(xué)生所在的地區(qū)
SELECT DISTINCT address FROM student;()
條件查詢(where)
-- 2.7.1 邏輯條件: and(與)? ? or(或)
-- 需求: 查詢id為2较木,且姓名為李四的學(xué)生
SELECT * FROM student WHERE id=2 AND NAME='李四'; -- 交集
-- 需求: 查詢id為2红符,或姓名為張三的學(xué)生
SELECT * FROM student WHERE id=2 OR NAME='張三'; -- 并集
-- 2.7.2 比較條件: >? <? >=? <=? =? <>(不等于)? ? between and (等價于>= 且 <=)
-- 需求: 查詢servlet成績大于70分的學(xué)生
SELECT * FROM student WHERE servlet>70;
-- 需求: 查詢jsp成績大于等于75,且小于等于90分的學(xué)生
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 / =''? / <>''
-- 需求: 查詢地址為空的學(xué)生(包括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和空字符串)
-- 需求: 查詢有地址的學(xué)生(不包括null和空字符串)
SELECT * FROM student WHERE address IS NOT NULL AND address<>'';
-- 2.7.4 模糊條件: like
-- 通常使用以下替換標記:
-- % : 表示任意個字符
-- _ : 表示一個字符
-- 需求: 查詢姓‘張’的學(xué)生
SELECT * FROM student WHERE NAME LIKE '李%';
-- 需求: 查詢姓‘李’预侯,且姓名只有兩個字的學(xué)生
SELECT * FROM student WHERE NAME LIKE '李_';
-- 2.8 聚合查詢(使用聚合函數(shù)的查詢)
-- 常用的聚合函數(shù): sum()? avg()? max()? min()? count()
-- 需求:查詢學(xué)生的servlet的總成績 (sum() :求和函數(shù))
SELECT SUM(servlet) AS 'servlet的總成績' FROM student;
-- 需求: 查詢學(xué)生的servlet的平均分
SELECT AVG(servlet) AS 'servlet的平均分' FROM student;
-- 需求: 查詢當(dāng)前servlet最高分
SELECT MAX(servlet) AS '最高分' FROM student;
-- 需求: 查詢最低分
SELECT MIN(servlet) AS '最低分' FROM student;
-- 需求: 統(tǒng)計當(dāng)前有多少學(xué)生(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;
2.9 分頁查詢(limit 起始行,查詢幾行)
-- 起始行從0開始
-- 分頁:當(dāng)前頁? 每頁顯示多少條
-- 分頁查詢當(dāng)前頁的數(shù)據(jù)的sql: SELECT * FROM student LIMIT (當(dāng)前頁-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ù)
-- 預(yù)期結(jié)果:
--? 男? 3
--- 女? 2
-- 1) 把學(xué)生按照性別分組(GROUP BY gender)
-- 2) 統(tǒng)計每組的人數(shù)(COUNT(*))
SELECT gender,COUNT(*) FROM student GROUP BY gender;
2.12 分組查詢后篩選
-- 需求: 查詢總?cè)藬?shù)大于2的性別
-- 1) 查詢男女的人數(shù)
-- 2)篩選出人數(shù)大于2的記錄(having)
--- 注意: 分組之前條件使用where關(guān)鍵字塘辅,分組之后條件使用having關(guān)鍵字
SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;