mysql(四)
1、删除
1 #删除数据 2 if __name__ == '__main__': 3 cnx = connect_mysql() 4 #删除TID的子查询 5 sql = '''delete from Teacher where TID in( 6 #select子查询,将所有TID找出 7 select TID from (select Course.CouID, Course.TID, Teacher.TName, count(Teacher.TID) as count_teacher from Course 8 #left join 关联呢score表,查询成绩小于60,课程的ID与课程表的ID对应上 9 left join Score on Score.Grade <60 and Course.CouID = Score.CouID 10 #left join 关联teacher表,课程的tIDy和teacher表中的TID对应上 11 left join Teacher on Course.TID = Teacher.TID 12 #根据老师的TID分组 13 group by Course.TID 14 #对count_teacher进行排序,,取前五行 15 order by count_teacher desc 16 limit 5) as test ) 17 '''
2、更改
1 #更改数据 2 if __name__ == '__main__': 3 cnx = connect_mysql() 4 #查询分数小于五的个数 5 sql = '''select *, (grade+60) as newGrade from Score where Grade <5;''' 6 #把所有分数小于五的成绩都加60分 7 update = '''update Score set grade = grade + 60 where grade < 5; '''
3、索引
1 #索引 2 # MySQL索引的概念 3 # 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 4 # 索引类别 5 # 1.普通索引 6 # 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column =)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。 7 # 2.唯一索引 8 # 普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。 9 # 3.主索引 10 # 在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是 PRIMARY 而不是 UNIQUE。 11 # 4.外键索引 12 # 如果为某个外键字段定义了一个外键约束条件,MySQL 就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。 13 # 5.复合索引 14 # 索引可以覆盖多个数据列,如像 INDEX (columnA, columnB) 索引。这种索引的特点是 MySQL 可以有选择地使用一个这样的索引。 15 # mysql主键和索引的区别: 16 # 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 17 # 主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。 18 # 19 # 2.一个表中可以有多个唯一性索引,但只能有一个主键。 20 # 21 # 3.主键列不允许空值,而唯一性索引列允许空值。 22 # 23 # 4.索引可以提高查询的速度。 24 25 create table student( 26 stid int not null auto_increment primary key,#zhujian 27 name varchar(100) not null, 28 add varchar(100) not null, 29 index ix_name (name) 30 #创建索引 31 )