網(wǎng)站頂部地圖代碼怎么做環(huán)球網(wǎng)廣東疫情最新消息
文章目錄
- MySQL高級語句
- older by 排序
- 區(qū)間判斷查詢
- 或與且(or 與and)
- 嵌套查詢(多條件)
- 查詢不重復(fù)記錄distinct
- count 計(jì)數(shù)
- 限制結(jié)果條目limit
- 別名as
- 常用通配符
- 嵌套查詢(子查詢)
- 同表
- 不同表
- 嵌套查詢還能用于刪除
- 嵌套查詢還可以用于修改表格
- 視圖
- 內(nèi)連接 左連接 右連接
- 內(nèi)連接
- 左連接
- 右連接
- 結(jié)語
MySQL高級語句
1構(gòu)建測試用表
create table test1 (id int primary key,name char(30) not null,gpa decimal(3,2),hobbid int(2));
insert into test1 values(1,'baijiahe',3.3,2);
insert into test1 values(2,)'Hu Zexing',2.9,2);
....
older by 排序
1.order by 排序默認(rèn)升序
select * from test1 order by gpa;
2.添加desc 選線可以降序排序
select * from test1 order by gpa desc;
3.order by 還可以使用where來過濾數(shù)據(jù)
select * from test1 where hobbid=4 order by gpa desc;
4.order by 還可以多個(gè)數(shù)值一起排序
select * from test order by gpa,hobbid,id desc;
上面表示按績點(diǎn)(gpa)排名,分?jǐn)?shù)相同的按照hobbid來序排序hobbid相同按照 id降序排序
select * from test order by gpa desc,hobbid desc,id desc;
區(qū)間判斷查詢
查詢GPA大于2.7的數(shù)據(jù)
select * from test1 where gpa>2.7;
或與且(or 與and)
查詢GPA>2.7或者id=7的數(shù)據(jù)
select * from test1 where gpa>2.7 or id=7;
查詢GPA>2.7且GPA<=3.2的數(shù)據(jù)
select * from test1 where gpa>2.7 and gpa<=3.2;
嵌套查詢(多條件)
查找gpa>2.4且(id大于4或者h(yuǎn)obbid=2)的數(shù)據(jù)
select * from test1 where gpa>2.4 and(id>4 or hobbid=2);
查詢不重復(fù)記錄distinct
select distinct hobbid from test;
查詢test表格中 hobbid項(xiàng)中不重復(fù)的數(shù)據(jù)
count 計(jì)數(shù)
統(tǒng)計(jì)一個(gè)有多少數(shù)據(jù)(包括空行),count(主鍵名)則不包括空行
select count(*) from test1;
統(tǒng)計(jì)表中hobbid不同的個(gè)數(shù)
select count(distinct hobbid) from test1;
限制結(jié)果條目limit
注:本文忽略第0行
顯示表至第二行
select * from test1 limit 2;
從第二行開始顯示,至第五行
select * from test1 limit 2,5
查詢前五
select * from test1 order by gpa desc limit 1,5;
別名as
使用別名顯示
select name 名字, gpa 績點(diǎn) from test1;
創(chuàng)建表別名
create table t1 as select * from test1;
用別名查詢
select name,gpa from t1;
常用通配符
1.% - 通配符,匹配任何數(shù)量的字符。
2._ - 通配符,匹配任何單個(gè)字符。
例如
mysql> SELECT * FROM t1 AS t WHERE t.name LIKE 'w%';
SELECT * FROM test1 WHERE gpa LIKE '3___';
嵌套查詢(子查詢)
創(chuàng)建一個(gè)新表,用作實(shí)驗(yàn)
create table money(id int primary key,money decimal(15,2));
insert into money values (1,3000);
insert into money values (2,5000);
insert into money values (3,1300);
insert into money values (4,6000);
insert into money values (5,2800);
insert into money values (6,2300);
insert into money values (7,3300);
insert into money values (8,9200);
insert into money values (10,3154);
insert into money values (11,31575);
insert into money values (12,8547);
insert into money values (13,8745);
insert into money values (14,900);
同表
select id,gpa from test1 where id in (select id from test1 where gpa=>2.7)
上面這個(gè)SQL語句含義是,首先運(yùn)行括號內(nèi)的SQL語句,輸出運(yùn)行結(jié)果到達(dá)括號外的SQL語句,最為條件運(yùn)行。
可以理解為上個(gè)SQL語句效果相當(dāng)于SELECT id, gpa FROM test1 WHERE id=1 OR id=2 OR id=3 OR id=4 OR id=5 OR id=9;
不同表
select id,money from money where id in (select id from test1);
上面這個(gè)SQL語句含義是,首先運(yùn)行括號內(nèi)的SQL語句,輸出運(yùn)行結(jié)果到達(dá)括號外的SQL語句,最為條件運(yùn)行。
可以理解為上個(gè)SQL語句效果相當(dāng)于select id,money from money where id=6 or id=7 or id=8 or id=9 or id=10;
嵌套查詢還能用于刪除
創(chuàng)建一個(gè)測試用的表test2
用select查詢是否是要刪除的值
是直接將select換成delete就可以刪除了
create table test2 (select * from test1);
select * from text2 where id in (select id from test1 where gpa<=2.7);
delete * from text2 where id in (select id from test1 where gpa<=2.7);
嵌套查詢還可以用于修改表格
將money表的id=1的用戶money數(shù)改為1000
update money set money='1000' where id in(select id from test1 where id=1);
子查詢,別名as
當(dāng)運(yùn)行
select id from (select id,name from test1);
會報(bào)錯
原因?yàn)?#xff1a;
select * from 表名 此為標(biāo)準(zhǔn)格式,而以上的查詢語句,“表名"的位置其實(shí)是一個(gè)完整結(jié)果集,mysql并不能直接識別,而此時(shí)給與結(jié)果集設(shè)置一個(gè)別名,以”select a.id from a“的方式查詢將此結(jié)果集視為一張"表”,就可以正常查詢數(shù)據(jù)了,如下:
select a.id from (select id,name from test) a;
相當(dāng)于
select test.id,name from test;
select 表.字段,字段 from 表;
在MySQL中,視圖(View)是一種虛擬表,它由一個(gè)SQL查詢定義,但并不存儲數(shù)據(jù)。視圖的本質(zhì)是一條SQL查詢語句,它的結(jié)果集看起來像是一張表。視圖可以用來簡化復(fù)雜的SQL操作,提供數(shù)據(jù)的安全性和獨(dú)立性,以及為用戶提供一個(gè)更加直觀的數(shù)據(jù)表示。
視圖
在MySQL中,視圖(View)是一種虛擬表,它由一個(gè)SQL查詢定義,但并不存儲數(shù)據(jù)。視圖的本質(zhì)是一條SQL查詢語句,它的結(jié)果集看起來像是一張表。視圖可以用來簡化復(fù)雜的SQL操作,提供數(shù)據(jù)的安全性和獨(dú)立性,以及為用戶提供一個(gè)更加直觀的數(shù)據(jù)表示。
CREATE VIEW 試圖名 AS SELECT 字段1, 字段2, ... FROM 表名 WHERE 判斷句;
create view test_view as select name,gpa from test1 where id<=10;
使用視圖
select * from test_view;
查看視圖與源表結(jié)構(gòu)
desc test_view;
修改視圖
update test_view set gpa=3.9 where name=Shirakanga ;
將視圖的Shirakanga的gpa改成3.9原表也會自動修改
內(nèi)連接 左連接 右連接
內(nèi)連接
內(nèi)連接是SQL中的一種連接查詢,用于合并兩個(gè)或多個(gè)表中具有匹配值的行。只有當(dāng)連接條件在兩個(gè)表中都匹配時(shí),內(nèi)連接才會返回這些行,內(nèi)連接只返回兩個(gè)表中都有匹配的記錄的結(jié)果集。
SELECT test1.id, test1.name, money.id, money.money FROM test1 INNER JOIN money ON test1.id = money.id;
左連接
左連接是一種SQL連接操作,它返回左表(LEFT JOIN子句之前的表)的所有記錄,即使右表中沒有匹配的記錄。如果右表中有匹配的記錄,則左連接還會返回右表中的匹配記錄。如果右表中沒有匹配的記錄,則結(jié)果集中右表的部分將包含NULL。
select * from test1 left join money on test1.id=money.id;
右連接
右連接(Right Join)是一種SQL連接操作,它返回右表(RIGHT JOIN子句之后的表)的所有記錄,即使左表中沒有匹配的記錄。如果左表中有匹配的記錄,則右連接還會返回左表中的匹配記錄。如果左表中沒有匹配的記錄,則結(jié)果集中左表的部分將包含NULL。
SELECT * FROM test1 RIGHT JOIN money ON test1.id = money.id;
結(jié)語
- ORDER BY 排序:
- 升序排序:
ORDER BY column_name
- 降序排序:
ORDER BY column_name DESC
- 多條件排序:
ORDER BY column1, column2 DESC
- 升序排序:
- 區(qū)間判斷查詢:
- 查詢滿足特定條件的數(shù)據(jù):
WHERE column_name BETWEEN value1 AND value2
- 查詢滿足特定條件的數(shù)據(jù):
- 或與且(OR 與 AND):
- 組合多個(gè)條件進(jìn)行查詢:
WHERE column_name = 'value' OR column_name2 = 'value2'
- 組合多個(gè)條件進(jìn)行查詢:
WHERE column_name = 'value' AND column_name2 = 'value2'
- 組合多個(gè)條件進(jìn)行查詢:
- 查詢不重復(fù)記錄(DISTINCT):
- 去除重復(fù)記錄:
SELECT DISTINCT column_name FROM table_name
- 去除重復(fù)記錄:
- COUNT 計(jì)數(shù):
- 統(tǒng)計(jì)記錄數(shù):
SELECT COUNT(*) FROM table_name
- 統(tǒng)計(jì)記錄數(shù):
- 限制結(jié)果條目(LIMIT):
- 限制結(jié)果數(shù)量:
LIMIT offset, limit_number
- 限制結(jié)果數(shù)量:
- 別名(AS):
- 為列設(shè)置別名:
SELECT column_name AS alias_name FROM table_name
- 為表設(shè)置別名:
SELECT * FROM table_name AS alias_name
- 為列設(shè)置別名:
- 常用通配符:
%
:匹配任何數(shù)量的字符。_
:匹配任何單個(gè)字符。