您的位置:首页 > 数据库 > MySQL

MySQL入门(1)- SQL语句分类&查询语句

2018-02-20 21:21 405 查看

SQL语句分类&查询语句

此系列记录PN视频学习笔记
* 本博客涉及到的数据为bjpowernode.sql,数据见文末,SQL文见MySQL入门(9)文末。
* 该数据有三张表,分别是部门表dept(deptno部门编号、dname部门名称、loc位置)、
                                       员工表emp(empno工号、ename员工姓名、job职位、mgr直属领导工号、
                                                            hiredate入职日期、sal月薪、comm补贴、deptno部门编号)、
                                        薪水等级表salgrade(grade等级、losal区间下限、hisal区间上限)

一、SQL语句分类

1、SQL的分类
数据查询语言(DQL - data querylanguage):select(针对表中数据)
数据操纵语言(DML - datamanipulationlanguage):insert、delete、update(针对表中数据)
数据定义语言(DDL - data definitionlanguage):create、drop、alter(针对表的结构)
事务控制语言(TCL - transactionalcontrol language):commit、rollback
数据控制语言(DCL - data controllanguage):grant、revoke

2、几种语句的简单说明
SQL不区分大小写,每个语句后面要有分号,可以用\c结束一个语句
create database bjpowernode; 创建数据库
use database bjpowernode;  使用数据库
drop database bjpowernode;  删除数据库
source 直接拖文件  导入SQL脚本文件
show tables; 查看表格
desc dept;查看表结构
show databases;查看所有database
show tables from world; 查看其它库的表
show create table city;查看建表语句
select database();查看当前所使用数据库名称
select version();查看版本
在cmd:mysql--version(v) 看版本 
关闭:ctrl+c, exit, quit
 

二、查询语句

1、简单查询
1)查询一个字段
select ename from emp;
select empno from emp;
2)查询多个字段,用‘,’隔开
select empno,ename,mgr from emp
3)全选
select empno,ename,job,mcr,hiredate,sal,comm,deptno fromemp;
select * from emp;
 
select只能用来显示查询结果,而不能改变原数据
select empno,ename,sal*12 from emp;
修改上面字段名sal*12为yearsal(as可省略,sal*12和yearsal不能用逗号连接)
select empno,ename,sal*12 as yearsal from emp;
select empno,ename,sal*12 yearsal from emp;
select empno,ename,sal*12 ‘年薪’ from emp;(一般没必要用中文来命名)
select empno,ename,sal*12 “年薪” from emp;(一般数据库都只支持单引号扩字符串,但是mysql支持双引号)
 
2、条件查询
select empno,ename,sal from emp where sal = 5000;(先查询,再过滤,最后呈现)
select empno,ename,sal from emp where sal = 3000;
sal是double(浮点)
select empno,ename,sal from emp where sal = ‘3000’;(字符串也可以,但是最好不要用)
select empno,ename,sal from emp where sal >= 3000;
select empno,ename,sal from emp where sal <> 3000;
select empno,ename,sal from emp where sal >= 3000 and sal <= 5000;(and且优先级高,or或)
select empno,ename,sal from emp where sal between 3000 and 5000;(闭区间,前面必须小于后面)
select empno,ename,sal from emp where ename between ‘A’ and ‘L’;(字符型,左闭右开)
 
select empno,ename,sal,comm from emp;(NULL没有值,什么都不是)
select empno,ename,sal from emp where comm is null;(NULL要用is,不能用=)
select empno,ename,sal from emp where comm is not null;
找出工作岗位是manager和salesman的员工
select empno,ename,job from emp where job = ‘SALESMAN’ or job = ‘MANAGER’;
select empno,ename,job from emp where job in(‘SALESMAN’,‘MANAGER’);(括号内为选项)
找出工资大于1800,要求部门编号为20或者30
select empno,ename,sal,deptno from emp where sal > 1800 and deptno= ‘20’or deptno = ‘30’;(and优先级高于or,所以运行结果是大于1800且部门20,以及部门为30)
select empno,ename,sal,deptno from emp where sal > 1800 and (deptno = ‘20’or deptno= ‘30’);
select ename,sal fromemp where sal in (1500,5000);(括号内不是区间而是两个备选项)
select ename,sal fromemp where sal not in (1500,5000);
 
3、模糊查询(%,_)
找出名字里有o的
select ename from emp where ename like ‘%o%’;(%是占位符,表示0-n个任意字符)
找出第一个字符为s的
select ename from emp where ename like ‘s%’;
找出最后一个字符是t的
select ename from emp where ename like ‘%T’;
找出第2个字母为a的
select ename from emp where ename like ‘_A%’;(下划线表示任意一个字符)
第三个字母为a的
select ename from emp where ename like ‘__A%’;
倒数第二个字符为n的
select ename from emp where ename like ‘%N_’;

DEPTNODNAMELOC
10ACCOUNTINGNEW YORK
20RESEARCHINGDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
7369SMITHCLERK79021980/12/17800NULL20
7499ALLENSALESMAN76981981/2/20160030030
7521WARDSALESMAN76981981/2/22125050030
7566JONESMANAGER78391981/4/22975NULL20
7654MARTINSALESMAN76981981/9/281250140030
7698BLAKEMANAGER78391981/5/12850NULL30
7782CLARKMANAGER78391981/6/92450NULL10
7788SCOTTANALYST75661987/4/193000NULL20
7839KINGPERSIDENTNULL1981/11/175000NULL10
7844TURNERSALESMAN76981981/9/81500NULL30
7876ADAMSCLERK77881987/5/231100NULL20
7900JAMESCLERK76981981/12/3950NULL30
7902FORDANALYST75661981/12/33000NULL20
7934MILLERCLERK77821982/1/231300NULL10
GRADELOSALHISAL
17001200
212011400
314012000
420013000
530019999
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息