mysql学习笔记

时间:2022-07-22
本文章向大家介绍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;