欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql基本运算符

程序员文章站 2022-04-22 11:24:33
...

批量导入数据: mysql load data local infile 'e://source/student.txt' into table student lines terminated by '\r\n';mysql select * from student;+--------+----------+---------+-----------+| stu_id | stu_name | stu_tel | stu_score |+--------+

批量导入数据:

mysql> load data local infile 'e://source/student.txt' into table student lines terminated by '\r\n';
mysql> select * from student;
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
|      1 | a        |     151 |        60 |
|      2 | b        |     152 |        61 |
|      3 | c        |     153 |        62 |
|      4 | d        |     154 |        63 |
|      5 | e        |     155 |        64 |
|      6 | a        |     156 |        65 |
|      7 | b        |     157 |        66 |
|      8 | c        |     158 |        67 |
|      9 | d        |     159 |        68 |
|     10 | e        |     160 |        69 |
+--------+----------+---------+-----------+
在where字句之后还可以使用group by运算符,根据给定字段的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
mysql> select *,max(stu_score) 
     > from student 
     > group by stu_name;
+--------+----------+---------+-----------+----------------+
| stu_id | stu_name | stu_tel | stu_score | max(stu_score) |
+--------+----------+---------+-----------+----------------+
|      1 | a        |     151 |        60 |             65 |
|      2 | b        |     152 |        61 |             66 |
|      3 | c        |     153 |        62 |             67 |
|      4 | d        |     154 |        63 |             68 |
|      5 | e        |     155 |        64 |             69 |
+--------+----------+---------+-----------+----------------+

group by 可以对包含两个或多个列进行分组。

mysql> select * from student;
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
|      1 | a        |     151 |        60 |
|      2 | a        |     152 |        60 |
|      3 | a        |     153 |        61 |
|      4 | b        |     154 |        62 |
|      5 | b        |     155 |        62 |
|      6 | b        |     156 |        63 |
|      7 | c        |     157 |        64 |
|      8 | c        |     158 |        64 |
|      9 | c        |     159 |        65 |
+--------+----------+---------+-----------+

mysql> select *,count(stu_tel) from student group by stu_name,stu_score;
+--------+----------+---------+-----------+----------------+
| stu_id | stu_name | stu_tel | stu_score | count(stu_tel) |
+--------+----------+---------+-----------+----------------+
|      1 | a        |     151 |        60 |              2 |
|      3 | a        |     153 |        61 |              1 |
|      4 | b        |     154 |        62 |              2 |
|      6 | b        |     156 |        63 |              1 |
|      7 | c        |     157 |        64 |              2 |
|      9 | c        |     159 |        65 |              1 |
+--------+----------+---------+-----------+----------------+


在group by子句之后使用having运算符,对查询结果限定条件,系统仅返回满足条件的组结果。having子句可包含一个或多个用and和or连接的谓词。

mysql> select *,max(stu_score) as Max 
     > from student 
     > group by stu_name 
     > having Max>65;
+--------+----------+---------+-----------+------+
| stu_id | stu_name | stu_tel | stu_score | Max  |
+--------+----------+---------+-----------+------+
|      2 | b        |     152 |        61 |   66 |
|      3 | c        |     153 |        62 |   67 |
|      4 | d        |     154 |        63 |   68 |
|      5 | e        |     155 |        64 |   69 |
+--------+----------+---------+-----------+------+
在having子句之后使用order by运算符,可以是查询结果按照顺序排序
mysql> select *,max(stu_score) as Max 
     > from student 
     > group by stu_name 
     > having Max>65 
     > order by Max desc;
+--------+----------+---------+-----------+------+
| stu_id | stu_name | stu_tel | stu_score | Max  |
+--------+----------+---------+-----------+------+
|      5 | e        |     155 |        64 |   69 |
|      4 | d        |     154 |        63 |   68 |
|      3 | c        |     153 |        62 |   67 |
|      2 | b        |     152 |        61 |   66 |
+--------+----------+---------+-----------+------+
在order by子句之后使用limit运算符,限制显示多少条数据
mysql> select *,max(stu_score) as Max 
     > from student 
     > group by stu_name 
     > having Max>65 
     > order by Max desc 
     > limit 1,3;
+--------+----------+---------+-----------+------+
| stu_id | stu_name | stu_tel | stu_score | Max  |
+--------+----------+---------+-----------+------+
|      4 | d        |     154 |        63 |   68 |
|      3 | c        |     153 |        62 |   67 |
|      2 | b        |     152 |        61 |   66 |
+--------+----------+---------+-----------+------+
select子句中可以插入case表达式,这个表达式充当一种if-then-else语句。
mysql> select *,
     > case 
     > when stu_score>'65' then '1' 
     > when stu_score='65' then '2' 
     > else '3' end as level
     > from student;
+--------+----------+---------+-----------+-------+
| stu_id | stu_name | stu_tel | stu_score | level |
+--------+----------+---------+-----------+-------+
|      1 | a        |     151 |        60 | 3     |
|      2 | b        |     152 |        61 | 3     |
|      3 | c        |     153 |        62 | 3     |
|      4 | d        |     154 |        63 | 3     |
|      5 | e        |     155 |        64 | 3     |
|      6 | a        |     156 |        65 | 2     |
|      7 | b        |     157 |        66 | 1     |
|      8 | c        |     158 |        67 | 1     |
|      9 | d        |     159 |        68 | 1     |
|     10 | e        |     160 |        69 | 1     |
+--------+----------+---------+-----------+-------+
match运算符:用于查找某一列中字符串内的某一单词。用于产品介绍,图书内容,帮助手册等存有大量信息的查找(待续)。

like运算符:使用模式查找,其中百分号%代表任意0个、1个或多个任意字符,下划线_代表一个随机字符。若不用百分号或者下划线,like就相当于等于号=。

mysql> select * from student 
     > where stu_tel like '_6%';
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
|     10 | e        |     160 |        69 |
+--------+----------+---------+-----------+

like的模式匹配中可以使用转义字符定义escape。escape可以定义任何字符为转移字符。如下例定义‘#’为转义字符,跟在‘#’后面的‘_’失去了原有意义。

mysql> select * from student 
     > where stu_name like '%#_%' escape '#';
+--------+----------+---------+-----------+
| stu_id | stu_name | stu_tel | stu_score |
+--------+----------+---------+-----------+
|     11 | a_b      |     166 |        70 |
+--------+----------+---------+-----------+