数据库应用-mysql语句拾遗
mysql> desc stu;+---------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(16) | NO | UNI | NULL | |
| sex | enum('m','w') | NO | | m | |
| age | tinyint(3) unsigned | NO | | NULL | |
| classid | char(6) | NO | | NULL | |
+---------+---------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
-- 标准格式添加,指定所有的字段,给定所有的值
mysql> insert into stu(id,name,sex,age,classid) values(null,'zhangsan','m',20,'lnmp80');
Query OK, 1 row affected (0.09 sec)
-- 给定部分字段添加值(值和字段要对应上)
mysql> insert into stu(name,age,classid) values('lisi',22,'lnmp80');
Query OK, 1 row affected (0.03 sec)
-- 不给字段信息,来添加值。(值和表结构对应上)
mysql> insert into stu values(null,'wangwu','w',25,'lnmp80');
Query OK, 1 row affected (0.08 sec)
-- 批量添加数据
mysql> insert into stu(name,sex,age,classid)
-> values('qq','w',21,'lamp81'),
-> ('aa','m',26,'lnmp81'),
-> ('bb','w',20,'lnmp80');
Query OK, 3 rows affected (0.03 sec)
Records: 3Duplicates: 0Warnings: 0
mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
|5 | aa | m |26 | lnmp81|
|6 | bb | w |20 | lnmp80|
+----+----------+-----+-----+---------+
6 rows in set (0.00 sec)
mysql>
mysql> insert into stu values
-> (null,'zhaoliu','w',19,'lnmp81'),
-> (null,'tianqi','m',27,'lnmp82'),
-> (null,'uu','w',26,'lnmp80'),
-> (null,'yy','m',24,'lnmp82'),
-> (null,'pp','w',29,'lnmp81');
Query OK, 5 rows affected (0.03 sec)
Records: 5Duplicates: 0Warnings: 0
mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
|5 | aa | m |26 | lnmp81|
|6 | bb | w |20 | lnmp80|
|7 | zhaoliu| w |19 | lnmp81|
|8 | tianqi | m |27 | lnmp82|
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
mysql>
--2. 数据的修改:
--===================================================
--格式: update 表名 set 字段名=修改值[,字段名=修改值[,....]]
--实例
--将学号id值为5的信息,年龄改为28,班级设为lamp82
mysql> update stu set age=28,classid='lamp82' where id=5
Query OK, 1 row affected (0.11 sec)
Rows matched: 1Changed: 1Warnings: 0
mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
|5 | aa | m |28 | lnmp82|
|6 | bb | w |20 | lnmp80|
|7 | zhaoliu| w |19 | lnmp81|
|8 | tianqi | m |27 | lnmp82|
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
mysql>
--3. 数据的删除
---===========================================================================
--格式: delete from 表名
--删除实例:
--1.删除id号为5的信息
mysql> delete from stu where id=5;
--2.删除班级为lnmp80的男生信息
mysql> delete from stu where classid='lnmp80' and sex='m';
--3.删除年龄在21到25之间的信息
mysql> delete from stu where age>=21 and age delete from stu where age between 21 and 25;
--4.删除年龄在21到25之外的信息
mysql> delete from stu where age25;
mysql> delete from stu where age not between 21 and 25;
-- 4. 数据的查询
--=======================================================
--格式: select 字段名|* from 表名
-- [ where 搜索条件]
-- [ group by 分组列名]
-- [ order by 排序列名 ]
-- [ limit m[,n] 获取部分数据(分页) ]
实例:
mysql>
mysql> select * from stu;--查看所有字段的所有信息
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
|5 | aa | m |28 | lnmp82|
|6 | bb | w |20 | lnmp80|
|7 | zhaoliu| w |19 | lnmp81|
|8 | tianqi | m |27 | lnmp82|
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
-- 查看name/sex/age这几个字段的所有信息
mysql> select name,sex,age from stu;
+----------+-----+-----+
| name | sex | age |
+----------+-----+-----+
| zhangsan | m |20 |
| lisi | m |22 |
| wangwu | w |25 |
| qq | w |21 |
| aa | m |28 |
| bb | w |20 |
| zhaoliu| w |19 |
| tianqi | m |27 |
| uu | w |26 |
| yy | m |24 |
| pp | w |29 |
+----------+-----+-----+
11 rows in set (0.00 sec)
-- 查看数据,将name字段名换成username(其中as关键字可以省略不写)
mysql> select name as username,sex,age from stu;
-- 查看所有学生信息,并追加一列(年龄都加5的值),起个别名age2
mysql> select *,age+5age2 from stu;
+----+----------+-----+-----+---------+------+
| id | name | sex | age | classid | age2 |
+----+----------+-----+-----+---------+------+
|1 | zhangsan | m |20 | lnmp80| 25 |
|2 | lisi | m |22 | lnmp80| 27 |
.....
| 11 | pp | w |29 | lnmp81| 34 |
+----+----------+-----+-----+---------+------+
11 rows in set (0.00 sec)
-- 在查看学生信息时,追加一列。值为beijing,字段名为city
mysql> select *,"beijing" city from stu;
+----+----------+-----+-----+---------+---------+
| id | name | sex | age | classid | city |
+----+----------+-----+-----+---------+---------+
|1 | zhangsan | m |20 | lnmp80| beijing |
|2 | lisi | m |22 | lnmp80| beijing |
|3 | wangwu | w |25 | lnmp80| beijing |
....
| 10 | yy | m |24 | lnmp82| beijing |
| 11 | pp | w |29 | lnmp81| beijing |
+----+----------+-----+-----+---------+---------+
11 rows in set (0.00 sec)
-- 将字串aa和bb合并到一列中输出
mysql> select concat("aa","bb");
+-------------------+
| concat("aa","bb") |
+-------------------+
| aabb |
+-------------------+
1 row in set (0.02 sec)
-- 将stu表中班级和姓名字段合并到一列输出,起字段名为uname
mysql> select concat(classid,":",name) as uname from stu;
+-----------------+
| uname |
+-----------------+
| lnmp80:zhangsan |
| lnmp80:lisi |
。。。
| lnmp82:tianqi |
| lnmp80:uu |
| lnmp82:yy |
| lnmp81:pp |
+-----------------+
11 rows in set (0.00 sec)
mysql>
-- where条件查询语句
--1. 年龄在20至25岁的学生信息(包含20和25)
mysql> select * from stu where age>=20 and age select * from stu where age between 20 and 25;
--2. id号为3,5,8,9的学生信息。
mysql> select * from stu where id=3 or id=5 or id=8 or id=9
mysql> select * from stu where id in(3,5,8,9);
--3. 获取lamp80期的女生信息
mysql> select * fromstu where classid='lnmp80' and sex="w"
--4. 获取性别为m的lamp81和lamp82的学生信息
mysql> select * fromstu where classid in('lnmp81','lamp82') and sex="w"
--5. 查询数据时去除重复的数据
mysql> select distinct classid from stu;
+---------+
| classid |
+---------+
| lnmp80|
| lnmp81|
| lnmp82|
+---------+
3 rows in set (0.00 sec)
--6. 查询学生信息id不是1,3,5,8,10的信息
mysql> select * from stu where id not in(1,3,5,8,10);
--7. like模糊查询只支持两个通配符: '%'表示任意长度的任意值, '_'表示1位的任意值。
-- 获取name是由z字符开头的所有信息
mysql> select * from stu where name like 'z%';
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|7 | zhaoliu| w |19 | lnmp81|
+----+----------+-----+-----+---------+
2 rows in set (0.00 sec)
-- 查看name值中包含a字符的所有信息
mysql> select * from stu where name like '%a%';
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|5 | aa | m |28 | lnmp82|
|7 | zhaoliu| w |19 | lnmp81|
|8 | tianqi | m |27 | lnmp82|
+----+----------+-----+-----+---------+
5 rows in set (0.00 sec)
-- 查看name是由两个字符构成的信息。
mysql> select * from stu where name like '__';
+----+------+-----+-----+---------+
| id | name | sex | age | classid |
+----+------+-----+-----+---------+
|4 | qq | w |21 | lnmp81|
|5 | aa | m |28 | lnmp82|
|6 | bb | w |20 | lnmp80|
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+------+-----+-----+---------+
6 rows in set (0.00 sec)
-- 统计查询(mysql的聚合函数:count() /sum() /max() /min() /avg()
-- 统计stu表的数据条数11,年龄最大29,最小19,平均年龄23.7273,年龄总和261
mysql> select count(*),max(age),min(age),avg(age),sum(age) from stu;
+----------+----------+----------+----------+----------+
| count(*) | max(age) | min(age) | avg(age) | sum(age) |
+----------+----------+----------+----------+----------+
| 11 | 29 | 19 |23.7273 | 261 |
+----------+----------+----------+----------+----------+
1 row in set (0.00 sec)
-- 分组查询: group by 字段名
-- 按班级号分组查询
mysql> select classid from stu group by classid;
+---------+
| classid |
+---------+
| lnmp80|
| lnmp81|
| lnmp82|
+---------+
3 rows in set (0.00 sec)
-- 按班级分组并统计,统计每个班的人数,最大年龄,最小年龄
mysql> select classid,count(*),max(age),min(age) from stu group by classid;
+---------+----------+----------+----------+
| classid | count(*) | max(age) | min(age) |
+---------+----------+----------+----------+
| lnmp80| 5 | 26 | 20 |
| lnmp81| 3 | 29 | 19 |
| lnmp82| 3 | 28 | 24 |
+---------+----------+----------+----------+
3 rows in set (0.00 sec)
-- 统计每个班男生的平均年龄
mysql> select classid,avg(age) from stu where sex='m' group by classid;
+---------+----------+
| classid | avg(age) |
+---------+----------+
| lnmp80|21.0000 |
| lnmp82|26.3333 |
+---------+----------+
2 rows in set (0.00 sec)
-- 按班级分组,统计每个班的平均年龄,并获取平均年龄在23及以上信息。
mysql> select classid,avg(age) from stu group by classid having avg(age)>=23;
+---------+----------+
| classid | avg(age) |
+---------+----------+
| lnmp81|23.0000 |
| lnmp82|26.3333 |
+---------+----------+
2 rows in set (0.02 sec)
--排序:order by 字段名
mysql> select* from stu; --没有排序
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
。。。
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
--按照年龄升序排序
mysql> select* from stu order by age;
mysql> select* from stu order by age asc; --等价于上面语句
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|7 | zhaoliu| w |19 | lnmp81|
|1 | zhangsan | m |20 | lnmp80|
|6 | bb | w |20 | lnmp80|
|4 | qq | w |21 | lnmp81|
|2 | lisi | m |22 | lnmp80|
| 10 | yy | m |24 | lnmp82|
|3 | wangwu | w |25 | lnmp80|
|9 | uu | w |26 | lnmp80|
|8 | tianqi | m |27 | lnmp82|
|5 | aa | m |28 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
--多列排序:首先按班级升序,相同班级再按年龄降序排序
mysql> select* from stu order by classid,age desc;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|9 | uu | w |26 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|1 | zhangsan | m |20 | lnmp80|
|6 | bb | w |20 | lnmp80|
| 11 | pp | w |29 | lnmp81|
|4 | qq | w |21 | lnmp81|
|7 | zhaoliu| w |19 | lnmp81|
|5 | aa | m |28 | lnmp82|
|8 | tianqi | m |27 | lnmp82|
| 10 | yy | m |24 | lnmp82|
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)
--limit 分页:
--分页公式: limit (当前页-1)*页大小,页大小;
mysql> select * from stu limit 5; --获取前5条信息
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
|5 | aa | m |28 | lnmp82|
+----+----------+-----+-----+---------+
5 rows in set (0.00 sec)
--获取年龄最大的3条数据
mysql> select * from stu order by age desc limit 3;
+----+--------+-----+-----+---------+
| id | name | sex | age | classid |
+----+--------+-----+-----+---------+
| 11 | pp | w |29 | lnmp81|
|5 | aa | m |28 | lnmp82|
|8 | tianqi | m |27 | lnmp82|
+----+--------+-----+-----+---------+
3 rows in set (0.00 sec)
--以4条数据为一页,取第一页
mysql> select * from stu limit 0,4;
+----+----------+-----+-----+---------+
| id | name | sex | age | classid |
+----+----------+-----+-----+---------+
|1 | zhangsan | m |20 | lnmp80|
|2 | lisi | m |22 | lnmp80|
|3 | wangwu | w |25 | lnmp80|
|4 | qq | w |21 | lnmp81|
+----+----------+-----+-----+---------+
4 rows in set (0.00 sec)
--以4条数据为1页,取第二页
mysql> select * from stu limit 4,4;
+----+---------+-----+-----+---------+
| id | name | sex | age | classid |
+----+---------+-----+-----+---------+
|5 | aa | m |28 | lnmp82|
|6 | bb | w |20 | lnmp80|
|7 | zhaoliu | w |19 | lnmp81|
|8 | tianqi| m |27 | lnmp82|
+----+---------+-----+-----+---------+
4 rows in set (0.00 sec)
mysql> select * from stu limit 8,4;
+----+------+-----+-----+---------+
| id | name | sex | age | classid |
+----+------+-----+-----+---------+
|9 | uu | w |26 | lnmp80|
| 10 | yy | m |24 | lnmp82|
| 11 | pp | w |29 | lnmp81|
+----+------+-----+-----+---------+
3 rows in set (0.00 sec)
-- 数据的导入和导出
--================================================
-- 导出lnmp80数据的所有信息
D:\xampp\htdocs\lamp80>mysqldump -u root -p lnmp80 >lnmp80_20170106.sql
Enter password:
-- 只导出lamp80库下的stu表信息
D:\xampp\htdocs\lnmp80>mysqldump -u root -p lnmp80 stu>stu.sql
Enter password:
D:\xampp\htdocs\lnmp80\python_mysql03>
--数据库lnmp80的导入(要求数据库必须存在)
D:\xampp\htdocs\lnmp80>mysql -u root -p lnmp80mysql -u root -p lnmp80 < stu.sql
页:
[1]