什么是數據查詢
數據庫的查詢是對數據表中現(xiàn)有的數據進行逐行篩選的工作,它按照要求從符合查詢條件的記錄中把指定的字段值提取出來,形成一個結果呈顯給用戶。由于記錄集的結構實際上和表的結構是相同的,都是由多行組成,因此,在記錄集上依然可以進行再次查詢。
簡單查詢
SELECT今在SQL語句中使用頻率是最高的。在SELECT 語句中包含大量的子句,用于完成不同的查詢功能,如排序 ( ORDER BY )*條件查詢 (WHERE) 分組( GROUP BY)等。
基本語法:
select _list : 用戶要查詢的字段列表,“ * ” 代表所有字段。
table_ name: 用戶要查詢信息的表(表或視圖)。
where:查詢的篩選條件開始關鍵字。
search_ condition:查詢條件的內容。
orderby: 關鍵字,標明查詢結果的排列順序。
order_ expression: 按著哪些字段進行排序。
asc:標明是升序排序。
desc:將結果集按照降序排序。
limit: 限制每次查詢出來的數據條數。
為什么使用別名
當直接使用SELECT查詢后,由于在設計數據庫時使用的都是英文的字段名,而且有的字段名不是很好理解,對用戶來說不夠直觀,例如在上一個示例程序中“StudentID”不如“學號”直觀。在查詢語句中可以使用AS、空格為查詢結果中的列重新命名,重命名后的列名稱為原有列的別名。例如,將查詢結果中的StudentID改為”學號”、“StudentName”改為“姓名”、“Gender” 改為“性別”、“Age"改為“年齡”等。別名比較方便,容易記,易懂。
使用Order By 進行查詢排序
查詢排序都有幾種
單列排序和多列排序,同時還可以進行升序和降序排列。
單列排序:是指按照表中的某一個列進行排序,即 OEDERY BY 子句后面只有一個列名。
多列排序: MySQL 除了支持單列排序外,還可以按多列排序。多列排序時,Order by 子句后面多個字段,字段之間用逗號隔開,每個字段后面都可以跟 ASC 或 DESC。
MySQL 的內置函數
MySQL 中的內置函數從功能上可以分為:字符串函數、日期和時間函數、數學函數等
-- 創(chuàng)建數據庫
create database if not exists school ;
-- 使用數據庫
use school ;
-- 創(chuàng)建表
create table studentinfo(
id int auto_increment primary key ,
`name` varchar(20),
sex char ,
age int ,
address varchar(50)
);
-- 插入數據
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 ;
-- 限制查詢結果的個數 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 開始位置,顯示的條數
-- 復合
select * from studentinfo where sex ='女' order by age desc limit 2 ;
-- 別名 as 且可以省略
select id as 學號, `name`as 名字 ,sex as 性別, age as 年齡,address as 地址 from studentinfo ;
select id 學號 , `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;