MySQL Day 01

创建MySQL数据库的基本命令

用root用户登录MySQL数据库

创建新的用户

CREATE USER

'username'

@

'host'

IDENTIFIED BY

'password'

;

为创建的用户赋权

grant all privileges on

[

databaseName

].*

to

'[userName]'

@

'localhost'

identified

by

'[passWord]'

;

创建数据库

关联数据库

MySQL数据库类型

varchar与char的区别

char

当插入数据时发现数据本身大小要比定义时小的时候,用空格向右填充,以保证占用同样的字节数

varchar

可变长字符串不需要向右填充,并且所有字节数可变。但数据长度不能超过定义时的大小浮点数类型

float(p,s)

double(p,s)

float(4,2)会储存4位数两位在小数点左边两位在小数点右边。

datatime和timestamp的区别DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。这个区别就解释了为什么平时我们都不用可以管这个字段就能自动更新了,因为多数时候用的是timestamp;而此处用的是datetime,不会有自动更新当前时间的机制,所以需要在上层手动更新该字段

DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。这个区别解释了为啥timestamp类型用的多

两者的存储方式不一样对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。

两者所能存储的时间范围不一样timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999'; datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999'。

表的创建

设计

精化

构建SQL方案语句(规范化,不要出现复合字段)

约束

什么是约束

约束英文:constraint 约束实际上就是表中数据的限制条件

约束的作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效 比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等

约束的种类

非空约束(not null)

唯一性约束(unique)

主键约束(primary key) PK

外键约束(foreign key) FK

检查约束(目前MySQL不支持、Oracle支持)

非空约束

用not null约束的字段不能为null值,必须给定具体的数据

如果没有插入数据就会ERROR!

唯一性约束

unique约束的字段,具有唯一性,不可重复,但可以为null

列级约束

表级约束

表级约束的命名

主键约束

主键约束

主键字段

主键值

表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值

主键约束与“not null unique”区别

给某个字段添加主键约束之后,该字段不能重复也不能为空,效果和”not null unique”约束相同,但是本质不同。主键约束除了可以做到”not null unique”之外,还会默认添加”索引——index”

一张表应该有主键字段,如果没有,表示该表无效

主键值:是当前行数据的唯一标识、是当前行数据的身份证号

即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录

主键约束分类

按主键约束的字段数量分类

无论是单一主键还是复合主键,一张表主键约束只能有一个(约束只能有一个,但可以作用到好几个字段)

单一主键:给一个字段添加主键约束

复合主键:给多个字段联合添加一个主键约束(只能用表级定义)

单一主键(列级定义)

单一主键(表级定义)

复合主键(表级定义)

自增主键(列级定义 auto_increment)

外键约束(foreign key FK)

只能是表级定义

定义

若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。A为基本表,B为信息表

外键涉及到的术语

外键约束

外键字段

外键值

外键约束、外键字段、外键值之间的关系

某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值

按外键约束的字段数量分类

单一外键:给一个字段添加外键约束

复合外键:给多个字段联合添加一个外键约束

一张表可以有多个外键字段(与主键不同)分析场景设计数据库表

用来存储学生和班级信息两种方案

方案一:将学生信息和班级信息存储到一张表

缺点:数据冗余,比如cname字段的数据重复太多

方案二:将学生信息和班级信息分开两张表存储

学生表(添加单一外键)

班级表

结论

结论为了保证学生表中的classno字段中的数据必须来自于班级表中的cno字段中的数据,有必要给学生表中的classno字段添加外键约束

注意

注意点外键值可以为null

外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束

有了外键引用之后,表分为父表和子表

班级表:父表

学生表:子表

创建先创建父表

删除先删除子表数据

插入先插入父表数据

存储学生班级信息

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218G1BCL100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券