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] 别名
注意:as可以省略,一个字段后面的标识符,就是当前的别名
<