首页 > 数据库技术 > 详细

python学习——day12(MySQL常用命令,连接python)alex:http://www.cnblogs.com/wupeiqi/articles/5713330.html

时间:2017-10-22 00:02:20      阅读:472      评论:0      收藏:0      [点我收藏+]

MySQL

mysql 常用命令

MySQL创建、删除数据库

技术分享

技术分享
1 create database alexdb;#创建数据库
2 
3 drop database alexdb;#删除数据库
4 
5 create database alexdb charset utf8;#创建支持中文的数据库
6 
7 show create database alexdb;#查看数据库
创建查看数据库

MySQL 创建数据表、插入数据、查询数据

技术分享

技术分享
 1 create table student(    #创建表
 2     stu_id int not null auto_increment,
 3     name char(32) not null,
 4     age int not null,
 5     register_date date,
 6     primary key(stu_id));
 7 
 8 insert into student (name,age,register_date) values ("xinge",21,"2017-10-21");     #
 9 
10 select * from student;    #查询表格
创建数据表、插入数据、查询数据

where条件查询、修改、删除表中数据

技术分享

技术分享

技术分享

技术分享
1 select * from student;
2 
3 select * from student where register_date like "2017-10%";   #把2017-10-xx 的显示出来 
4 
5 update student set name="wupeiqi",age=33 where stu_id=4;    #修改,stu_id>4
6 
7 delete from student where name=x54256;    #删除所有name是x54256的数据
where条件查询、修改、删除表中数据

排序

技术分享

技术分享
1 select * from student order by stu_id;    #升序
2 
3 select * from student order by stu_id desc;    #降序
排序 

分组

select name,count(*) from student group by name;

技术分享

MySQL ALTER命令 

  • 删除,添加或修改表字段
  • 修改字段类型及名称
  • ALTER TABLE 对 Null 值和默认值的影响
  • 修改表名

删除增加字段

技术分享

 

alter table student drop register_date; #从student表删除register_date字段     alter table student add phone int(11) not null; #添加phone字段

 

修改类型

技术分享

ALTER TABLE student MODIFY age CHAR(10);

ALTER TABLE 对 Null 值和默认值的影响

技术分享

技术分享

修改表名

ALTER TABLE student RENAME TO student2;

外键

1 CREATE TABLE Sign (
2   id int auto_increment,
3   day_1 char(32) NOT NULL,
4   day_2 char(32) NOT NULL,
5   class_id int NOT NULL,
6   PRIMARY KEY (id),
7   KEY fk_class_key (class_id),
8   CONSTRAINT fk_class_key FOREIGN KEY (class_id) REFERENCES student2 (stu_id)
9 ) ;
 1 此时如果class 表中不存在id 1,student表也插入不了,这就叫外键约束
 2 
 3 mysql> insert into student2(id,name,class_id) values(1,alex, 1);
 4 
 5 ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`testdb`.`student2`, CONSTRAINT `fk_class_key` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))
 6 
 7 mysql> insert into class(id,name) values(1,"linux");
 8 
 9 Query OK, 1 row affected (0.01 sec) 
10 
11 mysql> insert into student2(id,name,class_id) values(1,alex, 1);
12 
13 Query OK, 1 row affected (0.00 sec)
14 
15 #如果有student表中跟这个class表有关联的数据,你是不能删除class表中与其关联的纪录的
16 
17 mysql> delete from class where id =1;
18 
19 ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`testdb`.`student2`, CONSTRAINT `fk_class_key` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))

Mysql 连接

Inner join(内连接,等值连接)

select * from a INNER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b;
 
a | b
--+--
3 | 3
4 | 4
 
Left join(左连接)
select * from a LEFT JOIN b on a.a = b.b;
 
a |  b
--+-----
1 | null
2 | null
3 |  3
4 |  4
 
 

Right join(右连接)

select * from a RIGHT JOIN b on a.a = b.b;
 
select * from a RIGHT JOIN b on a.a = b.b;
 
a   |  b
-----+----
3   |  3
4   |  4
null |  5
null |  6

事务

1、事务的原子性:一组事务,要么成功;要么撤回。

2、稳定性 : 有非法数据(外键约束之类),事务撤回。

3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

1 mysql> begin;  #开始一个事务
2 
3 mysql> insert into a (a) values(555); 
4 
5 mysql> rollback;    #回滚 , 这样数据是不会写入的
6 
7 mysql> commit;    #提交命令

索引

 1 CREATE INDEX indexName ON mytable(username(length)); #最基本的索引 

剩下的看这:http://www.cnblogs.com/alex3714/articles/5950372.html

python连接MySQL(pymysql连接python:http://www.cnblogs.com/wupeiqi/articles/5713330.html) 

 1 import pymysql
 2 # 创建连接
 3 conn = pymysql.connect(host=localhost, port=3306, user=root, passwd=abc123, db=xingedb)
 4 # 创建游标
 5 cursor = conn.cursor()
 6 
 7 data=[
 8     ("N1",22,"2017-10-21"),
 9     ("N2",22,"2017-10-21"),
10     ("N3",22,"2017-10-21"),
11 ]
12 effect_row = cursor.executemany("insert into student (name,age,register_date) VALUES (%s,%s,%s)",data)  # 执行SQL,并返回收影响行数
13 print(effect_row)
14 
15 # print(cursor.fetchall())
16 # print(cursor.fetchone())
17 conn.commit()    # 关闭游标
18 cursor.close()    # 关闭连接
19 conn.close()

 

python学习——day12(MySQL常用命令,连接python)alex:http://www.cnblogs.com/wupeiqi/articles/5713330.html

原文:http://www.cnblogs.com/x54256/p/7707209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!