python — 表的操作(一)
1. 创建表
创建表:
- create table t1 (id int,name char(4));
- create table t2 (id int,name char(4)) engine=myisam; # 使用MyISAM存储引擎
- create table t3 (id int,name char(4)) engine=memory; # 使用MEMORY存储引擎
查看表的结构:
show create table 表名; — 能够看到和这张表相关的所有信息
desc 表名; — 只能查看表的字段的基础信息
desc 表名; = describe 表名;
2. 表的约束
1.unsigned
- unsigned —— 设置某一个数字无字符
2.not null
not null —— 某一个字段不能为空
严格模式会影响非空设置的效果
3.default
default 给某个字段设置默认值
create table t2(
id int not null,
name char(12) not null,
age int default 18, # 设置默认值为18,但不会自动填充
gender enum('male','female') not null default 'male' # 不填充gender的值时,会自动默认填充'male'
)
4.unique
unique 设置某一个字段不能重复
create table t3(
id int unique,
username char(12) unique,
password char(18)
);
联合唯一
需要联合的两个字段都不唯一,但是两个字段联合在一起时就要是唯一的。
将需要联合的两个字段写道unique()里 —— unique(字段名1,字段名2)
create table t4(
id int,
ip char(15),
server char(10),
port int,
unique(ip,port)
);
5.auto_increment
auto_increment 设置某一个int类型的字段 自动增加
字段设置条件 :必须是数字 且 必须是唯一的 —— int + unique
auto_increment自带非空not null 、自增的效果
create table t5(
id int unique auto_increment,
username char(10),
password char(18)
)
insert into t5(username,password) values('alex','alex3714') # id字段设置为自增字段,增加数据时不输入id字段的值,它会自动增加
6.primary key 主键
primary key 设置某一个字段非空且不能重复
约束这个字段 :非空(not null) 且 唯一(unique) 相当于 not null + unique
一张表只能设置一个主键
一张表可以没有主键,但最好设置一个主键(这已变成一条规范)
create table t6(
id int not null unique, # 你指定的第一个非空且唯一的字段会被定义成主键
name char(12) not null unique
)
create table t7(
id int primary key, # 主键
name char(12) not null unique
)
联合主键(不常用)
联合主键:设置每一个字段不能为空,并且这两个字段联合起来成为不能重复的主键的元素
create table t4(
id int,
ip char(15),
server char(10),
port int,
primary key(ip,port)
);
7.foreign key 外键 涉及到两张表
references
外键关联的字段至少必须是唯一unique的,所以会直接将被关联的这个字段设置成主键。
先创建被关联的外表,再创建本表。
部门表 : pid postname post_comment post_phone
create table post(
pid int primary key,
postname char(10) not null unique,
comment varchar(255),
phone_num char(11)
)
员工表
create table staff(
id int primary key auto_increment,
age int,
gender enum('male','female'),
salary float(8,2),
hire_date date,
post_id int,
foreign key(post_id) references post(pid)
)
insert into post / staff values …………
update post set pid=2 where pid = 1;
delete from post where pid = 1;
级联删除和级联更新:
create table staff2(
id int primary key auto_increment,
age int,
gender enum('male','female'),
salary float(8,2),
hire_date date,
post_id int,
foreign key(post_id) references post(pid) on update cascade on delete cascade
)
如果级联删除外表中关联的数据后,让本表中被关联的外键列数据仍然存在,需要将外键列设置为空null :
- on delete cascade 写成 on delete set null
create table staff2(
id int primary key auto_increment,
age int,
gender enum('male','female'),
salary float(8,2),
hire_date date,
post_id int,
foreign key(post_id) references post(pid) on update cascade on delete set null
)
on delete:
cascade方式:
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
set null方式:
在父表上update/delete记录时,将子表上匹配记录的列设为null
注意:子表的外键列不能为not null
3. 修改表
1.什么时候会用到修改表?(一般不会常见)
- 创建项目之前已创建了表
- 项目开发、运行过程中
2.修改表语句
alter table 表名 add —— 添加字段
- alter table 表名 add 字段名 数据类型(宽度) 约束 first/after name
alter table 表名 drop —— 删除字段
- alter table 表名 drop 字段名;
alter table 表名 modify —— 修改已经存在的字段 的类型 宽度 约束
- alter table 表名 modify name(字段名后面是修改的内容) varchar(12) not null
id name age
alter table 表名 modify age int not null after id; # 将age的位置修改到id后面
alter table 表名 modify age int not null first; # 将age的位置放在第一个
alter table 表名 change —— 修改已经存在的字段 的类型 宽度 约束 和 字段名字
- alter table 表名 change name new_name varchar(12) not null
4. 表关系
两张表中的数据之间的关系:
1.多对一 :foreign key 永远是在多的那张表中设置外键
foreign key(多) references 表(一)
例:多个学生都是同一个班级的
学生表 关联 班级表
学生是多,班级是一
2.一对一 :foreign key +unique —— 后出现的后一张表中的数据作为外键,并且要约束这个外键类型是唯一的 unique
foreign key(后一) references 表(先一)
例:一个客户对应一个学生, 在学生表中创建外键
一个商品 有一个商品详情 ,详情页中有外键
3.多对多 :产生第三张表,把两个关联关系的字段作为第三张表的外键
foreign key(外键名1) references 表1(主键)
foreign key(外键名2) references 表2(主键)
例:表一:一本书有多个作者
表二:一个作者又写了多本书
5. 表数据的操作
1.增加 insert
- 1.insert into 表名 values (值....) —— 所有的在这个表中的字段都需要按照顺序被填写在这里
- 2.insert into 表名(字段名,字段名。。。) values (值....) —— 所有在字段位置填写了名字的字段和后面的值必须是一 一对应
- 3.insert into 表名(字段名,字段名。。。) values (值....),(值....),(值....) —— 所有在字段位置填写了名字的字段和后面的值必须是一 一对应
value单数 :一次性写入一行数据
values复数 :一次性写入多行数据
t1 :id,name,age
insert into t1 value (1,'alex',83)
insert into t1 values (1,'alex',83),(2,'wusir',74)
insert into t1(name,age) value ('alex',83)
insert into t1(name,age) values ('alex',83),('wusir',74)
数据写入的角度:
第一个角度:
写入一行内容还是写入多行
insert into 表名 values (值....)
insert into 表名 values (值....),(值....),(值....)
第二个角度:
是把这一行所有的内容都写入
insert into 表名 values (值....)
指定字段写入
insert into 表名(字段1,字段2) values (值1,值2)
2.删除 delete
delete from 表 where 条件;
3.更新 update
update 表 set 字段=新的值 where 条件;
4.查询 select
表查询分为:单表查询 、多表查询
python — 表的操作(一)的更多相关文章
- python — 表的操作(二)
目录 1.单表查询 2. 多表查询 1.单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having 筛 ...
- python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)
昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...
- python -使用Requests库完成Post表单操作
""" 使用Requests库完成Post表单操作 """ #_*_codingn:utf8 _*_ import requests fro ...
- python之数据库操作(sqlite)
python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...
- Mysql --库和表的操作
库的增删改查 系统数据库 创建数据库 数据库的相关操作 表的操作 存储引擎介绍(有点多 很啰唆) 表的介绍 表的操作 一.系统数据库 查看系统库: show databases; nformation ...
- python通过openpyxl操作excel
python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...
- Django中ORM简介与单表数据操作
一. ORM简介 概念:.ORM框架是用于实现面向对象编程语言种不同类型系统的数据之间的转换 构建模型的步骤:重点 (1).配置目标数据库信息,在seting.py中设置数据库信息 DATABASE ...
- 库的操作&表的操作
一 库的操作 掌握库的增删改查 一.系统数据库 执行如下命令,查看系统库 show databases; information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数 ...
- mysql更新(三)语句 库的操作 表的操作
04-初始mysql语句 本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show ...
随机推荐
- MongoDB-查询关键字/排序等
查询关键字 并列查询$and # 条件都成立才可以查询到结果 db.stutent.find({$and:[{name:"小漩涡"},{age:30}]}) 或查询$or # 有一 ...
- HTTP header 介绍 转载
这篇文章为大家介绍了HTTP头部信息,中英文对比分析,还是比较全面的,若大家在使用过程中遇到不了解的,可以适当参考下 HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/ ...
- 总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
总结:Apache/Tomcat/JBOSS/Nginx区别 .1.Apache是Web服务器,Tomcat是应用(Java)服务器.Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用. ...
- MyBatis错误:The server time zone value '?泄???????' is unrecognized or represents more t
原文地址:http://blog.csdn.net/oppo5630/article/details/52162783 解决java.sql.SQLException: The server time ...
- Resend a Request by fiddler
Resend a Request You can resend a request directly from the Sessions List, or save requests to resen ...
- 路由器的路由配置命令汇总(win和linux系统)
路由器/Linux主机/win下主机的路由配置汇总 2009-07-16 17:43:15 分类: 系统运维 工作时总是要在这三个个体中配来配去,所以为了方便,汇总了. win下: 使用 Ro ...
- Flex 布局教程实例
Flex 布局教程实例 一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 F ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作
这是轮播图的原始文件 运行门户需要把 nginx启动起来 单独运行轮播图.把里面的css的引用都加上网址的url 这就是单独访问到的轮播图的效果 轮播图模板的地址: 阶段5 3.微服务项目[学成在线] ...
- web布局收集整理
/*样式文件*/ .fgw-right-p{ height: 38px; line-height: 38px; margin-bottom: 20px; padding-left: 24px; spa ...
- Data - 数据挖掘的基础概念
主要内容来自于<微信公众号:程SIR说> 1 数据挖掘 数据挖掘(Data Mining,简称DM),是指从大量的数据中,挖掘出未知的且有价值的信息和知识的过程. 数据挖掘是一门交叉学科, ...