什么是數(shù)據(jù)查詢
數(shù)據(jù)庫的查詢是對數(shù)據(jù)表中現(xiàn)有的數(shù)據(jù)進行逐行篩選的工作,它按照要求從符合查詢條件的記錄中把指定的字段值提取出來,形成一個結(jié)果呈顯給用戶余掖。由于記錄集的結(jié)構(gòu)實際上和表的結(jié)構(gòu)是相同的,都是由多行組成,因此聂使,在記錄集上依然可以進行再次查詢。
簡單查詢
SELECT今在SQL語句中使用頻率是最高的谬俄。在SELECT 語句中包含大量的子句柏靶,用于完成不同的查詢功能,如排序 ( ORDER BY )*條件查詢 (WHERE) 分組( GROUP BY)等溃论。
基本語法:
select _list : 用戶要查詢的字段列表屎蜓,“ * ” 代表所有字段。
table_ name: 用戶要查詢信息的表(表或視圖)钥勋。
where:查詢的篩選條件開始關(guān)鍵字炬转。
search_ condition:查詢條件的內(nèi)容。
orderby: 關(guān)鍵字算灸,標明查詢結(jié)果的排列順序扼劈。
order_ expression: 按著哪些字段進行排序。
asc:標明是升序排序乎婿。
desc:將結(jié)果集按照降序排序测僵。
limit: 限制每次查詢出來的數(shù)據(jù)條數(shù)。
為什么使用別名
當直接使用SELECT查詢后,由于在設(shè)計數(shù)據(jù)庫時使用的都是英文的字段名捍靠,而且有的字段名不是很好理解沐旨,對用戶來說不夠直觀,例如在上一個示例程序中“StudentID”不如“學(xué)號”直觀榨婆。在查詢語句中可以使用AS磁携、空格為查詢結(jié)果中的列重新命名,重命名后的列名稱為原有列的別名良风。例如谊迄,將查詢結(jié)果中的StudentID改為”學(xué)號”、“StudentName”改為“姓名”烟央、“Gender” 改為“性別”统诺、“Age"改為“年齡”等。別名比較方便疑俭,容易記粮呢,易懂。
使用Order By 進行查詢排序
查詢排序都有幾種
單列排序和多列排序钞艇,同時還可以進行升序和降序排列啄寡。
單列排序:是指按照表中的某一個列進行排序,即 OEDERY BY 子句后面只有一個列名哩照。
多列排序: MySQL 除了支持單列排序外挺物,還可以按多列排序。多列排序時飘弧,Order by 子句后面多個字段识藤,字段之間用逗號隔開,每個字段后面都可以跟 ASC 或 DESC眯牧。
MySQL 的內(nèi)置函數(shù)
MySQL 中的內(nèi)置函數(shù)從功能上可以分為:字符串函數(shù)蹋岩、日期和時間函數(shù)赖草、數(shù)學(xué)函數(shù)等
-- 創(chuàng)建數(shù)據(jù)庫
create database if not exists school ;
-- 使用數(shù)據(jù)庫
use school ;
-- 創(chuàng)建表
create table studentinfo(
id int auto_increment primary key ,
`name` varchar(20),
sex char ,
age int ,
address varchar(50)
);
-- 插入數(shù)據(jù)
insert into studentinfo (`name` ,sex ,age ,address )values ("張三封",'男',58,'武當山'),
("張無忌","男",18,"日月神教"),
("小鄒","女",18,"峨嵋派"),
("趙敏","女" , 19 ,"蒙古"),
("小昭","女",20,"日月神教");
-- 模糊查詢
select *from studentinfo ;
-- 完整查詢
select id ,`name` ,sex ,age , address from studentinfo ;
-- 條件查詢
select *from studentinfo where sex="男";
select *from studentinfo where age > 18;
-- 排序学少,按照年齡進行排序 order by 排序 asc 升降 desc 降序
select *from studentinfo order by age asc ;
-- 限制查詢結(jié)果的個數(shù) limit
select * from studentinfo order by age asc;
select * from studentinfo order by age asc limit 2 ;
select * from studentinfo order by age asc limit 3,4 ; -- 索引從0 開始計算 limit 開始位置,顯示的條數(shù)
-- 復(fù)合
select * from studentinfo where sex ='女' order by age desc limit 2 ;
-- 別名 as 且可以省略
select id as 學(xué)號, `name`as 名字 ,sex as 性別, age as 年齡,address as 地址 from studentinfo ;
select id 學(xué)號 , `name ` 名字 ,sex 性別 , age 年齡 ,address 地址 from studentinfo ;
-- and or
select * from studentinfo where sex="女" and age >18; -- 兩個條件都要滿足
select * from studentinfo where sex="男" or age >18; -- 只要有一個條件滿足
-- not 不等于
select * from studentinfo where age!= 18 ;
select * from studentinfo where age<>18 ;
select * from studentinfo where not (age =18) ;
-- 去重
select distinct name from studentinfo;