MySQL快速入门09----查询(1)

这篇博客介绍了MySQL查询的基础,包括表达式、列子句、别名as、From子句、虚拟表dual的使用,还讲解了group by子句、having子句以及集合函数在数据操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


select 语法:

select select_expr [from tbl_name] [where] [group by] [having] [order by] [limit]
select [查询选项] [查询表达式(字段表达式)] [from 子句] [where 子句] [group by 子句] [having 子句] [order by 子句] [limit 子句]
注意:select 子句可以不出现,如果出现则必须按照顺序出现!


创建新表teacher_class:

mysql> create table teacher_class (
    -> id int primary key auto_increment,
    -> t_name varchar(10),
    -> gender enum('female', 'male', 'secret'),
    -> c_name char(7),
    -> room char(3),
    -> days tinyint unsigned,
    -> begin_date date,
    -> end_date date
    -> ) character set utf8;
Query OK, 0 rows affected (0.06 sec)


向新表中插入数据:

insert into teacher_class values
(null, '韩信', 'male', 'php0115', '207', 21, '2013-01-15', '2013-02-20'),
(null, '韩信', 'male', 'php0228', '106', 18, '2013-02-28', '2013-03-30'),
(null, '韩信', 'male', 'php0331', '102', 24, '2013-03-31', '2013-05-05'),
(null, '李白', 'male', 'php0115', '207', 20, '2013-02-22', '2013-03-25'),
(null, '李白', 'male', 'php0228', '204', 21, '2013-03-31', '2013-04-29'),
(null, '韩非', 'secret', 'php0115', '207', 15, '2013-03-27', '2013-04-18');

数据展示:

mysql> select * from teacher_class;
+----+--------+--------+---------+------+------+------------+------------+
| id | t_name | gender | c_name  | room | days | begin_date | end_date   |
+----+--------+--------+---------+------+------+------------+------------+
|  1 | 韩信       | male   | php0115 | 207  |   21 | 2013-01-15 | 2013-02-20 |
|  2 | 韩信       | male   | php0228 | 106  |   18 | 2013-02-28 | 2013-03-30 |
|  3 | 韩信       | male   | php0331 | 102  |   24 | 2013-03-31 | 2013-05-05 |
|  4 | 李白       | male   | php0115 | 207  |   20 | 2013-02-22 | 2013-03-25 |
|  5 | 李白       | male   | php0228 | 204  |   21 | 2013-03-31 | 2013-04-29 |
|  6 | 韩非       | secret | php0115 | 207  |   15 | 2013-03-27 | 2013-04-18 |
+----+--------+--------+---------+------+------+------------+------------+
6 rows in set (0.02 sec)


表达式:


查询列可以是一个列名,表达式都可以。每个列之间使用逗号分割。

字段也是可以参与运算的,数据是保存在字段内的,因此可以将字段当作变量来看待。

AS Alias可以为每一个列指明一个别名,可用于group by ,having 或 order by 子句。

其中AS是可以选用的,但是建议使用。不使用可能会出现 field1 field2没有写逗号分割,导致将第二个认为是第一个的别名。


字段(变量),函数返回值:
mysql> select 10+20;
+-------+
| 10+20 |
+-------+
|    30 |
+-------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-08-05 20:00:20 |
+---------------------+
1 row in set (0.02 sec)

mysql> select now(), unix_timestamp();
+---------------------+------------------+
| now()               | unix_timestamp() |
+---------------------+------------------+
| 2016-08-05 20:03:31 |       1470398611 |
+---------------------+------------------+
1 row in set (0.03 sec)

mysql> select now() time, unix_timestamp() 时间戳;
+---------------------+------------+
| time                | 时间戳          |
+---------------------+------------+
| 2016-08-05 20:04:09 | 1470398649 |
+---------------------+------------+
1 row in set (0.00 sec)


列子句:


如果是从表中获得数据,那么字段,就是变量,可以参与任何运算( concat函数将字符串连接起来):
mysql> select id, concat(t_name, '-', gender), c_name from teacher_class;
+----+-----------------------------+---------+
| id | concat(t_name, '-', gender) | c_name  |
+----+-----------------------------+---------+
|  1 | 韩信-male                       | php0115 |
|  2 | 韩信-male                       | php0228 |
|  3 | 韩信-male                       | php0331 |
|  4 | 李白-male                       | php0115 |
|  5 | 李白-male                       | php0228 |
|  6 | 韩非-secret                     | php0115 |
+----+-----------------------------+---------+
6 rows in set (0.00 sec)


别名as


常一个表达式,形式不够良好,不容易读取;起一个 可以容易读取的别名即可:使用 关键字 AS
标识符 [as] 别名

注意:as可以省略,一个字段后面的标识符,就是当前的别名
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值