**查詢 select
1.查詢所有欄位
select * from 表名
2.查詢某一個欄位
1.基於表
select 欄位名,欄位名 from 表名
2.基於表示式
select 表示式,表示式;
select 3+5,3*5;
3.基於函數
--檢視當前的資料庫
select database();
--檢視當前時間
select now();
--檢視當前的使用者名稱
select user();
--檢視當前資料庫的版本
select version();
**3.**給欄位起別名
select 欄位名 [as]別名 from 表名;
**4.**給表起別名
select 別名.欄位名 from 表名 as 別名;
select a.username from admin as a;
5.資料庫.表名:
select username from news.admin;
**6.**完整格式
select 欄位名 from 表名
[join條件]
[where條件]
[group by分組]
[having欄位(二次篩選)]
[order by欄位升序降序]
[limit限制]
7.where****條件
1.比較:> < = != <> <= >=
select * from admin where id>=2;
2.is[not] null
select * from admin where username is not null;
3.[not]between …and
4.[not]in(值1,值2,值3);
select * from admin where id in(1,2,3);
5.like ‘字串’ 模糊查詢
–查詢admin表使用者名稱是 姓張 開頭
1._:匹配一個字元
2.%:匹配0個1個或者多個字元
select * from admin where username like '張_';
select * from admin where username like '張%';
--查詢使用者名稱中第二個字是張的使用者
select * from admin where username like '_張%';
8.[group by分組]
原理:對欄位相同的值進行分組,顯示分組相同的值得一個結果 一般欄位分組的那個欄位結合聚合函數使用聚合函數
1.count(欄位名):獲得每組的個數(count(*))包含null的值
2.avg(欄位):獲得每組的平均數
3.max(欄位):最大值
4.min(欄位):最小值
5.sum(欄位):求每組的和
9.having 欄位:二次過濾
說明:
1.where條件對欄位過濾
2.having條件是對一個結果的過濾,一般結合group by使用
1.order by 欄位名
升序:asc【預設】
降序:desc
select * from admin order by id desc;
2.limit [偏移量][長度]:獲取前多少條的記錄(新聞數量)
說明:
1.偏移量 offset 起始編號從0開始
2.長度:獲取的記錄數
3.計算偏移量
第一頁: 偏移量0 limit 0,5;
第二頁: 偏移量5 limit 5,5;
第三頁: 偏移量10 limit10,5;
偏移量=(當前頁-1)*長度
**3.**多表聯合查詢
1.格式
select 欄位名,欄位名
from 表1
連線型別 表2
on 兩個表的邏輯關係
連線型別 表2
on 兩個表的邏輯關係
–管理員表
create table cms_admin(
id int unsigned key auto_increment,
username varchar(10) not null unique,
password char(32) not null,
sex tinyint not null default 0,
age tinyint not null
);
–建立cms_type
create table cms_type(
id int unsigned key auto_increment,
tname varchar(10) not null unique
);
–建立cms_news
create table cms_news(
id int unsigned key auto_increment,
title varchar(30) not null,
content text not null,
aid int not null,
tid int not null,
addtime timestamp not null default current_timestamp
);
–1.查詢cms_admin,cms_type,cms_news
– 欄位:新聞id,釋出人是誰,新聞的標題
select n.id,username,title
from cms_admin as a
join cms_news as n
on a.id = n.aid
join cms_type as t
on t.id=n.tid;
–2.查詢每個管理員釋出的新聞數量
–欄位:管理員id,管理員名稱,釋出新聞的數量
select a.id,username,count(*)
from cms_admin as a
join cms_news as n
on a.id = n.aid
group by n.aid;
–3.每個分類下發布的新聞個數
–欄位:分類的id 分類的名稱 新聞個數
select t.id,tname,count(*)
from cms_type as t
join cms_news as n
on t.id = n.tid
group by n.tid;
–4.查詢cms_news,分類編號是2
– 的 按照addtime降序排序 的前2條記錄
select * from cms_news
where tid=2
order by addtime desc
limit 0,2;