MySQL必知必会

1.检索数据

  • SHOW 显示某些信息
    当你不知道有哪些数据库或库里表的信息等时
    如:
  1. show databases; 显示mysql里所有的数据库
    输出:

    2. use world;show tables; 显示数据库world中所有的表,记住要先选定数据库,用鼠标或者use database-name;
    输出:

    3. show columns from city; 显示表city中的所有列,共有5列
    输出:

    每个列是一个字段,返回每一行的字段名、数据类型、是否允许null、键信息、默认值及其他信息。
  • SELECT 从一个或多个表中检索信息
  1. 检索单个列
选中数据库sys;
select variable from sys_config;    检索表sys_config中名为variable的列

输出:

2. 检索多个列
在列名之间加上逗号,最后一个列名后没有逗号

select variable,value,set_time from sys_config;    检索表sys_config中名为variable,value,set_time的列

输出:

3. 检索所有列
可以将所有列名写出来,也可以*代替

select * from sys_config;   检索所有列


4. 检索不同的行

select country from websites;  从表websites中选择列名为country

输出:

可以看到输出结果有5行,但实际上country只有2个,若要不重复输出每个值,可以用关键字distinct:

select DISTINCT country from websites;

输出:

关键字distinct必须放在列名前面,且不是局部作用,而是作用于其后面的所有列

5.指定返回行
select返回所有匹配的行,用limit子句返回指定的行

select country from websites limit 2;   返回前两行

输出:

select country from websites limit 4; 返回前四行

输出:

select country from websites limit 2,2; 返回从第2+1行开始的两行

输出:

5. 使用完全限定的表名

select websites.country from websites limit 4;    选择表websites中的列名country
select websites.country from new_schema.websites limit 4;    选择数据库new_schema中的
                                  表为websites的列country

2.排序检索出的数据

使用select中的order by子句,根据需要排序检索出来的数据。
如果直接输出表的某个列,数据并不是按照纯粹的随机顺序,而是以它在底层表的顺序显示。
子句: 一个子句通常由一个关键字和所提供的数据组成,有些子句必需,有些子句可选。

  • from子句,如上一章所示
  • order by子句:取一个或多个列名,据此对输出排序。
  • 按单个列排序,如:
select country 
from websites
order by country;

输出:

  • 按多个列排序,如:
select * 
from websites
order by column_1,column_2;

如果column_1中的每个值都是唯一的,那就不会再按照column_2排序。

  • 关键字DESC:指定排序方向
    默认升序排序(从A到Z),还可以降序排序,需要指定DESC关键字。
    DESC关键字只作用于直接位于其前面的列。
    与DESC相反的关键字是ASC升序。
  • 按单个列排序
SELECT * 
FROM mydata.emp
order by empno desc;

输出:

workbench不太好用,结果得滚动才能显示全,截图截不全。

  • 按多个列排序
SELECT * 
FROM mydata.emp
order by deptno desc, empno desc;   分别按列deptno和empno排序,且都是降序

输出:

例:order by与limit组合,找到员工表中工资最高的一行数据。

SELECT * 
FROM mydata.emp
order by sal desc
limit 1;

3. 过滤数据

  • where子句:指定搜索条件。
    where子句在表名(from子句)之后给出。
    与order by同时使用时,order by位于where之后。
SELECT * 
FROM emp
where sal=1250;

输出:

只返回了sal=1250的所有行。

SELECT * 
FROM emp
where sal=1250
order by empno desc;

输出:

  • where子句操作符:
  1. 检查单个值
SELECT * 
FROM emp
where sal>=1250
order by sal desc;

输出:

  1. 不匹配检查
SELECT * 
FROM emp
where job<>'manager'         输出除了经理以外人的工资
order by sal desc;

输出:

where job<>'manager’处如果是数字可以不用单引号括起来。

  1. 范围值检查
    用between操作符检查某个范围的值,需要开始值和结束值。
    要用and关键字将开始值和结束值分开。
SELECT * 
FROM emp
where sal between 1100 and 3000
order by sal desc;

输出:

  1. 空值检查
    在一个列不包含值时,称其为包含空值null。
    null:无值,它与字段包含0、空字符串或空格不同。
    is null子句:是一个特殊的where子句,检查具有null值的列。
SELECT * 
FROM emp
where comm is null
order by sal desc;

输出:

返回comm中是null值的所有行。

4. 数据过滤

4.1 组合where子句

组合where子句建立功能更强的检索条件。
操作符:用来联结或改变where子句中的子句的关键字,也称为逻辑操作符。

  • AND操作符
SELECT * 
FROM emp
where job='manager' and sal <= 3000    #返回经理中工资小于等于3000的
order by sal desc;

输出:

  • OR操作符
SELECT * 
FROM emp
where job='clerk' or job='manager'
order by sal;

输出:

  • 计算次序:学会用括号
SELECT * 
FROM emp
where deptno=10 or deptno=20 and sal <=1300
order by sal;

输出:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值