MySQL基本概念

完整性约束

3NF:三范式

  • 第一范式:若关系R的所有属性均为简单属性,即所有属性不可在分,则满足第一范式。
  • 第二范式:如果关系R满足第一范式,且非主键字段完全依赖于主键(例:可以根据主键查询出其他非主键信息),则关系R满足第二范式。
  • 第三范式:如果关系R满足第二范式,且非主键之间不存在依赖关系,则关系R满足第三范式。
    一个基本的关系型数据库要满足第一范式,一个完整的关系数据库要满足第三范式。

ER图
图形表示:

  • 矩形:实体集
  • 椭圆:属性
  • 菱形:联系(集)
  • 双椭圆:多值属性
  • 虚线椭圆:派生属性
    ER图通过线段链接
    实体之间的联系:一对一,一对多,多对多。

常见关系型数据库:
Oracle:(大型企业)应用广泛,功能强大,分布式数据库系统,可移植性好(即跨平台,可以在不同的操作系统中使用)
MySQL:(中小型企业)开源,免费,于php组成经典的LAMP,快速,可靠,易于使用,可移植。
SQL server:web上最流行的用于存储数据的数据库;易用性好但只能在windows上使用。

数据库操作
创建数据库:create database 数据库名
删除数据库:drop database 数据库名

mySQL数据类型

  • 数值型
    int:整型
    decimal:小数类型;小数格式(总长度,小数位)decimal(5,2)要求你传递过来的数据数据总长度是5位,小数位是两位。123.45

  • 字符串类型
    char(字符串的长度)定长
    varchar(字符长度)变长
    例:姓名 char(10) : tom–>3字符 即定义了10个字符使用了3个字符,剩余7个字符的空间系统不会释放会使用空格填满。
    varchar(10) tom–>3 同样还剩下7个字符,系统会把剩下的空间释放。

    在这里插入图片描述

数据库建表

查找数据库中的建表数量:SELECT count(*)TABLES,table_schema FROM information_schema.TABLES WHERE table_schema=‘数据库名’ GROUP BY TABLE_SCHEMA
数据库名一定要单引号引起来

表的创建语法:
Create table 表名(属性名1 数据类型 [约束条件],
属性名2 数据类型 [约束条件],
属性名3 数据类型[约束条件]);

  • []中括号中的内容是可选内容
  • 最后一个属性后没有逗号

修改表:

  • 添加列(属性):alter table 表名 add 属性名 数据类型;
  • 删除列(属性):alter table 表名 drop 属性名;
  • 修改数据类型:alter table 表名 modify 属性名 数据类型;
  • 修改字段名:alter table 表名 change 旧字段名 新字段名 数据类型;

实体完整性约束
目的:在表中至少有一个唯一的标识,主属性字段中不能为空,不能重复。一个表中有且只有一个主键约束。

主键约束:唯一,不重复,不能为空 (primary key)

  • 创建表的同时创建主键约束
  • 格式1: create table 表名(
    列名 数据类型 primary key);
  • 格式2:主键约束的写法 PK_列名 create table 表名 (列名1 数据类型, 列名2 数据类型,constrat 主键约束的名字 primary key (列名1));
  • 格式3:create table 表名(列名1 数据类型, 列名2 数据类型, primary key(列名1));
    通过alter语句:
    alter table 表名 modify 列名 数据类型 primary key
    alter table 表名 add primary key (列名)
    alter table 表名 add contraint 主键约束名 primary key(列名)
    删除主键约束:
    alter table 表名 drop primary key

唯一约束: unique

  1. 不允许有重复的值,保证数据的唯一性。
  2. 可以有空值
  3. 在一个表中可以有多个唯一约束
  4. 默认情况下,唯一约束的名字与列名保持一致
  5. 添加唯一约束索引,系统将会默认给这个列添加一个唯一索引(索引:等同于书的目录,将来能够加快数据的查询速度)

创建表的同时创建唯一约束 UN_列名
格式1:
create table (列名1 数据类型,
列名2 数据类型,
constraint 唯一约束的名字 unique(列名1)
);
格式2:
create table (列名1 数据类型 unique,
列名2 数据类型
);
删除唯一约束
格式:alter table 表名 drop index 唯一约束的名字

添加联合主键:联合主键,指的是把两个列看成是一个整体,这个整体是不为空,唯一,不重复

1.创建表的同时创建联合主键
格式:

create table 表名(

列名1 数据类型,

列名2 数据类型,

constraint 主键约束的名字 primary key(列名1,列名2)

);

格式三:

create table 表名(

列名1 数据类型,

列名2 数据类型,

primary key(列名1,列名2)

);

2.针对已经存在表,添加联合主键

格式:alter table 表名 add primary key(列名1,列名2);

格式:alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2);

3.删除主键约束格式:alter table 表名 drop primary key;

域完整性约束:保证在表中不会输入无效的数据
默认约束:defult 当默认约束修饰某个列时,即使该列不输入属于也会有一个默认的值。

  1. 创建表的同时创建默认约束
    格式:
    create table (列名1 数据类型 default ‘字符串类型或日期类型的默认值’,
    列名2 数据类型 defualt 数值,
    列名3 数据类型
    );

  2. 针对已经存在的表,添加默认约束
    格式:alter table 表名 modify 列名 数据类型 default ‘值’;

  3. 删除默认约束
    格式:alter table 表名 modify 列名 数据类型

非空约束:not null 当前列必须有值
格式:
create table (列名1 数据类型 not null,
列名2 数据类型 not null ,
列名3 数据类型
);
通过alter(针对已经存在的表)
alter table 表名 Modify 列名 数据类型 not null ;
删除非空约束:
alter table 表名 modify 列名 数据类型。

参照完整性

外键约束foreign key

1.创建表的同时创建外键约束
主表(接下来创建新表的时候,要参考的表)
create table 表1(
列名1 数据类型 primary key;
列名2 数据类型
);
从表(外键约束所在表) FK_列名
create table 表名2(
列名1 数据类型,
列名2 数据类型,
constraint 外键约束的名字 foreign key(从表的列名1) references 主表的表名1(列名1)

2.针对已经存在的表,添加外键约束
alter table 从表表名 add constraint 外键约束的名字 foreign key (从表列名1) references 主表(主表列名)
3.删除外键约束
alter table 表名 drop foreign key 外键约束的名字。

注意:关于引用列的要求:从表的列和主表的列,列名可以不一样,但是这两个列的数据类型和内容必须保持一致。

删除时,更新时有四个选项
CASCADE 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录

NO ACTION 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

RESTRICT 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

SET NULL 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值