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操作二的更多相关文章
- python之路-----MySql操作
一.概述 1.什么是数据库 数据库就是按照数据结构来组织.存储和管理数据的仓库.如我们创建的文件夹,就是一个数据库. 2.什么是mysql,oracle,access,sqlit等? 他们都是一款软件 ...
- python之路-----MySql操作三
mysql 概述 一.主要内容: 视图 create view name (select * from user where id>5); 触发器 函数 存储过程 索引 二.各模块详细说明 1. ...
- 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询
MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...
- python中的mysql操作
一. 数据库在自动化测试中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. python中的数 ...
- python之路--MySQL 库,表的详细操作
一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...
- 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(一)
MySQL的行(记录)的操作(一) 1. 增(insert) insert into 表名 value((字段1,字段2...); # 只能增加一行记录 insert into 表名 values(字 ...
- python之数据库(mysql)操作
前言: 最近开始学django了,学了下web框架,顿时感觉又会了好多知识.happy~~ 这篇博客整理写下数据库基本操作,内容挺少.明天写SQLAlchemy. 一.数据库基本操作 1. 想允许在数 ...
- 百万年薪python之路 -- MySQL数据库之 Navicat工具和pymysql模块
一. IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接 ...
- python之路-Mysql&&ORM
1. 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以 ...
随机推荐
- SCOI 2019 划水记
(此处不应有目录,爆零的过程得慢慢看) 鸽子来更新游记了 orz UESTC. Day -1 两场傻逼信心考试都没AK. 第一场真的气,一个边界觉得是i - 1,然后不知道为啥改成了i,挂了6个点,然 ...
- Protocol Buffer序列化/反序列化---初体验(java版)
今天闲遐时学习了 Protocol Buffer 在网上看到了许多资料,其中不泛精品,想要详细了解的请看文章结尾的友情链接,我这里就做加深印象,快速入门的一个完整的demo,仅此而已. 学完你可以得到 ...
- Servlet和Filter的区别
1.Filter是一个接口,而Servlet是一个类继承于Httpservlet 2.生命周期的不同,Filter在Web App被加载时,创建该Filter的实例,并调用init()方法(仅创建一个 ...
- The dependency `XXX` is not used in any concrete target.
1.在新建项目,引入CocoaPod时,当创建了podfile文件后,执行pod install时报一下错误 2.这是因为 这个第三方不知道用于哪个target,所以必须指定target 解决方案 ...
- Python3 tkinter基础 Tk quit 点击按钮退出窗体
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- javascript 之 面向对象【理解对象】
第五版本 6.1.1 属性类型 1/数据属性 :包含有数据值的问题.有内部有特性和属性,是为了实现javaScript引擎用的,在javaScript中不能直接访问 [[Configur ...
- 优雅的使用windows
1. 快捷键 win+数字键:打开任务栏对应位置的程序 eg:快捷打开程序,重复该组合键有两个效果,如果只打开了一个窗口,再次按下组合键即可最小化,如果打开了多个窗口,则可以在同一程序的多个窗口中切换 ...
- 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念.区别和联系. Gradle是个构建系统,能够简化你的编译.打包.测试过程.熟悉Java的同学,可以把Gradle类比成Maven. Gradl ...
- 第 10 章 容器监控 - 079 - 监控利器 sysdig
sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器. 通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为. Linux 上有很多常用的监控工具,比如 strace,t ...
- VMware虚拟机安装CentOS 6.9图文教程
1.Win7安装VMware虚拟机比较简单,直接从官网下载VMware安装即可,这里不再叙述. 2.接着从CentOS官网直接下载CentOS 6.9的iso镜像文件. 3.打开VMware,点击创建 ...