sql 查询语句的基本使用

// 简单查询  多条查询用逗号隔开
select  字段列表  from 表名;
// 条件查询  表名字emp 
mysql> select empno,ename,sal from emp where sal = 5000;
+-------+-------+---------+
| empno | ename | sal     |
+-------+-------+---------+
|  7839 | KING  | 5000.00 |
+-------+-------+---------+
// 找出工资 >= 3000,并且<= 5000的
mysql> select ename,sal from emp where sal >= 3000 and sal <= 5000;
+-------+---------+
| ename | sal     |
+-------+---------+
| SCOTT | 3000.00 |
| KING  | 5000.00 |
| FORD  | 3000.00 |
+-------+---------+
// 使用 or (或者)  查询
mysql> select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';
mysql> select ename,job from emp where job in('SALESMAN','MANAGER');
// 上面两个查询出来的结果一样
+--------+-----------+
| ename  | job       |
+--------+-----------+
| ALLEN  | SALESMAN  |
| WARD   | SALESMAN  |
| JONES  | MANAGER   |
| MARTIN | SALESMAN  |
| BLAKE  | MANAGER   |
| CLARK  | MANAGER   |
| TURNER | SALESMAN  |
+--------+-----------+
// 查询工资大于1800 部门在20或者30 的员工
mysql> select empno,ename,sal ,deptno from emp where sal > 1800 and (deptno = 20 or deptno = 30);
+-------+-------+------+--------+
| empno | ename | sal  | deptno |
+-------+-------+------+--------+
|  7566 | JONES | 2975 |     20 |
|  7698 | BLAKE | 2850 |     30 |
|  7788 | SCOTT | 3000 |     20 |
|  7902 | FORD  | 3000 |     20 |
+-------+-------+------+--------+
4 rows in set (0.00 sec)
and 比 or  的优先级高要加()
// 模糊查询
// 查询包含O字母的名字
mysql> select ename from emp where ename like '%O%';
+-------+
| ename |
+-------+
| JONES |
| SCOTT |
| FORD  |
+-------+
// 第一个字母是S
mysql> select ename from emp where ename like 'S%';
+--------+
| ename  |
+--------+
| SIMITH |
| SCOTT  |
+--------+
// 最后一个字母是S的
mysql> select ename from emp where ename like '%S';
+-------+
| ename |
+-------+
| JONES |
| JAMES |
+-------+
// 找出第二个字母是A的
mysql> select ename from emp where ename like '_A%';
+--------+
| ename  |
+--------+
| WARD   |
| MARTIN |
| JAMES  |
+--------+
// 找出倒数第二个字母是E的
mysql> select ename from emp where ename like '%E_';
+--------+
| ename  |
+--------+
| ALLEN  |
| JONES  |
| TURNER |
| JAMES  |
| MILLER |
+--------+
// 排序查询 按照工资升序
mysql> select ename,sal from emp order by sal;
+---------+------+
| ename   | sal  |
+---------+------+
| SIMITH  |  800 |
| JAMES   |  950 |
| ADAMS   | 1100 |
| WARD    | 1250 |
| MARTIN  | 1250 |
| MILLER  | 1300 |
| TURNER  | 1500 |
| ALLEN   | 1600 |
| CLARK   | 2450 |
| BLAKE   | 2850 |
| JONES   | 2975 |
| SCOTT   | 3000 |
| FORD    | 3000 |
| KING    | 5000 |
+---------+------+
// 按照工资降序
mysql> select ename,sal from emp order by sal desc;
+---------+------+
| ename   | sal  |
+---------+------+
| KING    | 5000 |
| SCOTT   | 3000 |
| FORD    | 3000 |
| JONES   | 2975 |
| BLAKE   | 2850 |
| CLARK   | 2450 |
| ALLEN   | 1600 |
| TURNER  | 1500 |
| MILLER  | 1300 |
| WARD    | 1250 |
| MARTIN  | 1250 |
| ADAMS   | 1100 |
| JAMES   |  950 |
| SIMITH  |  800 |
+---------+------+
查询用到的运算符
//日期查询
// 日期类型 %Y-%m-%d
// 此条语句自动把字符串转换成日期类型了
mysql> select ename,hiredate from emp where hiredate = '1981-09-28';
+--------+------------+
| ename  | hiredate   |
+--------+------------+
| MARTIN | 1981-09-28 |
+--------+------------+
// str_to_date 的使用
//str_to_date 一般在插入数据中使用
mysql> select ename,hiredate from emp where hiredate = str_to_date('12-17-1980','%m-%d-%Y');
+--------+------------+
| ename  | hiredate   |
+--------+------------+
| SIMITH | 1980-12-17 |
+--------+------------+
// date_format 把date 类型转换成字符串
// date_format 主要使用在查询操作中
mysql> select ename,date_format (hiredate,'%Y年%m月%d日') as hiredate from emp;
+---------+-------------------+
| ename   | hiredate          |
+---------+-------------------+
| SIMITH  | 1980年12月17日    |
| ALLEN   | 1981年02月20日    |
| WARD    | 1981年02月22日    |
| JONES   | 1981年04月02日    |
| MARTIN  | 1981年09月28日    |
| BLAKE   | 1981年05月01日    |
| CLARK   | 1981年06月09日    |
| SCOTT   | 1987年04月19日    |
| KING    | 1981年11月17日    |
| TURNER  | 1981年09月08日    |
| ADAMS   | 1987年05月23日    |
| JAMES   | 1981年12月03日    |
| FORD    | 1981年12月03日    |
| MILLER  | 1982年01月23日    |
+---------+-------------------+
// 求和查询 sum  
//null 不参加运算
mysql> select sum(comm) from emp;
+-----------+
| sum(comm) |
+-----------+
|      2200 |
+-----------+
// 记录查询
// 查询 此字段一共有多少条数据
mysql> select count(deptno) from emp;
+---------------+
| count(deptno) |
+---------------+
|            14 |
+---------------+
// 求平均值
mysql> select avg(sal) from emp;
+-----------+
| avg(sal)  |
+-----------+
| 2073.2143 |
+-----------+
// 求最大值
mysql> select max(sal) from emp;
+----------+
| max(sal) |
+----------+
|     5000 |
+----------+
// 求最小值
mysql> select min(sal) from emp;
+----------+
| min(sal) |
+----------+
|      800 |
+----------+
// distinct 把查询结果中重复的去掉
// distinct 前面不能放字段
mysql> select distinct job from emp;
+-----------+
| job       |
+-----------+
| CLERK     |
| SALESMAN  |
| MANAGER   |
| ANALYST   |
| PRESIDENT |
+-----------+
// 统计有多少个工作岗位
mysql> select count(distinct job) from emp;
+---------------------+
| count(distinct job) |
+---------------------+
|                   5 |
+---------------------+
group by 分组查询
// 表示通过哪个或者哪些字段进行分组
//计算每个部门的平均薪水,(按照部门编号分组,对每一组薪水求平均值)
mysql> select deptno,avg(sal) avgsal from emp group by deptno;
+--------+-----------+
| deptno | avgsal    |
+--------+-----------+
|     20 | 2175.0000 |
|     30 | 1566.6667 |
|     10 | 2916.6667 |
+--------+-----------+
// 找出每个工作岗位的最高薪水 MANAGER 除外 
mysql>  select job,max(sal) from emp where job != 'MANAGER' group by job;
+-----------+----------+
| job       | max(sal) |
+-----------+----------+
| CLERK     |     1300 |
| SALESMAN  |     1600 |
| ANALYST   |     3000 |
| PRESIDENT |     5000 |
+-----------+----------+
// where 后面不能写分组函数
// having 和 where 都是完成数据的过滤
// where 在 group by 前面过滤
// having 在 group by 的后面过滤
// 找出每个岗位的平均薪水,要求显示平均薪水大于1500的
mysql> select job , avg(sal) from emp group by job having avg(sal) > 1500;
+-----------+-----------+
| job       | avg(sal)  |
+-----------+-----------+
| MANAGER   | 2758.3333 |
| ANALYST   | 3000.0000 |
| PRESIDENT | 5000.0000 |
+-----------+-----------+
3 rows in set (0.00 sec)
SQL语句的执行顺序
1. from
2. where
3. group by
4. having
5. select
6. order by
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容