MySQL学习(第1天课程):一张表(table)的select(查询DQL)语句

MySQL学习(第2天课程)

简介

1、sql、DB、DBMS分别是什么,他们之间的关系

DB:
DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)
DBMS:
DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer…)
SQL:
结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品。
SQL属于高级语言。只要能看懂英语单词的,写出来的sql语句,可以读懂什么意思。
SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行sql。(sql语句的编译由DBMS完成。)
DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据。
DBMS -(执行)-> SQL -(操作)-> DB

SQL语句分类:
DQL(数据查询语言): 查询语句,凡是select语句都是DQL
DML(数据操作语言):insert delete update,对表当中的数据进行增删改。
DDL(数据定义语言):create drop alter,对表结构的增删改。
TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)
DCL(数据控制语言): grant授权、revoke撤销权限等。

2、DOS命令窗口简单操作MySQL

导入语句:

  • (1):登录mysql数据库管理系统
    dos命令窗口:
    mysql -uroot -p333

  • (2):查看有哪些数据库
    show databases; (这个不是SQL语句,属于MySQL的命令。)

  • (3):创建属于我们自己的数据库
    create database bjpowernode; (这个不是SQL语句,属于MySQL的命令。)

  • (4):使用bjpowernode数据
    use bjpowernode; (这个不是SQL语句,属于MySQL的命令。)

  • (5):查看当前使用的数据库中有哪些表?
    show tables; (这个不是SQL语句,属于MySQL的命令。)

  • (6):初始化数据
    mysql> source D:\course\05-MySQL\resources\bjpowernode.sql

  • (7):删除数据库: drop database bjpowernode;

  • (8)查看表结构: mysql> desc dept; dept可以换成emp,salgrade等;

DQL语句(凡是select语句都是DQL)

DQL语句的格式:(执行顺序)
select 5

from 1

where 2

group by 3

having 4

order by 6


1、常用命令

  • mysql> select * from emp; 查询emp表中的数据
  • mysql> select database(); 查看当前使用的是哪个数据库
  • mysql> select version(); 查看mysql的版本号。
  • \c 命令,结束一条语句。 exit 命令,退出mysql。
  • mysql> show create table emp; 查看创建表的语句

2.简单的查询语句(DQL)

语法格式:
mysql> select 字段名1,字段名2,字段名3,… from 表名;
提示:
1、任何一条sql语句以“;”结尾
2、sql语句不区分大小写

  • mysql> select ename,sal * 12 from emp; 查询员工的年薪?(字段可以参与数学运算。)
  • mysql> select ename,sal * 12 as yearsal from emp; (as)给查询结果的列重命名
  • mysql> select ename,sal * 12 as ‘年薪’ from emp; (单引号中文命名)
  • mysql> select empno,ename,sal * 12 yearsal from emp; as关键字可以省略?以空格形式表示。
  • mysql> select * from emp; 查询所有字段

3.条件查询

在这里插入图片描述
语法格式:(执行顺序)
select 3
字段,字段…
from 1
表名
where 2
条件;

  • mysql> select ename from emp where sal = 5000; 查询工资等于5000的员工姓名
  • mysql> select sal from emp where ename = ‘SMITH’; 查询SMITH的工资

找出工资不等于3000的,下面2个语句都行

  • mysql>select ename,sal from emp where sal <> 3000;
  • mysql> select ename,sal from emp where sal != 3000;
  • mysql> select ename,sal from emp where sal >= 1100 and sal <= 3000;
    或者 mysql> select ename,sal from emp where sal between 1100 and 3000; // between…and…(在使用的时候必须左小右大)是闭区间 [1100 ~ 3000]
  • mysql> select ename from emp where ename between ‘A’ and ‘C’; 用在字符串方面
  • mysql> select ename,sal,comm from emp where comm is null; 空不是一个值,不能用等号衡量。必须使用 is null或者is not null
  • mysql> select ename,job from emp where job = ‘MANAGER’ or job = ‘SALESMAN’; 找出工作岗位是MANAGER和SALESMAN的员工
  • mysql> select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno = 30); (and优先级高于or) 找出薪资大于1000的并且部门编号是20或30部门的员工
  • mysql> select ename,job from emp where job in(‘SALESMAN’, ‘MANAGER’); in等同于or
  • mysql>select ename,job from emp where sal not in(800, 5000); not in: 不在这几个值当中。
  • 模糊查询like
    找出名字当中含有O的
    (在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_,
    %代表任意多个字符,_代表任意1个字符)
  • mysql> select ename from emp where ename like ‘_A%’; 找出名字中第二个字母是A
  • mysql> select name from emp where name like ‘%_%’; 找出名字中有下划线的

4.排序(升序、降序)

执行顺序:
select 2
ename,sal
from 1
emp
order by 3
sal;

注意:默认是升序。asc表示升序,desc表示降序。

  • mysql> select ename , sal from emp order by sal; // 升序
    mysql> select ename , sal from emp order by sal asc; // 升序
    mysql> select ename , sal from emp order by sal desc; // 降序
  • mysql> select ename,sal from emp order by sal desc , ename asc; 越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。
  • select
    字段 3
    from
    表名 1
    where
    条件 2
    order by 4
  • mysql> select ename,job,sal from emp where job = ‘SALESMAN’ order by sal desc;

5.分组函数

count 计数
sum 求和
avg 平均值
max 最大值
min 最小值

注意:分组函数一共5个。
分组函数还有另一个名字:多行处理函数。
多行处理函数的特点:输入多行,最终输出的结果是1行
分组函数 自动忽略NULL。

分组函数也能组合起来用:
  • mysql> select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;
  • mysql> select ename,sal from emp where sal > (select avg(sal) from emp); 找出工资高于平均工资的员工

group by 和 having(和分组函数联合使用)

  • group by : 按照某个字段或者某些字段进行分组。
  • having : having是对(group by)分组之后的数据进行再次过滤,只有group by出现才能用。
  • mysql> select max(sal),deptno from emp group by deptno having max(sal) > 2900;
  • mysql> select max(sal),deptno from emp where sal > 2900 group by deptno; // 效率较高,建议能够使用where过滤的尽量使用where。

6.单行处理函数:输入一行,输出一行

  • mysql> select ename,ifnull(comm,0) as comm from emp; null当0处理
    ifnull(可能为NULL的数据,被当做什么处理) : 属于单行处理函数
发布了42 篇原创文章 · 获赞 8 · 访问量 2453

猜你喜欢

转载自blog.csdn.net/JH39456194/article/details/103092317