Linux-MySQL基本命令-SQL语句
服务端命令SQL
在数据库系统中,SQL语句不区分大小写(建议用大写)
SQL语句可单行或多行书写,以“;”结尾
关键词不能跨多行或简写
用空格和缩进来提高语句的可读性
子句通常位于独立行,便于编辑,提高可读性
注释:
SQL标准:
/*注释内容*/ 多行注释
-- 注释内容 单行注释,注意有空格
MySQL注释:
#
SQL优化
查询时,能不要*就不用*,尽量写全字段名
大部分情况连接效率远大于子查询
多表连接时,尽量小表驱动大表,即小表 join 大表
在千万级分页时使用limit
对于经常使用的查询,可以开启缓存
多使用explain和profile分析查询语句
查看慢查询日志,找出执行时间长的sql语句优化
sql查询:单表查询和多表查询
两张表合并:横向合并、纵向合并
纵向合并:两张表挑出相同的字段进行合并(注意顺序)
范例
SQL查询范例
1、给表的字段名添加别名
select stuid as 学生编号,name 姓名,gender 性别 from students;
2、查询年龄大于40的
select * from students where age >40;
3、查找年龄大于20小于40的
select * from students where age < 40 and age > 20;
select * from students where age between 20 and 40;(这种是包含)
4、查询以姓名以X开头的
select * from students where name like 'x%';
5、查找字段中为空值得信息
select * from students where classid is null;
6、查找字段值不为空得信息
select * from students where classid is not null;
7、查找报1,2,6班得学生信息
select * from students where classid in (1,2,6);
8、查找年龄,并去掉重复得年龄
select distinct age from students;
9、查询年龄,去掉重复并排序
select distinct age from students order by age;(默认正序)
select distinct age from students order by age desc;(倒叙)
10、统计students表总共有多少行
select count(*) from students;
11、统计age年龄的总和
select sum(age) from students;
12、统计年龄最大的
select max(age) from students;
13、统计男女平均年龄
select gender,avg(age) from students group by gender;
14、分别统计每班的女生男生平均成绩(gender性别classid班级age成绩)
select gender,classid,avg(age) from students group by gender, classid;
15、基于上条再统计女生的最大年龄
select gender,max(age) from students group by gender having gender='f';
备注:分完组后再条件用having不能用where
16、按照课程统计没课考试最好的成绩
select courseid,max(score) as 最好成绩 from scores group by courseid;
17、取排序的前3名
select age from students order by age desc limit 3;
18、基于排序跳过2个显示3个
select age from students order by age desc limit 2,3;
多表
1、纵向合并两张表
select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers;
2、基于上条查询 查找age字段大于50的信息
select * from (select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers)as b where b.age >50;
备注:利用了子查询
子查询:
查找比平均年龄大的信息
select name,age from students where age >(select avg(age) from students);
交叉链接
两张表交叉链接组合
select * from students cross join teachers;
内连接
取两张表的交集实现查找出学生对应的老师
select s.name as 学生name,t.name as 老师name from students as s inner join teachers as t on s.teacherid=t.tid;
备注:因为两种表有相同的字段,为了群分开给它加别名as,
左外链接
两张表A 和 B ,
取A表和B表的与A表相关的部分,A加B的一部分
select stuid,s.name,s.age,s.gender,classid,teacherid,tid,t.name,t.age,t.gender from students as s left join teachers as t on s.teacherid=t.tid;
有这样一个表emp
公司人员信息,即对应的领导--(leaderid领导编号)
id | name | leaderid |
1 | xiaoming | null |
2 | wanger | 1 |
3 | zhangsan | 2 |
4 | lisi | 3 |
现在有这样一个需求,查询每个人员对应的领导是谁
把emp表当作两张表来处理,自链接
select e.name as emp,l.name as leader from emp as e left outer join emp as l on e.leaderid=1.id;
Linux-MySQL基本命令-SQL语句的更多相关文章
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- MySQL数据库sql语句的一些简单优化
1.查询条件的先后顺序 有多个查询条件时,要把效率高能更精确筛选记录的条件放在后边.因为MySQL解析sql语句是从后往前的(不知是否准确). 例: select a.*,b.* from UsrIn ...
- mysql下sql语句 update 字段=字段+字符串
mysql下sql语句 update 字段=字段+字符串 mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgr ...
- MySQL数据库SQL语句基本操作
一.用户管理: 创建用户: create user '用户名'@'IP地址' identified by '密码'; 删除用户: drop user '用户名'@'IP地址'; 修改用户: renam ...
- mysql执行sql语句过程
开发人员基本都知道,我们的数据存在数据库中(目前最多的是mysql和oracle,由于作者更擅长mysql,所以这里默认数据库为mysql),服务器通过sql语句将查询数据的请求传入到mysql数据库 ...
- MySQL与SQL语句的操作
MySQL与SQL语句的操作 Mysql比较轻量化,企业用的是Oracle,基本的是熟悉对数据库,数据表,字段,记录的更新与修改 1. mysql基本信息 特殊数据库:information_sche ...
- mysql 操作sql语句 目录
mysql 操作sql语句 操作数据库 mysql 操作sql语句 操作数据表 mysql 操作sql语句 操作数据表中的内容/记录
- 不登录到MySQL执行SQL语句
mysql -e 不登录到MySQL执行SQL语句 mysql -u root -p -e "SHOW DATABASES"
- mysql优化sql语句
mysql优化sql语句 常见误区 www.2cto.com 误区1: count(1)和count(primary_key) 优于 count(*) 很多人为了统计记录条数,就使 ...
随机推荐
- bzoj4300 绝世好题 【dp】By cellur925
题目描述: 给定一个长度为\(n\)的数列\(a\),求\(a\)的子序列\(b\)的最长长度,满足bi&bi-1!=0(\(2<=i<=len\)). 90分做法: 并没有部分分 ...
- 企业级应用,如何实现服务化二(dubbo架构)
这是企业级应用,如何实现服务化系列的第二篇.在上一篇:企业级应用,如何实现服务化一(项目架构演化)中,交代了企业级应用架构的演化过程,和服务治理的方案可以选择:dubbo,或者spring cloud ...
- ZOJ 4019 Schrödinger's Knapsack (from The 18th Zhejiang University Programming Contest Sponsored by TuSimple)
题意: 第一类物品的价值为k1,第二类物品价值为k2,背包的体积是 c ,第一类物品有n 个,每个体积为S11,S12,S13,S14.....S1n ; 第二类物品有 m 个,每个体积为 S21,S ...
- Sql 2000系统表 语句查询表结构
SQL2000系统表的应用 –1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype=’u’ and status>=0 –2:获取 ...
- centos下svn的ldap认证配置
前提:完成svn的基本安装 一.安装sasl相关组件 #yum install -y cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain 二.查看SASL版本和提供的 ...
- 06.Javascript——入门this的用法(难点)
this 的指向 this 是 js 中定义的关键字,它自动定义于每一个函数域内,但是它的指向却让人很迷惑.在实际应用中,this 的指向大致可以分为以下四种情况. 1.作为普通函数调用 当函数作为一 ...
- Python/WSGI 应用快速入门--转
http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html 这个快速入门指南将会向你展示如何部署简单的 WSGI 应用和普 ...
- Java 多态抽象
- win10安装CAD后出现致命错误
现在很多朋友在使用win10系统了,在win10系统打开cad却提示致命错误,这个时候应该怎么办呢?我们可以打开注册表编辑器然后找到某个注册表把数值改为0就可以解决这个问题了哦,下面就和小编一起来看看 ...
- 借助sass的Maps功能使得响应式代码更有条理
原文来自这里 本文综合了原文(by Jonathan Suh)以及笔者自己的理解. Introduction 众所周知,写代码与写维护性高的代码是两回事.而涉及到响应式,代码又特别容易变的杂乱.借助s ...