//查看数据库
mysql> SHOW DATABASES;
±-------------------+
| Database |
±-------------------+
| information_schema |
| ha |
| hahhaha |
| itcast |
| mysql |
| performance_schema |
| test |
±-------------------+
7 rows in set
//使用itcast数据库
mysql> USE itcast;
Database changed
//查询所有字段 在SELECT语句中使用星号(“”)通配符代替所有字段
mysql> SELECTFROM HAHAHA;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 1 | songjiang | 40 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 4 | sonHH | 760 | 男 |
±—±----------±------±-------+
4 rows in set
//查询指定字段
mysql> SELECT name,id FROM HAHAHA;
±----------±—+
| name | id |
±----------±—+
| songjiang | 1 |
| jiang | 2 |
| son | 3 |
| sonHH | 4 |
±----------±—+
4 rows in set
//关系运算符的查询指定字段
mysql> SELECT id,name FROM HAHAHA WHERE id=2;
±—±------+
| id | name |
±—±------+
| 2 | jiang |
±—±------+
1 row in set
mysql> SELECT name,gender FROM HAHAHA WHERE name=‘son’;
±-----±-------+
| name | gender |
±-----±-------+
| son | 男 |
±-----±-------+
1 row in set
mysql> SELECT name,grade FROM HAHAHA WHERE grade>=400;
±------±------+
| name | grade |
±------±------+
| jiang | 400 |
| son | 700 |
| sonHH | 760 |
±------±------+
3 rows in set
//带IN关键字的查询 用于判断某个字段的值是否在指定集合中,如果字段的值在集合中则满足条件,该字段所在的记录将被查询出来
mysql> SELECT id,grade,name,gender FROM HAHAHA WHERE id IN(1,2,3);
±—±------±----------±-------+
| id | grade | name | gender |
±—±------±----------±-------+
| 1 | 40 | songjiang | 男 |
| 2 | 400 | jiang | 男 |
| 3 | 700 | son | 男 |
±—±------±----------±-------+
3 rows in set
//带IN关键字的查询,id值不为1,2,3的记录
mysql> SELECT id,grade,name,gender FROM HAHAHA WHERE id NOT IN(1,2,3);
±—±------±------±-------+
| id | grade | name | gender |
±—±------±------±-------+
| 4 | 760 | sonHH | 男 |
±—±------±------±-------+
1 row in set
//带BETWEEN AND关键字的查询
查询HAHAHA表中id值在1和4之间的学生姓名 范围条件的起始值AND范围条件的起始值
mysql> SELECT id,name FROM HAHAHA WHERE id BETWEEN 1 AND 4;
±—±----------+
| id | name |
±—±----------+
| 1 | songjiang |
| 2 | jiang |
| 3 | son |
| 4 | sonHH |
±—±----------+
4 rows in set
//带BETWEEN AND关键字的无2,3记录查询
mysql> SELECT id,name FROM HAHAHA WHERE id NOT BETWEEN 2 AND 3;
±—±----------+
| id | name |
±—±----------+
| 1 | songjiang |
| 4 | sonHH |
±—±----------+
2 rows in set
//空值查询
mysql> SELECT id,name,grade,gender FROM HAHAHA WHERE gender IS NULL;
Empty set
//空值查询 NOT关键字用于判断字段不是空值。
mysql> SELECT id,name,grade,gender FROM HAHAHA WHERE gender IS NOT NULL;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 1 | songjiang | 40 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 4 | sonHH | 760 | 男 |
±—±----------±------±-------+
4 rows in set
// 带DISTINCT关键字的查询 使用DISTINCT关键字来去掉查询记录中重复的值。
mysql> SELECT DISTINCT gender FROM HAHAHA;
±-------+
| gender |
±-------+
| 男 |
±-------+
1 row in set
//DISTINCT关键字作用多个字段
mysql> SELECT DISTINCT grade,gender FROM HAHAHA;
±------±-------+
| grade | gender |
±------±-------+
| 40 | 男 |
| 400 | 男 |
| 700 | 男 |
| 760 | 男 |
±------±-------+
4 rows in set
mysql> SELECT DISTINCT gender,name FROM HAHAHA;
±-------±----------+
| gender | name |
±-------±----------+
| 男 | songjiang |
| 男 | jiang |
| 男 | son |
| 男 | sonHH |
±-------±----------+
4 rows in set
//INSERT语句向hahaha表中插入记录
mysql> INSERT INTO HAHAHA(name,grade,gender) VALUES(‘SJ’,10,‘女’);
Query OK, 1 row affected
mysql> SELECT *FROM HAHAHA;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 1 | songjiang | 40 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 4 | sonHH | 760 | 男 |
| 5 | SJ | 10 | 女 |
±—±----------±------±-------+
5 rows in set
//INSERT语句向hahaha表中插入记录
mysql> INSERT INTO HAHAHA(name,grade,gender) VALUES(‘son’,700,‘女’);
Query OK, 1 row affected
//查询HAHAHA表中的gender和name字段,使用distinct关键字作用于这两个字段,
mysql> SELECT DISTINCT name,grade FROM HAHAHA;
±----------±------+
| name | grade |
±----------±------+
| songjiang | 40 |
| jiang | 400 |
| son | 700 |
| sonHH | 760 |
| SJ | 10 |
±----------±------+
5 rows in set
5个记录 这说明DISTINCT去除了重复的记录。
//带LIKE关键字的查询,用于对字符串进行模糊查询
查找HAHAHA表中 name 字段值
以字符“s”开头的学生id开头%结束
mysql> SELECT id,name FROM HAHAHA WHERE name LIKE ‘s%’;
±—±----------+
| id | name |
±—±----------+
| 1 | songjiang |
| 3 | son |
| 4 | sonHH |
| 5 | SJ |
| 6 | son |
±—±----------+
5 rows in set
//以字符串“s”开始,以字符串“n”结束,并且两个字符串之间只有一个字符的记录
mysql> SELECT*FROM HAHAHA WHERE name LIKE ‘s_n’;
±—±-----±------±-------+
| id | name | grade | gender |
±—±-----±------±-------+
| 3 | son | 700 | 男 |
| 6 | son | 700 | 女 |
±—±-----±------±-------+
2 rows in set
mysql> SELECT*FROM HAHAHA WHERE name LIKE ‘_n’;
Empty set
mysql> SELECTFROM HAHAHA WHERE name LIKE ‘_ang’;
Empty set
//查询HAHAHAt表中name字段值包含6个字符,并且以字符串“ing”结束的记录
mysql> SELECTFROM HAHAHA WHERE name LIKE ‘______ang’;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 1 | songjiang | 40 | 男 |
±—±----------±------±-------+
1 row in set
//添加一条记录包含一个百分号字面值
mysql> INSERT INTO HAHAHA(name,grade,gender) VALUES(‘SUN%ER’,95,‘男’);
Query OK, 1 row affected
//添加的新记录其name字段值为“sun%er”,包含一个百分号字面值
mysql> SELECTFROM HAHAHA WHERE name like ‘%%%’;
±—±-------±------±-------+
| id | name | grade | gender |
±—±-------±------±-------+
| 7 | SUN%ER | 95 | 男 |
±—±-------±------±-------+
1 row in set
//带AND关键字的多条件查询
查询HAHAHA表中id字段值小于3,并且gender字段值为“女”的学生姓名
mysql> SELECT id,name,gender FROM HAHAHA WHERE id<3 AND gender=‘女’;
Empty set
//查询HAHAHA表中id字段值小于3,并且gender字段值为“男”的学生姓名
mysql> SELECT id,name,gender FROM HAHAHA WHERE id<3 AND gender=‘男’;
±—±----------±-------+
| id | name | gender |
±—±----------±-------+
| 1 | songjiang | 男 |
| 2 | jiang | 男 |
±—±----------±-------+
2 rows in set
//查询HAHAHA表中id字段值在1、2、3、4之中,name字段值以字符串“ng”结束,并且grade字段值小于700的记录,
mysql> SELECT id,name,gender FROM HAHAHA WHERE id in(1,2,3,4)AND name LIKE ‘%ng’ AND grade<700;
±—±----------±-------+
| id | name | gender |
±—±----------±-------+
| 1 | songjiang | 男 |
| 2 | jiang | 男 |
±—±----------±-------+
2 rows in set
//带OR关键字的多条件查询
查询HAHAHA表中id字段值小于3或者gender字段值为“男”的学生姓名
mysql> SELECT id,name,gender FROM HAHAHA WHERE id<3 OR gender=‘男’;
±—±----------±-------+
| id | name | gender |
±—±----------±-------+
| 1 | songjiang | 男 |
| 2 | jiang | 男 |
| 3 | son | 男 |
| 4 | sonHH | 男 |
| 7 | SUN%ER | 男 |
±—±----------±-------+
5 rows in set
//查询HAHAHA表中满足条件name字段值以字符“s”开始,或者grade字段为“700”的记录
mysql> SELECT id,name,gender FROM HAHAHA WHERE name LIKE ‘s%’ OR grade=700;
±—±----------±-------+
| id | name | gender |
±—±----------±-------+
| 1 | songjiang | 男 |
| 3 | son | 男 |
| 4 | sonHH | 男 |
| 5 | SJ | 女 |
| 6 | son | 女 |
| 7 | SUN%ER | 男 |
±—±----------±-------+
6 rows in set
//OR和AND关键字一起使用的情况
AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式。
查询HAHAHA表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为700,的学生姓名,
mysql> SELECT id,name,gender FROM HAHAHA WHERE gender=‘女’ OR gender=‘男’ AND grade=700;
±—±-----±-------+
| id | name | gender |
±—±-----±-------+
| 3 | son | 男 |
| 5 | SJ | 女 |
| 6 | son | 女 |
±—±-----±-------+
3 rows in set
//聚合函数
//COUNT()函数,统计记录条数
mysql> SELECT COUNT() FROM HAHAHA;
±---------+
| COUNT(*) |
±---------+
| 7 |
±---------+
1 row in set
//SUM()函数 求和
mysql> SELECT SUM(grade) FROM HAHAHA;
±-----------+
| SUM(grade) |
±-----------+
| 2705 |
±-----------+
1 row in set
//AVG()函数 求平均值
mysql> SELECT AVG(grade) FROM HAHAHA;
±-------------------+
| AVG(grade) |
±-------------------+
| 386.42857142857144 |
±-------------------+
1 row in set
//MAX()函数 求最大值
mysql> SELECT MAX(grade) FROM HAHAHA;
±-----------+
| MAX(grade) |
±-----------+
| 760 |
±-----------+
1 row in set
//MIN()函数 求最小值
mysql> SELECT MIN(grade) FROM HAHAHA;
±-----------+
| MIN(grade) |
±-----------+
| 10 |
±-----------+
1 row in set
//对查询结果排序
从查询结果可以看到,返回的记录按照ORDER BY指定的字段grade进行排序,并且默认是按升序排列
mysql> SELECT * FROM HAHAHA ORDER BY grade;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 5 | SJ | 10 | 女 |
| 1 | songjiang | 40 | 男 |
| 7 | SUN%ER | 95 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 6 | son | 700 | 女 |
| 4 | sonHH | 760 | 男 |
±—±----------±------±-------+
7 rows in set
//ASC表示按照升序
mysql> SELECT * FROM HAHAHA ORDER BY grade ASC;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 5 | SJ | 10 | 女 |
| 1 | songjiang | 40 | 男 |
| 7 | SUN%ER | 95 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 6 | son | 700 | 女 |
| 4 | sonHH | 760 | 男 |
±—±----------±------±-------+
7 rows in set
//DESC表示按照降序
mysql> SELECT * FROM HAHAHA ORDER BY grade DESC;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 4 | sonHH | 760 | 男 |
| 3 | son | 700 | 男 |
| 6 | son | 700 | 女 |
| 2 | jiang | 400 | 男 |
| 7 | SUN%ER | 95 | 男 |
| 1 | songjiang | 40 | 男 |
| 5 | SJ | 10 | 女 |
±—±----------±------±-------+
7 rows in set
//按照gender字段的升序和grade字段的降序进行排列
mysql> SELECT * FROM HAHAHA ORDER BY gender ASC, grade DESC;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 6 | son | 700 | 女 |
| 5 | SJ | 10 | 女 |
| 4 | sonHH | 760 | 男 |
| 3 | son | 700 | 男 |
| 2 | jiang | 400 | 男 |
| 7 | SUN%ER | 95 | 男 |
| 1 | songjiang | 40 | 男 |
±—±----------±------±-------+
7 rows in set
//查出HAHAHA表中的所有记录,并按照grade字段进行排序
使用GROUP BY按某个字段或者多个字段中的值进行分组,字段中值相同的为一组
单独使用group by关键字,查询的是每个分组中的一条记录
mysql> SELECT * FROM HAHAHA GROUP BY gender;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 5 | SJ | 10 | 女 |
| 1 | songjiang | 40 | 男 |
±—±----------±------±-------+
2 rows in set
//分组查询:GROUP BY和聚合函数一起使用
mysql> SELECT COUNT(),gender FROM HAHAHA GROUP BY gender;
±---------±-------+
| COUNT() | gender |
±---------±-------+
| 2 | 女 |
| 5 | 男 |
±---------±-------+
2 rows in set
//分组查询
将HAHAHA 表按照gender字段进行分组查询,查询出grade字段值之和小于700的分组
mysql> SELECT sum(grade),gender FROM HAHAHA GROUP BY gender HAVING SUM(grade)<700;
Empty set
//使用LIMIT限制查询结果的数量
查询HAHAHA表中的前4条记录
执行语句中没有指定返回记录的偏移量,只指定了查询记录的条数4,因此返回结果从第一条记录开始
mysql> SELECT * FROM HAHAHA LIMIT 4;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 1 | songjiang | 40 | 男 |
| 2 | jiang | 400 | 男 |
| 3 | son | 700 | 男 |
| 4 | sonHH | 760 | 男 |
±—±----------±------±-------+
4 rows in set
//查询HAHAHAt表中grade字段值从第2位到第4位的学生
偏移量ORDER BY grade DESC 降序
mysql> SELECT * FROM HAHAHA ORDER BY grade DESC LIMIT 2,4;
±—±----------±------±-------+
| id | name | grade | gender |
±—±----------±------±-------+
| 6 | son | 700 | 女 |
| 2 | jiang | 400 | 男 |
| 7 | SUN%ER | 95 | 男 |
| 1 | songjiang | 40 | 男 |
±—±----------±------±-------+
4 rows in set
//函数(列表)查询HAHAHA表中的所有记录,将各个字段值使用下划线“_”连接起来
mysql> SELECT CONCAT(id,’’,name,’’,grade,’’,gender)FROM HAHAHA;
±-----------------------------------------+
| CONCAT(id,’’,name,’’,grade,’’,gender) |
±-----------------------------------------+
| 1_songjiang_40_男 |
| 2_jiang_400_男 |
| 3_son_700_男 |
| 4_sonHH_760_男 |
| 5_SJ_10_女 |
| 6_son_700_女 |
| 7_SUN%ER_95_男 |
±-----------------------------------------+
7 rows in set
//查询HAHAHA表中的id和gender字段值,如果gender字段的值为“男”则返回1
mysql> SELECT id,IF(gender=‘男’,1,0) FROM HAHAHA;
±—±--------------------+
| id | IF(gender=‘男’,1,0) |
±—±--------------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 0 |
| 6 | 0 |
| 7 | 1 |
±—±--------------------+
7 rows in set
//为表取别名
mysql> SELECT * FROM HAHAHA AS a WHERE a.gender=‘女’;
±—±-----±------±-------+
| id | name | grade | gender |
±—±-----±------±-------+
| 5 | SJ | 10 | 女 |
| 6 | son | 700 | 女 |
±—±-----±------±-------+
2 rows in set
//查询HAHAHA表中的所有记录的name和gender字段值,并为这两个字段其别名stu_name和stu_gender
mysql> SELECT name AS stu_name,gender stu_gender FROM HAHAHA;
±----------±-----------+
| stu_name | stu_gender |
±----------±-----------+
| songjiang | 男 |
| jiang | 男 |
| son | 男 |
| sonHH | 男 |
| SJ | 女 |
| son | 女 |
| SUN%ER | 男 |
±----------±-----------+
7 rows in set