博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day23——删除数据、更改数据、索引
阅读量:6860 次
发布时间:2019-06-26

本文共 4758 字,大约阅读时间需要 15 分钟。

一、删除数据

数据如下:

[root@localhost ~]# mysql -uroot -ppzk123 -e "use test; select * from t1;"

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | Tom | 17 |
| 2 | John | 25 |
| 3 | Jeny | 25 |
+----+------+-----+

使用 Python 删除第二条记录:

1 #!/usr/bin/env python 2 import MySQLdb 3  4 def connect_mysql(): 5     db_config = { 6         'host': '127.0.0.1', 7         'port': 3306, 8         'user': 'root', 9         'passwd': 'pzk123',10         'db': 'test'11     }12     c = MySQLdb.connect(**db_config)13     return c14 15 if __name__ == '__main__':16     c = connect_mysql()17     cus = c.cursor()18     sql = 'delete from t1 where id=2;'19     try:20         cus.execute(sql)21         c.commit()22     except Exception as e:23         c.rollback()24         raise e25     finally:26         c.close()

结果如下:

[root@localhost ~]# mysql -uroot -ppzk123 -e "use test; select * from t1;"

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | Tom | 17 |
| 3 | Jeny | 25 |
+----+------+-----+

二、更改数据

数据如下:

[root@localhost ~]# mysql -uroot -ppzk123 -e "use test; select * from t1;"

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | Tom | 17 |
| 2 | John | 25 |
| 3 | Jeny | 25 |
+----+------+-----+

 

使用 Python 修改数据(把 John 的年龄修改为20):

1 #!/usr/bin/env python 2 import MySQLdb 3  4 def connect_mysql(): 5     db_config = { 6         'host': '127.0.0.1', 7         'port': 3306, 8         'user': 'root', 9         'passwd': 'pzk123',10         'db': 'test'11     }12     c = MySQLdb.connect(**db_config)13     return c14 15 if __name__ == '__main__':16     c = connect_mysql()17     cus = c.cursor()18     sql = 'update t1 set age=20 where id=2;'19     try:20         cus.execute(sql)21         c.commit()22     except Exception as e:23         c.rollback()24         raise e25     finally:26         c.close()

修改结果:

[root@localhost ~]# mysql -uroot -ppzk123 -e "use test; select * from t1;"

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | Tom | 17 |
| 2 | John | 20 |
| 3 | Jeny | 25 |
+----+------+-----+

三、索引

1、索引简介

索引就像书的目录一样,也可以理解是一个标签,创建索引的目录是为了加快我们对数据的查询,举个例子,数据库中有两万条记录,现在要查询 id 为 10086 的记录,如果没有索引,必须遍历整个表,直到 id 等于 10086 这一行被找到为止,如果在 id 字段上创建索引,MySQL 不需要任何扫描,直接在索引里面找 10086 就可以得知这一行的位置,可见,创建索引可以提高数据库的查询速度

2、索引的分类

(1) 普通索引:允许在定义索引的列中插入重复值和空值

(2) 唯一索引:索引列的值必须唯一,但允许有空值
(3) 单列索引:即一个索引只包含单个列,一个表可以有多个单列索引
(4) 组合索引:即在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用
(5) 全文索引:在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值
(6) 空间索引:是对空间数据类型的字段建立的索引,MySQL 有四中空间数据类型,分别是 GEOMETRY 、POINT 、LINESTRING 、POLYGON

3、索引的设计原则

(1) 索引不宜过多,否则不仅占用磁盘空间,而且会影响插入、删除、更新语句的性能

(2) 避免对经常更新的表进行过多的索引,并且索引中的列尽可能少
(3) 数据量小的表最好不要使用索引,因为查询花费的时间可能比遍历索引的时间还要短,索引不会产生太大效果
(4) 在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引
(5) 当唯一性是某种数据本身的特征时,指定唯一索引以确保数据完整性,提高查询速度
(6) 在频繁进行排序或分组的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引

4、在创建表的同时创建索引

1. 创建普通索引

mysql> create table book

-> (
-> bookid int not null,
-> bookname varchar(255) not null,
-> authors varchar(255) not null,
-> info varchar(255) null,
-> comment varchar(255) null,
-> index(bookid)
-> );

mysql> explain select * from book where bookid=1\G //explain可以用来查看是否使用了索引

*************************** 1. row ***************************
id: 1
select_type: SIMPLE //表示查询类型,SIMPLE表示只是简单的查询,不使用UNION或子查询
table: book //对哪个表进行查询
type: system //指明该表与其他表之间的关联关系
possible_keys: bookid //查询时可能选用的索引
key: NULL //查询时实际选用的索引
key_len: NULL //索引长度,值越小表示查询越快
ref: NULL //指明了关联关系中另一个表里的数据列的名字
rows: 1 //查询时预计会从这个数据表里读出的数据行的个数
Extra: //提供了与关联操作有关的信息

2. 创建唯一索引

mysql> create table book

-> (
-> bookid int not null,
-> bookname varchar(255) not null,
-> authors varchar(255) not null,
-> info varchar(255) null,
-> comment varchar(255) null,
-> unique index unique_index(bookid) //索引列的值必须唯一,unique_index是索引名
-> );

3. 创建组合索引

mysql> create table book

-> (
-> bookid int not null,
-> bookname varchar(255) not null,
-> authors varchar(255) not null,
-> info varchar(255) null,
-> comment varchar(255) null,
-> index multi_index(bookid, bookname) //multi_index是索引名
-> );

4. 创建全文索引

mysql> create table book

-> (
-> bookid int not null,
-> bookname varchar(255) not null,
-> authors varchar(255) not null,
-> info varchar(255) null,
-> comment varchar(255) null,
-> fulltext index fulltext_index(authors) //fulltext_index是索引名
-> );

5、在已经存在的表上创建索引

alter table book add index bookid_index(bookid);           //为 bookid 字段创建普通索引,其中 bookid_index 是索引名alter table book add index bookid_index(bookid,bookname);  //为 bookid 字段创建组合索引,其中 bookid_index 是索引名alter table book add unique index bookid_index(bookid);    //为 bookid 字段创建唯一索引,其中 bookid_index 是索引名alter table book add fulltext index info_index(info);      //为  info  字段创建全文索引,其中  info_index  是索引名

6、删除索引

alter table table_name drop index index_name;

 

转载于:https://www.cnblogs.com/yangjinbiao/p/7887607.html

你可能感兴趣的文章
让div 充满整个body
查看>>
常用排序算法
查看>>
程序员保持快乐活跃的6个好习惯(转)
查看>>
找工作的一些感悟——前端小菜的成长
查看>>
jSON Call can throw but it is not marked with try
查看>>
基于bootstrap的jQuery多级列表树插件 treeview
查看>>
node06
查看>>
笔试题[转]
查看>>
图片轮换
查看>>
PHP数据结构练习笔记--栈
查看>>
JSON对象配合jquery.tmpl.min.js插件,手动攒出一个table
查看>>
编译安装QEMU 及卸载
查看>>
关于php-fpm与nginx进程重载的坑
查看>>
P2S、P2P、P2SP之对比
查看>>
笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用...
查看>>
替代变量
查看>>
73. Spring Boot注解(annotation)列表【从零开始学Spring Boot】
查看>>
UNIX环境高级编程——pthread_create的问题
查看>>
接口继承中一个常见问题的思考
查看>>
C#获取软件图标
查看>>