insert into REGION values ('south','shenzhen');
insert into REGION values ('south','hongkong');
insert into REGION values ('north','beijing');
insert into REGION values ('north','tianjin');
#在表一中插入数据
select * from REGION;
#查看表中的所有数据
insert into FARE values ('shenzhen',1000,'2021-01-30');
insert into FARE values ('hongkong',1500,'2021-01-30');
insert into FARE values ('beijing',800,'2021-01-30');
insert into FARE values ('tianjin',500,'2021-01-30');
insert into FARE values ('hongkong',2000,'2021-02-05');
select * from FARE;
二、SQL 语句高阶运用
1.SELECT
显示表格中一个或数个字段的所有资料
用法:
SELECT 字段 FROM 表名
例:
select region from REGION;
select money from FARE;
2.DISTINCT
不显示重复的资料,及去重
用法:
ELECT DISTINCT 字段 FROM 表名
例:
select distinct region from REGION;
select distinct date from FARE;
3.WHERE
有条件查询
用法:
SELECT 字段 FROM 表名 WHERE 条件
例:
select site from FARE where money > 1000;
select site from FARE where money = 1000;
select site from FARE where money < 1000;
4.AND、OR
且和或
用法:
SELECT 字段 FROM 表名 WHERE 条件1 [AND|OR] (条件2);
例:
select site from FARE where money > 800 and (money < 2000);
select site,money from FARE where money < 600 or (money < 2100 and money >700);
select site,money,date from FARE where money >= 500 and (date < '2021-02-07' and moneyy < 1000);
5.IN
显示已知的资料
用法:
SELECT 字段 FROM 表名 WHERE 字段 IN ('值1','值2',...);
例:
select site,money from FARE where money in (1500,500);
select money,date from FARE where money in (800,2000);
6.BETWEEN
显示两个值范围内的资料
用法:
SELECT 字段 FROM 表名 WHERE 字段 BETWEEN '值1' and '值2';
例:
select * from FARE where money between 500 and 2000;
select * from FARE where money between 666 and 1888;
7.通配符(LIKE)
通常通配符都是跟LIKE一起使用
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符
LIKE:用于匹配模式来查找资料
用法:
SELECT 字段 FROM 表名 WHERE 字段 LIKE ‘模式’;
例:
select * from FARE where site LIKE 'be%';
select * from FARE where site LIKE 'ho%';
select site,money from FARE where site LIKE '%jin_';
select site,money from FARE where site LIKE '%kon_';
8.ORDER BY
按关键字排序
用法:
SELECT 字段 FROM 表名 [WHERE 条件] ORDER BY 字段 [ASC,DESC];
#ASC:按照升序进行排序,默认的排序方式
#DESC:按照降序进行排序
例:
select * from FARE order by money desc;
select * from FARE order by money asc;
select date,money from FARE order by money desc;
select date,money from FARE where money > 999 order by money asc;
select reverse(site) from FARE;
select reverse(date) from FARE;
4.’||'连接符
如果在 mysql 的配置文件中,sql_mode 开启开启了 PIPES_AS_CONCAT,则"||"视为字符串的连接操作符而非或运算符
和字符串的拼接函数 Concat 相类似,这和 Oracle 数据库使用方法一样的
mysql -uroot -p123123
use train_ticket;
select region || ' ' || site from REGION where region = 'north';
select site || ' ' || money || ' ' || date from FARE;
5.GROUP BY
BY 后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在 GROUP BY 后面
用法:
select site,sum(money) from FARE group by site;
select site,sum(money),date from FARE group by site order by money desc;
select site,count(money),sum(money),date from FARE group by site order by money desc;
6.HAVING
用来过滤由 GROUP BY 语句返回的记录集,通常与 GROUP BY 语句联合使用
HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足
如果被 SELECT 的只有函数栏,那就不需要 GROUP BY 子句
用法:
SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1 HAVING(函数条件);
例:
select site,count(money),sum(money),date from FARE group by site having sum(money) >=800;
7.别名
用于字段别名与表格别名
用法:
SELECT “表格別名”.“字段1” [AS] “字段1別名” FROM “表格名” [AS] “表格別名”;
例:
select RE.region AS reg, count(site) from REGION AS RE group by reg;
select FA.site AS si,sum(money),count(money),date AS da from FARE AS FA group by si;
8.子查询
连接表格,在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句
#可以是符号的运算符
#例:=、>、<、>=、<=
#也可以是文字的运算符
#例:LIKE、IN、BETWEEN
例:
select A.site,region from REGION AS A where A.site in(select B.site from FARE AS B where money<2000);
select B.site,money,date from FARE AS B where site in(select A.site from REGION AS A where region = 'north');