select查询基础

mysql学习笔记:七.select查询基础

DQL(Data QueryLanguage):数据查询语言,通俗点讲就是从数据库获取数据的,按照DQL的语法给数据库发送一条指令,数据库将按需求返回数据。就是围绕select语句展开的。

查询的结果放在一个表格中,表格的第1行称为列头,第2行开始是数据,类属于一个二维数组。

语法

SELECT column1,column2,... FROM table_name [WHERE clause] [ORDER BY 'column_name' [DESC]] [LIMIT [m,]n];

字段column表示法

表示符 代表什么?
* 所有字段
as 字段别名,如col1 AS alias1 当表名很长时用别名代替

条件判断语句WHERE

操作类型 常用操作符
操作符 >,<,>=,<=,=,!= BETWEEN column# AND column# LIKE:模糊匹配 RLIKE:基于正则表达式进行模式匹配 IS NOT NULL:非空 IS NULL:空
条件逻辑操作 AND OR NOT

ORDER BY:排序,默认为升序(ASC)

ORDER BY语句 意义
ORDER BY ‘column_name' 根据column_name进行升序排序
ORDER BY 'column_name' DESC 根据column_name进行降序排序
ORDER BY ’column_name' LIMIT 2 根据column_name进行升序排序 并只取前2个结果
ORDER BY ‘column_name' LIMIT 1,2 根据column_name进行升序排序 并且略过第1个结果取后面的2个结果

查询常量

mysql> select 1,2,3,'a','b','c';
+---+---+---+---+---+---+
| 1 | 2 | 3 | a | b | c |
+---+---+---+---+---+---+
| 1 | 2 | 3 | a | b | c |
+---+---+---+---+---+---+
1 row in set (0.00 sec)

查询表达式

mysql> select 1+2,3*10,10/3;
+-----+------+--------+
| 1+2 | 3*10 | 10/3   |
+-----+------+--------+
|   3 |   30 | 3.3333 |
+-----+------+--------+
1 row in set (0.00 sec)

查询函数

mysql>  select mod(10,4),isnull(null),ifnull(null,'50'),ifnull(1,'50');
+-----------+--------------+-------------------+----------------+
| mod(10,4) | isnull(null) | ifnull(null,'50') | ifnull(1,'50') |
+-----------+--------------+-------------------+----------------+
|         2 |            1 | 50                | 1              |
+-----------+--------------+-------------------+----------------+
1 row in set (0.00 sec)

mod函数:求余

isnull函数,判断参数是否为空,若为空返回1,否则返回0。

ifnull函数,2个参数,判断第一个参数是否为空,如果为空返回第2个参数的值,否则返回第1个参数的值。

查询指定的字段

select 字段1,字段2,字段3 from 表名;

例如:

mysql> drop table if exists test1;
Query OK, 0 rows affected (0.01 sec)
mysql> create table test1(a int not null, b varchar(10) not null default '');
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test1 values (1,'a'),(2,'b'),(3,'c');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

#只查询a字段
mysql> select a from test1;
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
+---+
3 rows in set (0.00 sec)


查询所有

select * from 表名

列起别名

在创建数据表时,一般都会使用英文单词或英文单词缩写来设置字段名,在查询时列名都会以英文的形式显示,这样会给用户查看数据带来不便,这种情况可以使用别名来代替英文列名,增强阅读性。

语法:

#as尽量不要省略
select 列 [as] 别名 from 表;

引号问题

别名中有特殊符号的,比如空格,此时别名必须用引号引起来。

mysql的字段名、表名通常不需要加任何引号,如果非要加上引号,必须加反引号

切记一定要语法规范,as尽量不要省略,否则极少数特殊情况可能会出现意想不到的效果

表别名

select 别名.字段,别名.* from 表名 [as] 别名;

例如:

mysql> select t.a,t.b from test1 as t;
+---+---+
| a | b |
+---+---+
| 1 | a |
| 2 | b |
| 3 | c |
+---+---+
3 rows in set (0.00 sec)

mysql> select t.a as 'column_1',t.b as 'column_2' from test1 as t;
+----------+----------+
| column_1 | column_2 |
+----------+----------+
|        1 | a        |
|        2 | b        |
|        3 | c        |
+----------+----------+
3 rows in set (0.00 sec)

mysql> select t.* from test1 as t;
+---+---+
| a | b |
+---+---+
| 1 | a |
| 2 | b |
| 3 | c |
+---+---+
3 rows in set (0.00 sec)

posted @ 2021-02-04 17:25  EverEternity  阅读(106)  评论(0编辑  收藏  举报