day46 Pyhton 数据库Mysql 03
一内容回顾
存储引擎:主要描述的是数据存储的不同方式
innodb 支持事务\支持外键\行级锁\聚焦索引
myisam 不支持事务\不支持外键\表级锁\非聚焦索引
memory 只能在内存中存储表数据\存取速度快\断电数据丢失
blackhole 无论写入什么数据都不存储在表中\但是照常生成binlog日志\用于数据的分流
表结构的增删改查
创建表结构
create table 表名 (字段名 字段类型[(宽度) 约束条件],...)
查看表结构
desc 表名;
show create table 表名\G
mysql 中的数据类型
数字
有多种表示数字的数据类型,分为小数和整数
整数根据不同的数据类型,能表示的数据范围也不同
小数根据不同的数据类型,对数据小数位的精准控制不同
定义整数类型的时候,后面的宽度,约束的不是数字的位数,而是显示的宽度
# int(11)
# float(7,2),一共7位数,小数部分占2位,整数部分占5位
# bigint 能放更大的数据
# double 比float更精准(255,30)
# decimal 超级精准,默认为整数,(65,30)
# 字符串
# char(11) 定长 \浪费空间\存取速度快\(用户名\性别\手机号\银行卡号\身份证\密码\车牌号)
# varchar(11) 不定长\节省空间\存取速度慢\(地址\评论)
# 时间
# date 年月日
# datetime 年月日时分秒 可以为空
# timestamp 年月日时分秒 不能为空 默认值是当前时间 update的时候更新时间字段 能表示的时间范围短
# insert into 表 values ('2018-12-18 09:06:23')
# insert into 表 values ('2018/12/18 09+06+23')
# insert into 表 values ('20181218090623')
# insert into 表 values (20181218090623)
# 集合和枚举
# set 多选 自动去重,不在set中的不写入表
# enum单选 不在enum单选中的不写入表
二今日内容
# 一 表结构操作
# 表结构的操作
# 修改表结构
# 删除表结构 # create table 表名 (字段名 字段类型[(宽度) 约束条件],...)
# 约束条件 # 二 数据操作
# 增 insert数据
# 删 delete数据
# 改 update数据
# 查 select数据
# 单表查询
# 连表查询
表的操作
一\修改表结构
# 增加字段
# 1. alter table 表名 add 字段 新的数据类型 ;
# 2. alter table 表名 add 字段 新的数据类型 first;
# 3. alter table 表名 add 字段 新的数据类型 after 某字段; # 删除字段
# 1. alter table 表名 drop 字段; # 修改字段
# 1. alter table 表名 modify 字段 新的数据类型;
# 2. alter table 表名 modify 字段 数据类型 first;
# 3. alter table 表名 modify 字段 数据类型 after 某字段; # 1. alter table 表名 change 旧字段 新字段 数据类型;
# 2. alter table 表名 change 字段 字段 数据类型 first;
# 3. alter table 表名 change 字段 字段 数据类型 after 某字段; # 二\删除表结构
# drop table 表名;
约束条件
# 什么是约束
# not null 不能为空的
# unique 唯一 = 不能重复
# primary key 主键 = 不能为空 且 不能重复
# foreign key 外键约束 # 为什么要约束
# 是因为一个表中的数据要想完整规范,就必须对一些字段有基础的约束
# 一般情况下,我们都会根据程序的需求个特点对数据库进行约束
# 在你的开发生涯中,你应该对数据有一个基础的判断 # 在mysql中不区分大小写
# 一个关键字 :NULL null关键字 表示 空(相当于PYTHON中的None) # 创建表
# create table 表名 (字段名 数据类型(宽度) 约束条件,) # 约束一 not null
# create table t (id int not null,
# sex enum('male','female') not null default 'male') # 约束二 unique 唯一,允许多个字段为null
# 设置某一个字段的内容必须是唯一的
# create table t3 (id int unique); # 你设置了唯一,就不能插入两个相同的内容 测试:除了null之外
# create table t3 (id int not null unique); # 你设置了唯一+非空,就不能插入两个相同的内容,也不能插入NULL,就相当于设置了一个主键primary key
# create table t3 (id int, name char(12), unique(id),unique(name));
# create table t4 (pid int, pname char(12),ip char(15),port int,unique(ip,port));
# create table t4 (pid int, pname char(12),
# ip char(15) not null,
# port int not null ,
# unique(ip,port)); # 记录每一个程序的信息
# pid 程序名 ip地址 端口号
# 111 pycharm
# 123 pycharm
# 234 mysqld 192.168.11.44 3306
# 234 mysqld 192.168.11.22 3306
# 235 kugou 192.168.11.44 8000 # 两个或者多个字段的内容 = 联合唯一 # 约束三
# 主键 每一张表只能有一个主键
# primary key = not null + unique
# create table t5 (id int primary key);
# 能设置多个主键么 ? 不能
# create table t5 (id int primary key,name char(12) primary key);
# 能不能设置多个非空 + 唯一 ? 能
# create table t6 (id int not null unique,name char(12) not null unique);
# 联合主键
# create table t7 (pid int, pname char(12),
# ip char(15),
# port int,
# primary key(ip,port)); # auto_increment 自增
# create table t8 (id int unique auto_increment,name char(12));
# create table t9 (id int primary key auto_increment,name char(12));
# 对于自增id来说,删除数据并不会影响自增
# 设置为自增,用户最好不要自己插入这个字段 # 约束四 外键
# 部门id 部门名称 部门办公室号
# create table department (id int unique,dep_name char(20),dep_num int);
# alter table department modify id int unique; # 员工id name 年龄 工资 部门id(外键)
# create table employee (id int,name char(12),age int,salary int,dep_id int,
# foreign key(dep_id) references department(id)); # insert into department (id,dep_name) values
# (1,'教质部'),
# (2,'技术部'),
# (3,'人力资源部'); # 如果添加了外键约束,外键是employee(dep_id),那么employee(dep_id)和department (ide)都会受到约束
# update department set id = 3 where id = 2; # create table employee2 (id int,name char(12),age int,salary int,dep_id int,
# foreign key(dep_id) references department(id) on delete cascade on update cascade ); # insert into department (id,dep_name) values
# (3,'人力资源部');
#
# insert into employee2 (id,name,dep_id) values
# (1,'yuan',1),
# (2,'nezha',2),
# (3,'egon',2),
# (4,'alex',2),
# (5,'wusir',3),
# (6,'李沁洋',3),
# (7,'皮卡丘',3),
# (8,'程咬金',3),
# (9,'程咬银',3)
# ; # 约束 4个
# not null # 不允许为空
# default # 设置默认值
# unique # 唯一,不能约束null
# 联合唯一
# auto_increment # 自增
# primary key # 主键 = not null + unique (同一张表不能有两个主键)
# 联合主键
# foreign key # 本表中的字段关联另一张表中的"唯一"字段 ,本表中的字段是 外键,外表中的字段必须唯一/主键 # create table 表名 (
# 字段名1 字段类型(宽度) not null default 默认值,
# 字段名2 字段类型(宽度) not null unique,
# 字段名3 字段类型(宽度) primary key,
# 字段名4 int(宽度) unique auto_increment,
# ) # create table 表名 (
# 字段名1 字段类型(宽度) not null,
# 字段名2 字段类型(宽度) not null,
# 字段名3 字段类型(宽度),
# 字段名4 int(宽度),
# unique(字段名2),
# primary key(字段名3),
# unique(字段名4) auto increment,
# ) # create table 表名 (
# 字段名1 字段类型(宽度) not null,
# 字段名2 字段类型(宽度) not null,
# 字段名3 字段类型(宽度),
# 字段名4 int(宽度) auto increment,
# unique(字段名1,字段名2),
# primary key(字段名3,字段名4),
# ); # create table 表名(
# 字段名1 字段类型(宽度) not null,
# 字段名2 字段类型(宽度) not null,
# 外键名 字段类型(宽度),
# foreign key (外建) references 外表(外表中的字段)
# on delete cascade
# on update cascade,
# primary key(字段名1)
# ) # 添加主键
# alter table 表名 modify 字段名 类型(宽度) primary key;
day46 Pyhton 数据库Mysql 03的更多相关文章
- day45 Pyhton 数据库Mysql 02
一.前期回顾 数据库 mysql的安装 配置环境 为什么要用数据库? 稳定性 一致性 并发 存取数据效率高 数据库的分类 关系型数据库 mysql oracle sqlserver 非关系型数据库 r ...
- day49 Pyhton 数据库Mysql 06
多表查询 连表查询 要进行连接,那一定涉及两个表,两个表中要有关联条件才能进行连接 内连接 只有表一和表二中的连接条件都满足的时候才能显示出来 inner join on /where 条件 sele ...
- day44 Pyhton 数据库Mysql
内容回顾 什么是进程? 就是为了形容执行中的程序的一种称呼 它是操作系统中资源分配的最小单位 进程之间是数据隔离的,占用操作系统资源相对多 独立存在的 谈谈你对并发的理解 同时有多个任务需要执行,但是 ...
- day48 Pyhton 数据库Mysql 05
一内容回顾 insert insert into 表名 (字段名) values (值) insert into 表名 values (有多少个字段写多少个值) insert into 表名 val ...
- day47 Pyhton 数据库Mysql 04
# 表结构 # 建表 - 表的增加 # create table # 删表 - 表的删除 # drop table # 改表 - 表的修改 # alter table 表名 # rename 新表名 ...
- 数据库mysql的常规操作
1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...
- 数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- Robot Framework-DatabaseLibrary数据库(MySql)
Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...
随机推荐
- 提高SSH服务安全,ssh黑白名单
1.调整sshd服务配置,并重载服务 # vim /etc/ssh/sshd_config PermitRootLogin no #禁止root用户登录 Use ...
- Java 的各种内部类、Lambda表达式
内部类 内部类是指在一个外部类的内部再定义一个类.内部类的出现,再次打破了Java单继承的局限性. 内部类可以是静态 static 的,也可用 public,default,protected 和 p ...
- xargs命令学习,于阮一峰博客
一.标准输入与管道命令 Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数. $ cat /etc/passwd | grep root 上面的代码使用了 ...
- oracle之同义词
同义词 从字面上理解就是别名的意思,和视图的功能类似.就是一种映射关系. 14.1 私有同义词; 一般是普通用户自己建立的同义词,创建者需要create synonym 权限. sys:SQL> ...
- python模块之----subprocess
例子 >>> subprocess.getstatusoutput('pwd')(0, '/home/ronny')>>> subprocess.getoutput ...
- 程序员你是如何降低NPE的?
程序员,如果系统突然报了一个空指针异常,你肯定像吞了一只苍蝇一样尴尬. 那么如何在日常开发过程中降低NPE? 问题 回答 现状 返回空值会出现大量的空指针异常 目的 改进方法的返回值,降低出现空指针异 ...
- C语言02
C语言02 1.2 C语言与C程序 1.计算语言 语言发展 机器语言:机器语言是机器能直接识别的程序语言或指令代码,勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直 ...
- ams入门了解
另一篇介绍文 https://www.cnblogs.com/clds/p/4985893.html 转载自https://www.cnblogs.com/onlysun/p/4533798.htm ...
- 更新Jenkins
一般情况下,war的安装路径在/usr/share/jenkins目录下. 不过也有部分人不喜欢安装在这里,可以通过系统管理(System management)--> 系统信息(System ...
- 国内外比较不错的php框架汇总
国外 1.laravel 2.symfony 3.yii 4.laminas(zendframework) 国内 1.thinkphp 2.ebcms 3.暂无