小白sql简述二

学习目标:

基础语句使用

学习内容:

增、删、改、查

学习产出:

-- 高级操作
SELECT * FROM websites LIMIT 5;
#使用LIMIT对websites表前5条进行选取展示
SELECT * FROM websites WHERE `name` LIKE 'G%';
#使用like对name字段中以字母”G“开始的所有用户,%号放在后面表示**开始
SELECT * FROM websites WHERE `name` LIKE '%K';
#同样的语句,将%号放在前面表示**结尾
SELECT * FROM websites WHERE `name` LIKE '%oo%';
#将%号放在了对应字段中数据的两侧,则表示包含的关系,即websites表中,neme字段中包含oo的所有用户
SELECT * FROM websites WHERE `name` NOT LIKE "%oo%";
#NOT作为关键字使用,即表示name字段中不包含”oo“的所有用户
-- 通配符
-- % 模糊查询使用
SELECT * FROM websites WHERE url LIKE "https%";
#like配合%进行搜索字段url中以https开始的所有网站
SELECT * FROM websites WHERE NAME LIKE "_oogle";
SELECT * FROM websites WHERE country LIKE "_S_";
#link配合_进行搜索,name以任意一个字符开始的所有用户,-表示任意字符
SELECT * FROM websites WHERE `name` REGEXP "^[GF]";
#REGEXP,通配符用来操作正则表达式使用,选择name字段中G,F开始的所有数据
SELECT * FROM websites WHERE `name` REGEXP"^[A-H]";
#选择name字段中以A-H开头的网址
SELECT * FROM websites WHERE `name` REGEXP"^[^A-H]";
#选择name字段中不以A-H开头的网址
SELECT * FROM websites WHERE `name`IN('Google','菜鸟教程');
#查询name字段中Google或菜鸟教程的所有网址,WHERE语句中in运行操作查询多个值,也可转成表达式:SELECT * FROM websites WHERE `name`='Google' OR `name`='菜鸟教程';
SELECT * FROM websites WHERE alexa BETWEEN 1 AND 20;
#查询alexa字段中,1和20之间的所有网站,使用BETWEEN操作谁和谁之间的数据。
SELECT * FROM websites WHERE alexa NOT BETWEEN 1 AND 20;
#查询alexa字段中,不在1和20之间的所有网站,使用 NOT BETWEEN操作不是谁和谁之间的数据。
SELECT * FROM websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA','IND');
#查询alexa介于1和20之间,和country不为USA和IND的所有网站,这其中使用AND进行连接,两个不同条件使用()号包起来
SELECT * FROM websites WHERE `name` BETWEEN 'A'AND'H';
#查询name字段中以A和H之间字母开始的网站
SELECT * FROM websites WHERE `name` NOT BETWEEN 'A'AND'H';
#查询name字段中不以A和H之间字母开始的网站
SELECT * FROM access_log;
SELECT * FROM access_log WHERE date BETWEEN '2016-5-10'AND'2016-5-14';
#查询access_log表中,date字段中10号-14号的之间的记录
SELECT `name` AS n,country AS c FROM websites;
#设置一个表中某个字段为别名使用AS
SELECT `name`,CONCAT(url,',',alexa,',',country) AS site_id FROM websites;
#把三个列组合在一起,创建一个别名site_id
SELECT w.`name`,w.url,a.count,a.date FROM websites AS w,access_log AS a WHERE a.site_id=w.id AND w.NAME="菜鸟教程";
SELECT Websites.NAME,Websites.url,access_log.count,access_log.date FROM Websites,access_log WHERE Websites.id=access_log.site_id AND Websites.NAME="菜鸟教程";
#对两个表指定一个别名,w和a,通过别名进行查询可以缩短sql语句
SELECT websites.id ,websites.name,access_log.count,access_log.date
FROM websites INNER JOIN access_log ON websites.id=access_log.site_id;
#通过内连接inner join from表1在表2中,在通过表1的id与表2site_id的联系进行查询
SELECT websites.`name`,access_log.count,access_log.date,websites.url
FROM websites INNER JOIN access_log ON websites.id=access_log.site_id ORDER BY access_log.count;
#通过内连接表1中id和表2中的site_id,查询出现所有网站的数据,对count按照正序进行排列
#使用inner join进行内连查询时,至少表1和表2存在一个返回行的数据否则查询失效
SELECT websites.`name`,access_log.count,access_log.date 
FROM websites LEFT JOIN access_log ON websites.id=access_log.site_id ORDER BY access_log.count DESC;
#LEFT JOIN 做链接,根据左表的关键字进行查询,匹配右表对应数据,即使右表中没有匹配也能显示左表的所有行
INSERT INTO access_log (aid,site_id,count,date) VALUES('12','9','113','2016-12-19');
#插入一条数据在accrs_log 表中,该数据在websites表中没有匹配数据
SELECT * FROM access_log;
SELECT websites.name,access_log.count,access_log.date
FROM websites RIGHT JOIN access_log ON access_log.site_id=websites.id
ORDER BY access_log.count DESC;
#通过查询看看是否添加成功,再使用右链接进行连表查询,新插入的数据在左表中没有匹配,返回就是null
#右链接查询,从右表返回所有的行,即使左表中没有匹配也会返回出null
SELECT Websites.NAME,access_log.count,access_log.date 
FROM Websites FULL OUTER JOIN access_log ON Websites.id=access_log.site_id ORDER BY access_log.countDESC;
#mysql不支持full outer join语法
SELECT country FROM Websites UNION
SELECT country FROM apps
ORDER BY country;
#使用UNION 操作符用于合并两个或多个 SELECT 语句的结果集,筛选出表1和表2中所有不同的country的值
SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;
#使用union all选取重复的值,列表所有country值(包括重复的)
SELECT country,`name` FROM websites WHERE country='CN'
UNION ALL 
SELECT country,app_name FROM apps WHERE country='CN' ORDER BY country ;
#代入查询条件 的 union all 从表1和表2中选取所有的中国数据,包括重复值,按照升序排列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值