批量导入数据: 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 |+--------+----------+---------+-----------+