一、select 语句的基本语法格式
select column1,column2… from 数据源 【where condition】
注意事项
1、数据源可以是表,也可是是视图。
2、如果没有where条件,则默认选出所有的行。
3、如果想选择出所有列,则可以使用 * 代表所有列。
4、select语句进行查询时,可以在select语句中使用算术运算符,其中,两个日期之间只可以进行减法运算,两列之间也可以进行运算。
select 后的不仅可以是数据列,也可以是表达式、变量、常量等。teacher_table表如下,
+————+————–+
| teacher_id | teacher_name |
+————+————–+
| 11 | zhangsan |
| 22 | lisi |
| 33 | wulongjian |
| 44 | cuichenchen |
| 55 | yuanlulu |
| 66 | mihailong |
+————+————–+
select 3*5, 20 from teacher_table;
+-----+----+
| 3*5 | 20 |
+-----+----+
| 15 | 20 |
| 15 | 20 |
| 15 | 20 |
| 15 | 20 |
| 15 | 20 |
| 15 | 20 |
+-----+----+
但其实这并没有过多的意义。
5、在MySQL中,使用***concat***函数来进行字符串连接运算,代码即运算结果如下
select concat (teacher_name,'xx')
-> from teacher_table;
+----------------------------+
| concat (teacher_name,'xx') |
+----------------------------+
| zhangsanxx |
| lisixx |
| wulongjianxx |
| cuichenchenxx |
| yuanluluxx |
| mihailongxx |
+----------------------------
5.2,在MySQL中,如果**在算术表达式中使用null,会导致其返回值为null,在字符串链接运算中出现null,会导致其结果也是null**
select concat(teacher_name,null) from teacher_table;
+---------------------------+
| concat(teacher_name,null) |
+---------------------------+
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+---------------------------+
5.3 concat等运算符也可以在多列之间进行运算。
select teacher_id +5 MY_id, concat (teacher_name,teacher_id) lianjie,teacher_name SB_name from teacher_table where teacher_id *2 >33;
+-------+---------------+-------------+
| MY_id | lianjie | SB_name |
+-------+---------------+-------------+
| 27 | lisi22 | lisi |
| 38 | wulongjian33 | wulongjian |
| 49 | cuichenchen44 | cuichenchen |
| 60 | yuanlulu55 | yuanlulu |
| 71 | mihailong66 | mihailong |
+-------+---------------+-------------+
6、如果不希望直接使用列名作为列标题,则可以为数据列或表达式起一个别名,别名紧跟数据列,中间以空格隔开,或者使用as关键字隔开,表名同样也可以更改,规则和列一样。
select teacher_id + 5 MY_ID , teacher_name SB_name from teacher_table t;
+-------+-------------+
| MY_ID | SB_name |
+-------+-------------+
| 16 | zhangsan |
| 27 | lisi |
| 38 | wulongjian |
| 49 | cuichenchen |
| 60 | yuanlulu |
| 71 | mihailong |
+-------+-------------+
6,.2 如果需要选择多列,并为多列起别名,则列与咧之间以逗号隔开,但列和列别名用空格隔开
select teacher_id + 5 MY_ID , teacher_name S_name from teacher_table;
+-------+-------------+
| MY_ID | S_name |
+-------+-------------+
| 16 | zhangsan |
| 27 | lisi |
| 38 | wulongjian |
| 49 | cuichenchen |
| 60 | yuanlulu |
| 71 | mihailong |
+-------+-------------+
7、可以用关键字distinct从查询结果中清除重复行,student_table数据如下
+------------+--------------+--------------+
| student_id | student_name | java_teacher |
+------------+--------------+--------------+
| 1 | one | 1 |
| 2 | two | 2 |
| 3 | three | 3 |
| 11 | one | 1 |
+------------+--------------+--------------+
select distinct student_name,java_teacher from student_table;
+--------------+--------------+
| student_name | java_teacher |
+--------------+--------------+
| one | 1 |
| two | 2 |
| three | 3 |
+--------------+--------------+
使用distinct去除重复行时,distinct紧跟select关键字
8、MySQL中判断两个值是否相等的比较运算符是单等号,判断不相等的运算符是<>;Sql中的赋值运算符是冒号等号 :=
8.1 Sql中还支持三个特殊的比较运算符
expr1 between expr2 and expr3 —要求expr1 >= expr2 && expr1<=expr3
select * from student_table where student_id between 2 and 4;
+------------+--------------+--------------+
| student_id | student_name | java_teacher |
+------------+--------------+--------------+
| 2 | two | 2 |
| 3 | three | 3 |
+------------+--------------+--------------+
expr1 in (expr2,expr3,expr4,…) —要求expr1等于后面括号里的任意一个表达式的值
select * from student_table where student_id in (2,4);
+------------+--------------+--------------+
| student_id | student_name | java_teacher |
+------------+--------------+--------------+
| 2 | two | 2 |
+------------+--------------+--------------+
like — 主要用于进行模糊查询,使用两个通配符: 下划线_ 和 百分号%,其中下划线可以代表一个任意的字符,百分号可以代表多个任意的字符。在某些特殊的情况下,查询的条件里需要使用下划线或百分号,不希望Sql把下划线和百分号当成通配符使用,这就需要使用转义字符,MySQL使用*反斜线*作为转义字符。
9. 执行查询后的查询结果默认升序排列(asc),如果强制按降序排列,需要在列后使用desc关键字。