數(shù)據(jù)庫連接池的工作機(jī)制:
服務(wù)器啟動時會建立一定數(shù)量的池連接析桥,并一直維持不少于此數(shù)目的池連接司草。
客戶端程序需要連接時,池驅(qū)動程序會返回一個未使用的池連接并將其標(biāo)記為忙泡仗。
如果當(dāng)前沒有空閑連接埋虹,池驅(qū)動程序就新建一定數(shù)量的連接, 新建連接的數(shù)量有配置參數(shù)決定娩怎。
當(dāng)使用的池連接調(diào)用完成后搔课, 池驅(qū)動程序?qū)⒋诉B接標(biāo)記為空閑,其他調(diào)用就可以使用這個連接峦树。
1. 數(shù)據(jù)庫的基本概念:
數(shù)據(jù)庫的英文單詞:DataBase 簡稱DB ;數(shù)據(jù)庫是用于存儲和管理數(shù)據(jù)庫的倉庫辣辫;
數(shù)據(jù)庫的特點(diǎn): 方便持久存儲數(shù)據(jù), 方便存儲和管理數(shù)據(jù)魁巩, 使用了統(tǒng)一的方式操作數(shù)據(jù)庫急灭;
2. 常見的數(shù)據(jù)庫軟件
3.MySQL的安裝 配置和卸載
4. SQL概念 語法及分類
5.DDL 操作數(shù)據(jù)庫/表(創(chuàng)建 查詢 修改 刪除)
5-a 操作數(shù)據(jù)庫
6. DML增刪改表中的數(shù)據(jù)
eg
7. DQL
7-a : 查詢表中的記錄
7-bDQL查詢語句
b-1 排序
:mysql中常用的數(shù)學(xué)函數(shù)
:mysql中常用的字符串函數(shù)
b-2 聚合函數(shù)
函數(shù) sum()
1、沒有g(shù)roup by谷遂,就只能有一條葬馋,sum得到的是總數(shù)
2、有g(shù)roup by肾扰,就分組了畴嘶,sum得到的是分組后,每一個組的總數(shù)
b-3 分組
b-4分頁查詢
8. 約束
【primary key , unique , auto_increment, not null 】
-================================================================
not null
eg
unique
primary key
auto_increment
eg:
foreign key
9. 數(shù)據(jù)庫的備份和還原
10. Mysql多表查詢
【內(nèi)鏈接查詢,外鏈接查詢 ,子查詢 】
##創(chuàng)建部門表dept
create table dept(
id int primary key auto_increment,
name varchar(20)
);
insert into dept(name) values('開發(fā)部'),('市場部'),('財(cái)務(wù)部');
##創(chuàng)建部門表emp;
insert into emp(id,name,gender,salary,join_date,dept_id)
values (1,'王五','男','9800.21','2011-09-21',1);
insert into emp(id,name,gender,salary,join_date,dept_id)values
(null,'王六','女',8200,'2013-09-23',2),
(null,'趙四','女',7500,'2014-05-10',2),
(null,'張倩','女',6200,'2015-03-15',3);
create table emp(
id int primary key auto_increment,
name varchar(10),
gender char(1),
salary double,
join_date date,
dept_id int,
foreign key (dept_id) references dept(id) -- 外鍵
)
10-a 內(nèi)鏈接查詢
10-a-1 : 隱式 內(nèi)鏈接查詢
10-a-2 : 顯示 內(nèi)鏈接查詢
10-b 外鏈接查詢
10-c 子查詢
聯(lián)合查詢
12.事務(wù)
13. mysql DCL
查詢添加 刪除 用戶
##切換到mysql數(shù)據(jù)庫
use mysql;
##查詢user表
select*from user;
##創(chuàng)建用戶
create user '用戶名'@'主機(jī)名' identified by '密碼';
create user 'tina'@'localhost' identified by 'lyn920921';
create user 'tina'@'%' identified by 'lyn920921';
##刪除用戶
drop user '用戶名'@'主機(jī)名';
drop user 'tina'@'localhost';
14. mysql 常用的儲存引擎
=======================================================================================
數(shù)據(jù)庫的考點(diǎn):多表聯(lián)查送淆,聚合函數(shù)和分組淘衙, 自查詢
1. 簡述數(shù)據(jù)庫查詢語句中淡喜,內(nèi)連接inner join 哼勇,左連接 left join ,右連接 right join 的區(qū)別 契沫?捧毛?欺旧?
a)內(nèi)連接 兩表中數(shù)據(jù)對應(yīng)存在
b) 左連接 左邊表中的數(shù)據(jù)都會顯示姑丑,如果右表中沒有對應(yīng)的數(shù)據(jù)就顯示為空
c) 右連接 右邊表中的數(shù)據(jù)都會顯示,如果左表沒對應(yīng)數(shù)據(jù)辞友,就顯示為空
2.mysql行轉(zhuǎn)列:
···
select ‘姓名’
min( case when '科目' = '語文' then '成績' end ) '語文'
min( case when '科目' = '數(shù)學(xué)' then '成績' end ) '數(shù)學(xué)'
from score
group by '姓名'
···
3. 經(jīng)典的sql
1. 查詢出A表中符合條件的數(shù)據(jù) 插入到B表中對應(yīng)的字段中栅哀;
NSERT INTO student (`id`, `name`, `age`, `sex`, `addr`, `createTime`)
SELECT id, name, age, sex, addr,createTime FROM people
WHERE namein ('tina', 'lily') AND age= '1' and set= "1" and DATE_FORMAT(createTime ,'%Y%m%d')= DATE_FORMAT("20220101",'%Y%m%d') ;
SELECT 'addr' AS typeName,t1.addr as typeValue from (SELECT DISTINCT (addr ) FROM student ) t1
- 求兩門以上(含2門)不及格的學(xué)生信息 及平均分
SELECT
sum(sc.scgrade<60) as cont, s.sname,avg(sc.scgrade)
FROM
t_course AS c,
t_sc AS sc,
t_student AS s
WHERE
c.cid = sc.cid AND s.sid = sc.sid
group by s.sname
having cont>=2;
- 求沒有選修"孑孑"老師課程的所有學(xué)生的姓名
select s.sname from t_student as s where s.sid in (
select sc.sid
from t_course as c left join t_sc as sc
on c.cid=sc.cid where c.cteacher not like "孑孑%");