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 — 表的操作(一)的更多相关文章

  1. python — 表的操作(二)

    目录 1.单表查询 2. 多表查询 1.单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having 筛 ...

  2. python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)

    昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...

  3. python -使用Requests库完成Post表单操作

    """ 使用Requests库完成Post表单操作 """ #_*_codingn:utf8 _*_ import requests fro ...

  4. python之数据库操作(sqlite)

    python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...

  5. Mysql --库和表的操作

    库的增删改查 系统数据库 创建数据库 数据库的相关操作 表的操作 存储引擎介绍(有点多 很啰唆) 表的介绍 表的操作 一.系统数据库 查看系统库: show databases; nformation ...

  6. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

  7. Django中ORM简介与单表数据操作

    一. ORM简介  概念:.ORM框架是用于实现面向对象编程语言种不同类型系统的数据之间的转换 构建模型的步骤:重点 (1).配置目标数据库信息,在seting.py中设置数据库信息 DATABASE ...

  8. 库的操作&表的操作

    一 库的操作 掌握库的增删改查 一.系统数据库 执行如下命令,查看系统库 show databases; information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数 ...

  9. mysql更新(三)语句 库的操作 表的操作

    04-初始mysql语句   本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show ...

随机推荐

  1. Spring框架IOC解说

    控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...

  2. Python经典练习题1:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    Python经典练习题 网上能够搜得到的答案为: for i in range(1,85): if 168 % i == 0: j = 168 / i; if i > j and (i + j) ...

  3. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  4. java中json的使用和解析

    1.创建json对象 1.1 创建JSONObject对象 使用map初始化json @Test public void test1() { Map<String, Object> map ...

  5. java静态标示符static详解

    1.static修饰的变量习惯称为静态变量,static修饰的方法称为静态方法,static修饰的代码块叫做静态代码块. 1)static变量 static变量也称作静态变量,静态变量和非静态变量的区 ...

  6. Linux学习:使用 procrank 测量系统内存使用情况

    程序员应该了解一个基本问题:我的程序使用了多少内存?这可能是一个简单的问题,但是对于像Linux这样的虚拟内存操作系统,答案是相当复杂的,因为top和ps给出的数字不能简单相加.进程中两个最常见的内存 ...

  7. jpa 总结

    转:http://blog.csdn.net/linzhiqiang0316/article/details/52639265 先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 S ...

  8. Linux 常用高效操作

    空行处理 linux系统下删除空行,用vim底行模式'%s/^n$//g' 可以删除空行并真正修改文件,但文件数量太大时耗时不可预估,于是操作文件删除空行并重定向到一个新的文件是不错的选择. 常用特殊 ...

  9. Salt之CentOS7.5使用RPM包安装MySQL5.7.22

    手动安装参考CentOS7.5使用RPM包安装MySQL5.7.22 目录结构为 install.sls文件 #按顺序分别安装commin libs client server #避免冲突安装comm ...

  10. hibernate 第二次深入接触

    1.session 到底如何进行脏处理? 当一个Dept对象加入到session缓存时,Session会为Dept对象的值属性复制一份快照,当Session刷新缓存时,会进行脏处理. 2.OID 用来 ...