mysql学习笔记

基本结果有 SELECT 子句,FROM 子句,WHERE 子句组成的查询块
SELECT <字段名>
/ntl&FROM <表或视图名>
WHERE <查询条件>

SELECT

命令语法:
SELECT  [ALL| DISTINCT]
                 {*|table.*|[table.] field1 [as alias1] [,[table.] field2 [as alias2]][...]}
FROM    表名 [] ,表2
命令含义:

从数据库表里查询数据
结果被存在一个结果集中,称为结果集

(1)从“t_persons”表中选取所有的列
SELECT * FROM t_persons;
在这里插入图片描述

(2)查询字段名为“last_name”和“first_name”的列内容(从名为“t_persons”的数据库表)
SELECT last_name,first_name FROM t_persons;
在这里插入图片描述

distinct(去重)

命令语法:

select distinct 列名称 from 表名称;

命令含义:
去掉查询列名称中的重复数据

例如:
select DISTINCT city from t_persons;
从 t_persons 表里面查询所有不相同的城市名
关键字 DISTINCT 用于返回唯一不同的值
在这里插入图片描述
select city from t_persons;
在这里插入图片描述

alias(别名)

通过使用 SQL ,可以为列名称和表名称指定别名(Alias)

表语法:

SELECT 列名称 FROM 表名称 AS 别名;

表“t_persons”,我们指定别名“p”

SELECT p.last_name FROM t_persons AS p WHERE p.last_name='Adams' OR p.first_name='Carter';

在这里插入图片描述

列语法:

SELECT 列名称 AS 别名 FROM 表名称;

表“t_persons”中列“last_name”和“first_name”,分别指定别名“Family”和“Name”

SELECT last_name AS Family, first_name AS Name FROM t_persons;

在这里插入图片描述

LIMIT

命令语法:

SELECT 列名称 FROM 表名称 LIMIT 偏移量;

命令含义:

查询返回指定的数目
例如:

SELECT * FROM t_persons LIMIT 3; //返回前3条

在这里插入图片描述

SELECT * FROM t_persons LIMIT 3,1;//返回3条后的一条数据——即第四条数据

在这里插入图片描述

WHERE

命令语法:
 SELECT  [ALL| DISTINCT]
              {*|table.*|[table.] field1 [as alias1] [,[table.] field2 [as alias2]][...]}
  FROM    表名 [] ,表2
  [WHERE ...]
命令含义:

根据条件从表中查询数据,如果有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句

IN

IN 操作符可以在 WHERE 子句中规定多个值

命令语法:

SELECT 列名称 FROM 表名称 WHERE 列名称 IN (值1, 值2,…);

命令实例:

1、从表“t_persons”中选取姓氏为“Adams”和“Carter”的人

select last_name from t_persons where last_name in('Adams','Carter');

select * from t_persons where last_name in('Adams','Carter');

在这里插入图片描述在这里插入图片描述

in 后面不仅仅可以是字符串,还可以是记录集
select * from t_persons where last_name in(select last_name from t_persons);

在这里插入图片描述

运算符

在这里插入图片描述注:在一些版本的SQL中,操作符 <> 可以写为 !=

SELECT * FROM t_persons WHERE year>1975;

在这里插入图片描述

LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
在这里插入图片描述SQL 通配符必须与 LIKE 运算符一起使用


命令语法:

SELECT 列名称 FROM 表名称 WHERE 列名称 LIKE 表达式

命令实例:

1、从“t_persons”表中选取居住在以“g”结尾的城市里的人:

select * from  t_persons where  city like "%g";     //错

select * from  t_persons where  city like "%g";      //对

如果报ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'的错,可能是有什么符号的编码问题。比如我上面第一个就是%的问题。因此如果复制的时候出错了,可能自己手敲一遍就好了

在这里插入图片描述
2、从“t_persons”表中选取居住不包含“eij”的城市里的人:

select * from t_persons where city not like '%eij%';
select * from t_persons where first_name like '_eij%';

在这里插入图片描述

between

between 操作符在 where 子句中使用,作用是选取介于两个值之间的数据范围
操作符between … and 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期
命令语法:
SELECT 列名称 FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2;

查询表中列值在值1与值2之间的数据

select * from t_persons where year between 1975 and '1985';

数字可加引号可不加
在这里插入图片描述

select * from t_persons where last_name between 'b' and 'g';

字符必须加引号
b < bush < g < gates
所以产生这种“包前不包后”的现象
在这里插入图片描述

不包含:select * from t_persons where last_name not between 'b' and 'g';
在这里插入图片描述

and & or

and 两个条件都要成立
or 只要有一个条件成立就行

order by(排序)

默认按照升序对记录进行排序 asc
如果想要降序排序,使用 DESC 关键字
select * from t_persons order by city desc;
按照城市首字母,逆序输出
在这里插入图片描述

join

JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

连接分为:
INNER JOIN(JOIN 内连接):
如果表中有至少一个匹配,则返回行
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.列名=表2.列名

LEFT JOIN(左连接):
即使右表中没有匹配,也从左表返回所有的行
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.列名=表2.列名

RIGHT JOIN(右连接):
即使左表中没有匹配,也从右表返回所有的行
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 表1.列名=表2.列名

FULL JOIN(全连接):
只要其中一个表中存在匹配,就返回行
SELECT 列名 FROM 表1 FULL JOIN 表2 ON 表1.列名=表2.列名

union

用于合并两个或多个 SELECT 语句的结果集

union 语法:

SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2

select last_name from t_persons  union select city from t_persons;

在这里插入图片描述
如果要允许重复的值,得使用 union all。

select last_name from t_persons  union all select city from t_persons;

在这里插入图片描述

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值