前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中操作mysql知识(二)

Python中操作mysql知识(二)

作者头像
py3study
发布2020-01-10 17:04:38
6650
发布2020-01-10 17:04:38
举报
文章被收录于专栏:python3python3

1.创建表Teacher:

代码语言:javascript
复制
create table Teacher(
	teaId int not null,
	teaname varchar(100),
	age int,
	sex enum('M', 'F'),
	phone int);

注意:

    char 和varchar区别:

    ‘123’    ------>varchar(10)       #  3位

    '123       '  -------> char(10)    # 10位    不足10位空格补全

查看新建的Teacher表:

代码语言:javascript
复制
MariaDB [(none)]> use test;
Database changed
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| Teacher        |
+----------------+
1 row in set (0.00 sec)

2.建立超级用户:

代码语言:javascript
复制
grant all privileges on *.* to 'fxq'@'%' identified by '123456' with grant option;

3.插入数据:

代码语言:javascript
复制
insert into Teacher(teaid,teaname,age) values(1,'feng',20);

插入多行数据:

代码语言:javascript
复制
insert into Teater(teaid,teaname,age) values(101,'fengxiaoqing',20),(102,'zhangsan',30),(103,'wangwu',40);

查看插入的数据:

代码语言:javascript
复制
MariaDB [test]> select * from Teacher;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |       NULL |
|     2 | wang         |   20 | M    | 2147483647 |
|     2 | wang         |   20 | M    | 2147483647 |
|     3 | zhang        |   30 | M    | 2147483647 |
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
|   103 | wangwu       |   40 | NULL |       NULL |
+-------+--------------+------+------+------------+
10 rows in set (0.00 sec)

MariaDB [test]>

4.数据查询:

代码语言:javascript
复制
select *  from Teacher where teaId > 4;

select * from Teacher where teaId in(1,4,101);

select * from Teacher where teaId like ('%1%');

测试结果:

代码语言:javascript
复制
MariaDB [test]> select * from Teacher where teaId > 3;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
+-------+--------------+------+------+------------+
5 rows in set (0.00 sec)

MariaDB [test]> select * from Teacher where teaId in(1,4,101);
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |  188188188 |
|     4 | li           |   40 | M    | 2147483647 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
+-------+--------------+------+------+------------+
3 rows in set (0.01 sec)



MariaDB [test]> select * from Teacher where teaId like ('%1%');  
+-------+--------------+------+------+-----------+
| teaId | teaname      | age  | sex  | phone     |
+-------+--------------+------+------+-----------+
|     1 | feng         |   20 | NULL | 188188188 |
|   101 | fengxiaoqing |   20 | NULL |      NULL |
|   102 | zhangsan     |   30 | NULL |      NULL |
+-------+--------------+------+------+-----------+
3 rows in set (0.00 sec)

MariaDB [test]> 

MariaDB [test]>

查询重复数据:

代码语言:javascript
复制
select *  from Teacher  group by teaname having count(*) >1;

测试结果:

代码语言:javascript
复制
MariaDB [test]> select * from Teacher;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |  188188188 |
|     2 | wang         |   20 | M    | 2147483647 |
|     2 | wang         |   20 | M    | 2147483647 |
|     3 | zhang        |   30 | M    | 2147483647 |
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
+-------+--------------+------+------+------------+
9 rows in set (0.01 sec)

MariaDB [test]> select *  from Teacher  group by teaname having count(*) >1;
+-------+---------+------+------+------------+
| teaId | teaname | age  | sex  | phone      |
+-------+---------+------+------+------------+
|     2 | wang    |   20 | M    | 2147483647 |
|     5 | zhao    |   50 | F    | 2147483647 |
+-------+---------+------+------+------------+
2 rows in set (0.00 sec)

MariaDB [test]>

联合查询:

代码语言:javascript
复制
select * from a,c where a.id = c.组id

查看表结构:

代码语言:javascript
复制
show create Teacher\G;
desc Teacher;

测试结果 :

代码语言:javascript
复制
MariaDB [test]> show create table Teacher \G;
*************************** 1. row ***************************
       Table: Teacher
Create Table: CREATE TABLE `Teacher` (
  `teaId` int(11) NOT NULL,
  `teaname` varchar(100) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` enum('M','F') DEFAULT NULL,
  `phone` int(11) DEFAULT NULL,
  KEY `test_Teacher_teaId_teaname` (`teaId`,`teaname`)
) ENGINE=InnoDB DEFAULT CHARSET=latin11 row in set (0.00 sec)

ERROR: No query specified

MariaDB [test]>

MariaDB [test]> desc Teacher;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| teaId   | int(11)       | NO   | MUL | NULL    |       |
| teaname | varchar(100)  | YES  |     | NULL    |       |
| age     | int(11)       | YES  |     | NULL    |       |
| sex     | enum('M','F') | YES  |     | NULL    |       |
| phone   | int(11)       | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

MariaDB [test]>

5.删除数据:

代码语言:javascript
复制
delete from Teacher where teaid='103'  #删除指定id数据truncate Teacher1;   #清空数据drop table Teacher1;   #删除表

测试结果:

delete:删除表中指定数据条目

代码语言:javascript
复制
MariaDB [test]> delete from Teacher where teaid='103';
Query OK, 1 row affected (0.02 sec)

MariaDB [test]> select * from Teacher;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |       NULL |
|     2 | wang         |   20 | M    | 2147483647 |
|     2 | wang         |   20 | M    | 2147483647 |
|     3 | zhang        |   30 | M    | 2147483647 |
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
+-------+--------------+------+------+------------+
9 rows in set (0.00 sec)

MariaDB [test]>

truncate: 清空表数据,表结构保留

代码语言:javascript
复制
MariaDB [test]> select * from Teacher1;
+-------+---------------+------+------+-------+
| teaId | teaname       | age  | sex  | phone |
+-------+---------------+------+------+-------+
|   101 | fengxiaoqing  |   20 | NULL |  NULL |
|   102 | zhangsan      |   30 | NULL |  NULL |
|   103 | wangwu        |   40 | NULL |  NULL |
|   104 | fengxiaoqing1 |   20 | NULL |  NULL |
|   105 | zhangsan2     |   30 | NULL |  NULL |
|   106 | wangwu3       |   40 | NULL |  NULL |
|   107 | fengxiaoqing4 |   20 | NULL |  NULL |
|   108 | zhangsan5     |   30 | NULL |  NULL |
|   109 | wangwu6       |   40 | NULL |  NULL |
|   110 | fengxiaoqing7 |   20 | NULL |  NULL |
|   111 | zhangsan8     |   30 | NULL |  NULL |
|   112 | wangwu9       |   40 | NULL |  NULL |
+-------+---------------+------+------+-------+
12 rows in set (0.00 sec)

MariaDB [test]> truncate Teacher1;
Query OK, 0 rows affected (0.02 sec)

MariaDB [test]> select * from Teacher1;
Empty set (0.00 sec)

MariaDB [test]>

drop: 删除整个表

代码语言:javascript
复制
MariaDB [test]> drop table Teacher1;
Query OK, 0 rows affected (0.01 sec)

MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| Teacher        |
+----------------+
1 row in set (0.00 sec)

MariaDB [test]>

6.更新数据 

代码语言:javascript
复制
update Teacher set  phone=188188188  where teaId=1;

测试结果:

代码语言:javascript
复制
MariaDB [test]> select * from Teacher;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |       NULL |
|     2 | wang         |   20 | M    | 2147483647 |
|     2 | wang         |   20 | M    | 2147483647 |
|     3 | zhang        |   30 | M    | 2147483647 |
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
+-------+--------------+------+------+------------+
9 rows in set (0.01 sec)


MariaDB [test]> update Teacher set  phone=188188188 where teaId=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [test]> select * from Teacher;
+-------+--------------+------+------+------------+
| teaId | teaname      | age  | sex  | phone      |
+-------+--------------+------+------+------------+
|     1 | feng         |   20 | NULL |  188188188 |
|     2 | wang         |   20 | M    | 2147483647 |
|     2 | wang         |   20 | M    | 2147483647 |
|     3 | zhang        |   30 | M    | 2147483647 |
|     4 | li           |   40 | M    | 2147483647 |
|     5 | zhao         |   50 | F    | 2147483647 |
|     5 | zhao         |   50 | F    | 1821113120 |
|   101 | fengxiaoqing |   20 | NULL |       NULL |
|   102 | zhangsan     |   30 | NULL |       NULL |
+-------+--------------+------+------+------------+
9 rows in set (0.00 sec)

MariaDB [test]>

7.创建索引:

代码语言:javascript
复制
create index 库名_表名_列名1_列名2  (列名1,列名2);
create index test_Teacher_teaId_teaname (teaId,teaname);

查看表有无索引:

代码语言:javascript
复制
MariaDB [test]> show index from Teacher;
Empty set (0.01 sec)

创建索引:

代码语言:javascript
复制
MariaDB [test]> show index from Teacher;   #查看Empty set (0.01 sec)

MariaDB [test]> alter table Teacher add index test_Teacher_teaId_teaname (teaId,teaname);   #创建索引
Query OK, 0 rows affected (0.34 sec)
Records: 0  Duplicates: 0  Warnings: 
0MariaDB [test]> show index from Teacher;   #再查看,索引就会创建成功
+---------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Teacher |          1 | test_Teacher_teaId_teaname |        1 | teaId       | A         |           9 |  NULL | NULL   |      | BTREE      |         |               |
| Teacher |          1 | test_Teacher_teaId_teaname |        2 | teaname     | A         |           9 |  NULL | NULL   | YES  | BTREE      |         |               |
+---------+------------+----------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

MariaDB [test]>

查看是否走索引:

代码语言:javascript
复制
explain select * from Teacher where teaname = 'feng';
代码语言:javascript
复制
MariaDB [test]> explain select * from Teacher where teaname = 'feng';
+------+-------------+---------+------+---------------+------+---------+------+------+-------------+
| id   | select_type | table   | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+------+-------------+---------+------+---------------+------+---------+------+------+-------------+
|  1   | SIMPLE      | Teacher | ALL  | NULL          | NULL | NULL    | NULL |    9 | Using where |
+------+-------------+---------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

MariaDB [test]> explain select * from Teacher where teaname = 'feng' and teaId = 1;
+------+-------------+---------+------+----------------------------+----------------------------+---------+-------------+------+-----------------------+
| id   | select_type | table   | type | possible_keys              | key                        | key_len | ref         | rows | Extra                 |
+------+-------------+---------+------+----------------------------+----------------------------+---------+-------------+------+-----------------------+
|  1   | SIMPLE      | Teacher | ref  | test_Teacher_teaId_teaname | test_Teacher_teaId_teaname | 107     | const,const |    1 | Using index condition |
+------+-------------+---------+------+----------------------------+----------------------------+---------+-------------+------+-----------------------+
1 row in set (0.01 sec)

MariaDB [test]> 
MariaDB [test]> select * from Teacher where teaname = 'feng' and teaId = 1;
+-------+---------+------+------+-----------+
| teaId | teaname | age  | sex  | phone     |
+-------+---------+------+------+-----------+
|     1 | feng    |   20 | NULL | 188188188 |
+-------+---------+------+------+-----------+
1 row in set (0.01 sec)

MariaDB [test]>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.创建表Teacher:
  • 2.建立超级用户:
  • 3.插入数据:
    • 插入多行数据:
      • 查看插入的数据:
      • 4.数据查询:
        • 测试结果:
          • 查询重复数据:
            • 测试结果:
              • 联合查询:
                • 查看表结构:
                  • 测试结果 :
                  • 5.删除数据:
                    • 测试结果:
                      • delete:删除表中指定数据条目
                        • truncate: 清空表数据,表结构保留
                          • drop: 删除整个表
                          • 6.更新数据 
                            • 测试结果:
                            • 7.创建索引:
                              • 查看表有无索引:
                                • 创建索引:
                                  • 查看是否走索引:
                                  相关产品与服务
                                  云数据库 MariaDB
                                  腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档