python之路-----MySql操作二
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之路-----MySql操作二相关的知识,希望对你有一定的参考价值。
CREATE TABLE NAME ( id INT auto_increment, NAME CHAR (20), sid int, PRIMARY KEY (id, sid) ); 插入数据(1,‘a‘,1),主键值为:(1,1) ,插入(1,‘b‘,2),主键为(1,2),两个主键值不完全相等即可
CREATE TABLE name1 ( id INT auto_increment, NAME CHAR (20), UNIQUE qu_name (NAME), INDEX (id) )
三.自增
CREATE TABLE `more2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pc_name` char(20) DEFAULT NULL,
`owner_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_more2` (`owner_id`),
CONSTRAINT `one2_more2` FOREIGN KEY (`owner_id`) REFERENCES `one2` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 | #步长
| auto_increment_offset | 1 | #数量默认起始值
+--------------------------+-------+
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 3 |
| auto_increment_offset | 5 |
+--------------------------+-------+
新建连接,查看自增起始值和步长
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
我们发送,通过修改session变量,仅本次连接有效,如果要使修改的值永久有效,需要修改global变量
2.4查看global自增相关变量值
show global variables like ‘%auto_inc%‘;
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2.5 修改global变量
set global auto_increment_increment=2; #修改自增步长
set global auto_increment_offset=2; #修改自增列起始值
2.6 新建连接查看,配置依旧生效 。但是不建议使用该方法进行修改
create table morekey( id int auto_increment, sid int, name char(20), PRIMARY KEY(id,sid) ); CREATE table morekey1( id1 INT, sid1 INT, name1 CHAR(20), CONSTRAINT fk_moremore FOREIGN KEY(id1,sid1) REFERENCES morekey(id,sid) )
create table morekey( id int auto_increment, sid int, name char(20), PRIMARY KEY(id,sid) ); CREATE table morekey1( id1 INT, sid1 INT, name1 CHAR(20), CONSTRAINT fk_moremore FOREIGN KEY(id1,sid1) REFERENCES morekey(id,sid) )
-- pc编号 CREATE TABLE hostinfo( id int auto_increment PRIMARY KEY, host_name CHAR(20) ); -- 用户资产信息 CREATE TABLE employ( id int auto_increment PRIMARY KEY, name char(20), pc_id int, UNIQUE uq_hostinfo_employ (pc_id), CONSTRAINT fk_hostinfo_employ FOREIGN KEY (pc_id) REFERENCES hostinfo(id) );
-- 主机信息表 CREATE TABLE pcinfo( id int auto_increment PRIMARY KEY, host_name char(20) ); -- 管理员信息表 CREATE TABLE admininfo( id int auto_increment PRIMARY KEY, name char(20) ); -- 管理员主机对应表 CREATE TABLE admin_pc( id int auto_increment PRIMARY KEY, pc_id int , user_id int, UNIQUE uq_user_pc (pc_id,user_id), CONSTRAINT fk_admin_pc FOREIGN KEY(pc_id) REFERENCES pcinfo(id), CONSTRAINT fk_admin_user FOREIGN KEY(user_id) REFERENCES admininfo(id) );
五.操作表内容高级运用补充
1.笛卡尔积
笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合。例如A表中有三条数据,B表中有三条数据,则使用命令:
select * from A,B,则会产生九条结果。A表的每个值都会和B表的每个值产生一条对应的值。关系图如下:
2.临时表,将过滤出来的数据临时当成一张表使用
命令格式:(SELECT 列名 FROM 表) as B 应用 连表操作: SELECT * FROM (SELECT sid FROM score) as B LEFT JOIN student on student.sid=B.sid; 把score表中过滤出来的数据和student表进行连表操作
3.insert插入过滤后的表内容
INSERT INTO class(caption) SELECT name FROM class2; ps:需要注意的是,插入的列要跟表的列一致
4.条件语句
句型:case when 条件 then 条件为正返回 esle 条件为假返回 end
case when id<10 then 1 else 0 end; #如果id小于10,则返回1,否则返回0
5.利用常量来统计
select count(1) from tablename groub by id;
6.插入动态值
SELECT student_id, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 1) as 语文, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 2) as 数学, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 3) as 英语 from score as s1;
s1表的值可以再内循环中使用。类似于:
for student_id in s1: for id in s2: s2=s1
7.三元运算
if(条件,为真返回,为假返回)
e.g:if (isnull(xx),0,1) 如果为null,则返回0,否则返回1
以上是关于python之路-----MySql操作二的主要内容,如果未能解决你的问题,请参考以下文章