ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL操作实例(中)

2021-12-30 09:05:08  阅读:125  来源: 互联网

标签:male name MySQL 实例 sec mysql 操作 NULL id


MySQL操作实例(中)

6、删出表

  • 语法
drop table 表名;  # 线上禁用
  • 实例
mysql> drop table t9;
Query OK, 0 rows affected (0.18 sec)

7、查询表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

8、复制表结构

mysql> create table t8 like t1;
Query OK, 0 rows affected (0.33 sec)

9、操作表数据行

1)增加数据

语法

insert into 表名 (列1, 列2) values (值1,'值2');

实例

# 暴力复制
mysql> insert into t1 (name) select name from t8;
Query OK, 4 rows affected (0.09 sec)
Records: 4 Duplicates: 0  Warnings: 0

2)删除数据

delete from 表名 where 条件;

mysql> insert into t1 (id, name) values (1, 'qf1');
mysql> insert into t1 (id, name) values (2, 'qf2');
mysql> insert into t1 (id, name) values (3, 'qf3');
mysql> insert into t1 (id, name) values (4, 'qf4');
mysql> delete from t1 where id=1;
mysql> delete from t1 where id>1;
mysql> delete from t1 where id>=1;
mysql> delete from t1 where id<1;
mysql> delete from t1 where id<=1;
mysql> delete from t1 where id>=1 and id<10;
Query OK, 1 row affected (0.06 sec

truncate 表名; # 没有where条件的

mysql> truncate t1;
Query OK, 0 rows affected (0.25 sec)
mysql> select * from t1;
Empty set (0.00 sec)
mysql> insert into t1 (id, name) values (1, 'qf1');
Query OK, 1 row affected (0.06 sec)
mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | qf1 |
+------+------+
1 row in set (0.00 sec)

3)区别

delete 之后,插入数据从上一次主键自增加1开始, truncate则是从1开始

delete 删除, 是一行一行的删除, truncate:全选删除 truncate删除的速度是高于delete的

10、修改数据

语法

update 表名 set 列名1=新值1,列名2=新值2 where 条件;

实例

mysql> insert into t1 (id, name) values (1, 'qf1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (2, 'qf2');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (3, 'qf3');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (4, 'qf4');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | qf1 |
|    2 | qf2 |
|    3 | qf3 |
|    4 | qf4 |
+------+------+
4 rows in set (0.00 sec)
mysql> update t1 set name='qfx' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from t1 ;
+------+------+
| id   | name |
+------+------+
|    1 | qfx |
|    2 | qf2 |
|    3 | qf3 |
|    4 | qf4 |
+------+------+
4 rows in set (0.00 sec)

11、查询数据

语法

select 列1, 列2 from 表名; (*代表查询所有的列)
select * from 表名; (*代表查询所有的列)

实例

mysql> select * from t1;
+------+------+------+
| id   | name | age |
+------+------+------+
|    1 | qfx | NULL |
|    2 | qf2 | NULL |
|    3 | qf3 | NULL |
|    4 | qf4 | NULL |
|    5 | qf3 | NULL |
+------+------+------+
6 rows in set (0.00 sec)
            
# between..and...: 取值范围是闭区间
            
mysql> select * from t1 where id between 2 and 3;
+------+------+------+
| id   | name | age |
+------+------+------+
|    2 | qf2 | NULL |
|    3 | qf3 | NULL |
+------+------+------+
2 rows in set (0.00 sec)
        
# 避免重复DISTINCT
mysql> insert into t1 (id, name) values (5, 'qf3');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | qfx |
|    2 | qf2 |
|    3 | qf3 |
|    4 | qf4 |
|    5 | qf3 |
+------+------+
5 rows in set (0.00 sec)
mysql> select distinct name from t1;
+------+
| name |
+------+
| qfx |
| qf2 |
| qf3 |
| qf4 |
+------+
4 rows in set (0.00 sec)
            
# 通过四则运算查询 (不要用)
mysql> alter table t1 add age int;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0  Warnings: 0
mysql> insert into t1 (id, name,age) values (5, 'qf3',10);
Query OK, 1 row affected (0.01 sec)
mysql> select * from t1;
+------+------+------+
| id   | name | age |
+------+------+------+
|    1 | qfx | NULL |
|    2 | qf2 | NULL |
|    3 | qf3 | NULL |
|    4 | qf4 | NULL |
|    5 | qf3 | NULL |
|    5 | qf3 |   10 |
+------+------+------+
6 rows in set (0.00 sec)
mysql> select name, age*10 from t1;
+------+--------+
| name | age*10 |
+------+--------+
| qfx |   NULL |
| qf2 |   NULL |
| qf3 |   NULL |
| qf4 |   NULL |
| qf3 |   NULL |
| qf3 |    100 |
+------+--------+
6 rows in set (0.00 sec)
mysql>  select name, age*10 as age from t1;
+------+------+
| name | age |
+------+------+
| qfx | NULL |
| qf2 | NULL |
| qf3 | NULL |
| qf4 | NULL |
| qf3 | NULL |
| qf3 |  100 |
+------+------+
6 rows in set (0.00 sec)
mysql> select * from t1 where id in (3,5,6);
+------+------+------+
| id   | name | age |
+------+------+------+
|    3 | qf3 | NULL |
|    5 | qf3 | NULL |
|    5 | qf3 |   10 |
+------+------+------+
3 rows in set (0.00 sec)
# like : 模糊查询
# 以x开头:
mysql> select * from t1 where name like 'q%';
+------+------+------+
| id   | name | age |
+------+------+------+
|    1 | qfx | NULL |
|    2 | qf2 | NULL |
|    3 | qf3 | NULL |
|    4 | qf4 | NULL |
|    5 | qf3 | NULL |
|    5 | qf3 |   10 |
+------+------+------+
6 rows in set (0.00 sec)
                
# 以x结尾
mysql> select * from t1 where name like '%3';
+------+------+------+
| id   | name | age |
+------+------+------+
|    3 | qf3 | NULL |
|    5 | qf3 | NULL |
|    5 | qf3 |   10 |
+------+------+------+
3 rows in set (0.00 sec)
            
# 包含x的:
mysql> select * from t1 where name like '%2%';
+------+------+------+
| id   | name | age |
+------+------+------+
|    2 | qf2 | NULL |
+------+------+------+
1 row in set (0.00 sec)

查询时用‘Name Is Null’ 作为条件

mysql>create table t8(
id int auto_increment primary key,
name varchar(32),
email varchar(32)
)charset=utf8;
mysql>insert into t8(email) values ('qfedu');
mysql> select * from t8;
+----+------+-------+
| id | name | email |
+----+------+-------+
|  1 | NULL | qfedu |
+----+------+-------+
1 row in set (0.01 sec)
mysql> select * from t8 where name is null;
+----+------+-------+
| id | name | email |
+----+------+-------+
|  1 | NULL | qfedu |
+----+------+-------+
1 row in set (0.00 sec)
  • 查询时用‘Name=’‘ ’作为查询条件
mysql> create table t9(
id int auto_increment primary key,
name varchar(32) not null default '',
email varchar(32) not null default ''
)charset=utf8;
mysql> insert into t9 (email) values ('qfedu');
mysql> select * from t9;
+----+------+-------+
| id | name | email |
+----+------+-------+
|  1 |     | qfedu |
+----+------+-------+
1 row in set (0.00 sec)
mysql> select * from t9 where name='';
+----+------+-------+
| id | name | email |
+----+------+-------+
|  1 |     | qfedu |
+----+------+-------+
1 row in set (0.01 sec)

12、单表操作

1)单表查询的语法:

select 字段1,字段2 from 表名  
                        where 条件
                        group by field
                        having 筛选
                        order by field
                        limit 限制条数

2)分组:Group By

分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息表的职位分组,或者按照 性别进行分组等

用法:select 聚合函数,字段名 from 表名

group by 分组的字段;group by 是分组的关键词, 必须和聚合函数 一起出现

where 条件语句和 group by 分组语句的先后顺序:

where > group by > having

\1. 创建表

create table qfedu(
id int not null unique auto_increment,
name varchar(20) not null,
gender enum('male','female') not null default 'male',
age int(3) unsigned not null default 28,
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int,          
depart_id int
);

\2. 插入数据

教学部 1,销售部门 2 ,运营部门 3.

insert into qfedu(name,gender,age,hire_date,post,salary,office,depart_id) values
('egon','male',18,'20170301','www.qfedu.com',7300.33,401,1),    
('yangsheng','male',78,'20150302','teacher',1000000.31,401,1),
('yangqiang','male',81,'20130305','teacher',8300,401,1),
('liuchao','male',73,'20140701','teacher',3500,401,1),
('luoyinsheng','male',28,'20121101','teacher',2100,401,1),
('nana','female',18,'20110211','teacher',9000,401,1),
('jinxin','male',18,'19000301','teacher',30000,401,1),
('xingdian','male',48,'20101111','teacher',10000,401,1),

('meiling','female',48,'20150311','sale',3000.13,402,2),
('lili','female',38,'20101101','sale',2000.35,402,2),
('xiaomei','female',18,'20110312','sale',1000.37,402,2),
('zhenzhen','female',18,'20160513','sale',3000.29,402,2),
('qianqian','female',28,'20170127','sale',4000.33,402,2),

('zhangye','male',28,'20160311','operation',10000.13,403,3),
('xiaolong','male',18,'19970312','operation',20000,403,3),
('zhaowei','female',18,'20130311','operation',19000,403,3),
('wujing','male',18,'20150411','operation',18000,403,3),
('liying','female',18,'20140512','operation',17000,403,3)

以性别为例, 进行分组, 统计一下男生和女生的人数是多少个:

mysql> select count(id), gender from qfedu group by gender;
+-----------+--------+
| count(id) | gender |
+-----------+--------+
|        10 | male   |
|         8 | female |
+-----------+--------+
2 rows in set (0.00 sec)

对部门进行分组, 求出每个部门年龄最大的那个人

注意:出现 sql_mode=only_full_group_by 错误 需修改 配置文件/ etc/my.cnf [mysqld] 段添加 sql模式,重启 mysqld

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_
ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
mysql> select depart_id,name, max(age) from qfedu group by depart_id;
+-----------+---------+----------+
| depart_id | name   | max(age) |
+-----------+---------+----------+
|         1 | egon   |       81 |
|         2 | meiling |       48 |
|         3 | zhangye |       28 |
+-----------+---------+----------+
3 rows in set (0.00 sec)

Min : 求最小的

Sum :求和

mysql> select depart_id, sum(age) from qfedu group by depart_id;
+-----------+----------+
| depart_id | sum(age) |
+-----------+----------+
|         1 |      362 |
|         2 |      150 |
|         3 |      100 |
+-----------+----------+
3 rows in set (0.00 sec)

Count :计数

mysql> select depart_id,count(depart_id) from qfedu group by depart_id;
+-----------+------------------+
| depart_id | count(depart_id) |
+-----------+------------------+
|         1 |                8 |
|         2 |                5 |
|         3 |                5 |
+-----------+------------------+
3 rows in set (0.00 sec)

Avg :平均数

mysql> select depart_id, avg(age) from qfedu group by depart_id;
+-----------+----------+
| depart_id | avg(age) |
+-----------+----------+
|         1 |  45.2500 |
|         2 |  30.0000 |
|         3 |  20.0000 |
+-----------+----------+
3 rows in set (0.00 sec)

\3. Having

Having 用于对 Group By 之后的数据进行进一步的筛选

mysql> select depart_id, avg(age) from qfedu group by depart_id having
avg(age)>35;
+-----------+----------+
| depart_id | avg(age) |
+-----------+----------+
|         1 |  45.2500 |
+-----------+----------+
1 row in set (0.01 sec)

\4. Order By: Order By 字段名 Asc(升序)/Desc(降序)

对多个字段进行排序:

age asc, depart_id desc; 表示先对age进行降序,再把age相等的行按部门号进行升序排列

mysql> select * from qfedu order by age asc, depart_id desc;
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
| id | name       | gender | age | hire_date | post         | post_comment |
salary     | office | depart_id |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
| 18 | liying     | female |  18 | 2014-05-12 | operation     | NULL         |
  17000.00 |    403 |         3 |
| 17 | wujing     | male   |  18 | 2015-04-11 | operation     | NULL         |
  18000.00 |    403 |         3 |
| 16 | zhaowei     | female |  18 | 2013-03-11 | operation     | NULL         |
  19000.00 |    403 |         3 |
| 15 | xiaolong   | male   |  18 | 1997-03-12 | operation     | NULL         |
  20000.00 |    403 |         3 |
| 11 | xiaomei     | female |  18 | 2011-03-12 | sale         | NULL         |
   1000.37 |    402 |         2 |
| 12 | zhenzhen   | female |  18 | 2016-05-13 | sale         | NULL         |
   3000.29 |    402 |         2 |
|  6 | nana       | female |  18 | 2011-02-11 | teacher       | NULL         |
   9000.00 |    401 |         1 |
|  7 | jinxin     | male   |  18 | 1900-03-01 | teacher       | NULL         |
  30000.00 |    401 |         1 |
|  1 | egon       | male   |  18 | 2017-03-01 | www.qfedu.com | NULL         |
   7300.33 |    401 |         1 |
| 14 | zhangye     | male   |  28 | 2016-03-11 | operation     | NULL         |
  10000.13 |    403 |         3 |
| 13 | qianqian   | female |  28 | 2017-01-27 | sale         | NULL         |
   4000.33 |    402 |         2 |
|  5 | luoyinsheng | male   |  28 | 2012-11-01 | teacher       | NULL         |
   2100.00 |    401 |         1 |
| 10 | lili       | female |  38 | 2010-11-01 | sale         | NULL         |
   2000.35 |    402 |         2 |
|  9 | meiling     | female |  48 | 2015-03-11 | sale         | NULL         |
   3000.13 |    402 |         2 |
|  8 | xingdian   | male   |  48 | 2010-11-11 | teacher       | NULL         |
  10000.00 |    401 |         1 |
|  4 | liuchao     | male   |  73 | 2014-07-01 | teacher       | NULL         |
   3500.00 |    401 |         1 |
|  2 | yangsheng   | male   |  78 | 2015-03-02 | teacher       | NULL         |
1000000.31 |    401 |         1 |
|  3 | yangqiang   | male   |  81 | 2013-03-05 | teacher       | NULL         |
   8300.00 |    401 |         1 |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
18 rows in set (0.00 sec)

select * from qfedu order by depart_id asc, age desc;

mysql> select * from qfedu order by depart_id asc, age desc;
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
| id | name       | gender | age | hire_date | post         | post_comment |
salary     | office | depart_id |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
|  3 | yangqiang   | male   |  81 | 2013-03-05 | teacher       | NULL         |
   8300.00 |    401 |         1 |
|  2 | yangsheng   | male   |  78 | 2015-03-02 | teacher       | NULL         |
1000000.31 |    401 |         1 |
|  4 | liuchao     | male   |  73 | 2014-07-01 | teacher       | NULL         |
   3500.00 |    401 |         1 |
|  8 | xingdian   | male   |  48 | 2010-11-11 | teacher       | NULL         |
  10000.00 |    401 |         1 |
|  5 | luoyinsheng | male   |  28 | 2012-11-01 | teacher       | NULL         |
   2100.00 |    401 |         1 |
|  6 | nana       | female |  18 | 2011-02-11 | teacher       | NULL         |
   9000.00 |    401 |         1 |
|  7 | jinxin     | male   |  18 | 1900-03-01 | teacher       | NULL         |
  30000.00 |    401 |         1 |
|  1 | egon       | male   |  18 | 2017-03-01 | www.qfedu.com | NULL         |
   7300.33 |    401 |         1 |
|  9 | meiling     | female |  48 | 2015-03-11 | sale         | NULL         |
   3000.13 |    402 |         2 |
| 10 | lili       | female |  38 | 2010-11-01 | sale         | NULL         |
   2000.35 |    402 |         2 |
| 13 | qianqian   | female |  28 | 2017-01-27 | sale         | NULL         |
   4000.33 |    402 |         2 |
| 11 | xiaomei     | female |  18 | 2011-03-12 | sale         | NULL         |
   1000.37 |    402 |         2 |
| 12 | zhenzhen   | female |  18 | 2016-05-13 | sale         | NULL         |
   3000.29 |    402 |         2 |
| 14 | zhangye     | male   |  28 | 2016-03-11 | operation     | NULL         |
  10000.13 |    403 |         3 |
| 15 | xiaolong   | male   |  18 | 1997-03-12 | operation     | NULL         |
  20000.00 |    403 |         3 |
| 16 | zhaowei     | female |  18 | 2013-03-11 | operation     | NULL         |
  19000.00 |    403 |         3 |
| 17 | wujing     | male   |  18 | 2015-04-11 | operation     | NULL         |
  18000.00 |    403 |         3 |
| 18 | liying     | female |  18 | 2014-05-12 | operation     | NULL         |
  17000.00 |    403 |         3 |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
18 rows in set (0.00 sec)

\5. Limit 分页:Limit Offset, Size

offset 表示 行数据索引;size 表示取多少条数据

从第 offset 行开始,取 size 行数据。

mysql> select * from qfedu limit 0,10;
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
| id | name       | gender | age | hire_date | post         | post_comment |
salary     | office | depart_id |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
|  1 | egon       | male   |  18 | 2017-03-01 | www.qfedu.com | NULL         |
   7300.33 |    401 |         1 |
|  2 | yangsheng   | male   |  78 | 2015-03-02 | teacher       | NULL         |
1000000.31 |    401 |         1 |
|  3 | yangqiang   | male   |  81 | 2013-03-05 | teacher       | NULL         |
   8300.00 |    401 |         1 |
|  4 | liuchao     | male   |  73 | 2014-07-01 | teacher       | NULL         |
   3500.00 |    401 |         1 |
|  5 | luoyinsheng | male   |  28 | 2012-11-01 | teacher       | NULL         |
   2100.00 |    401 |         1 |
|  6 | nana       | female |  18 | 2011-02-11 | teacher       | NULL         |
   9000.00 |    401 |         1 |
|  7 | jinxin     | male   |  18 | 1900-03-01 | teacher       | NULL         |
  30000.00 |    401 |         1 |
|  8 | xingdian   | male   |  48 | 2010-11-11 | teacher       | NULL         |
  10000.00 |    401 |         1 |
|  9 | meiling     | female |  48 | 2015-03-11 | sale         | NULL         |
   3000.13 |    402 |         2 |
| 10 | lili       | female |  38 | 2010-11-01 | sale         | NULL         |
   2000.35 |    402 |         2 |
+----+-------------+--------+-----+------------+---------------+--------------+-
-----------+--------+-----------+
10 rows in set (0.00 sec)

从第6行开始取10行

mysql> select * from qfedu limit 6,10;
+----+-----------+--------+-----+------------+-----------+--------------+-------
---+--------+-----------+
| id | name     | gender | age | hire_date | post     | post_comment | salary
  | office | depart_id |
+----+-----------+--------+-----+------------+-----------+--------------+-------
---+--------+-----------+
|  7 | jinxin   | male   |  18 | 1900-03-01 | teacher   | NULL         |
30000.00 |    401 |         1 |
|  8 | 成龙     | male   |  48 | 2010-11-11 | teacher   | NULL         |
10000.00 |    401 |         1 |
|  9 | 歪歪     | female |  48 | 2015-03-11 | sale     | NULL         |
3000.13 |    402 |         2 |
| 10 | 丫丫     | female |  38 | 2010-11-01 | sale     | NULL         |
2000.35 |    402 |         2 |
| 11 | 丁丁     | female |  18 | 2011-03-12 | sale     | NULL         |
1000.37 |    402 |         2 |
| 12 | 星星     | female |  18 | 2016-05-13 | sale     | NULL         |
3000.29 |    402 |         2 |
| 13 | 格格     | female |  28 | 2017-01-27 | sale     | NULL         |
4000.33 |    402 |         2 |
| 14 | 张野     | male   |  28 | 2016-03-11 | operation | NULL         |
10000.13 |    403 |         3 |
| 15 | 程咬金   | male   |  18 | 1997-03-12 | operation | NULL         |
20000.00 |    403 |         3 |
| 16 | 程咬银   | female |  18 | 2013-03-11 | operation | NULL         |
19000.00 |    403 |         3 |
+----+-----------+--------+-----+------------+-----------+--------------+-------
---+--------+-----------+
10 rows in set (0.00 sec)

标签:male,name,MySQL,实例,sec,mysql,操作,NULL,id
来源: https://blog.csdn.net/TriAngel_/article/details/122228690

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有