首页 > 数据库 >MySQL数据库基础操作与概念详解(二)

MySQL数据库基础操作与概念详解(二)

时间:2024-07-29 20:26:26浏览次数:17  
标签:数据库 表名 外键 约束 详解 MySQL TABLE 主键 字段名

二、数据库的操作

1.-- 表结构修改

– ALTER TABLE 表名 关键词 数据;

– ALTER TABLE 旧表名 rename as 新表名;

修改表名 例:

ALTER TABLE student rename as students;

SHOW TABLES;

2.–添加字段 ALTER TABLE 表名 ADD 新字段名 类型 属性;

ALTER TABLE students ADD stu_qq VARCHAR(20) COMMENT ‘这是学生的qq号’

3.–删除字段 ALTER TABLE 表名 drop 字段名;

ALTER TABLE students DROP stu_age;

4.-- 修改字段

方式一 MODIFY

– ALTER TABLE 表名 MODIFY 字段名 要修改的类型 要修改的长度

ALTER TABLE students MODIFY stu_name VARCHAR(100);

– 覆盖式,一定的默认值 2.如果有已经存在具体的数据 – 数据是可以做隐式转换的 – 否侧覆盖会失败报错

ALTER TABLE students MODIFY stu_qq int;

– 方式二 CHANGE

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 要修改的类型 要修改的长度

– CHANGE 可以修改数据类型和属性还有字段名
ALTER TABLE students CHANGE stu_qq qq VARCHAR(20) COMMENT’QQ号’;

5.-- 删除表

– DROP TABLE 表名

DROP TABLE students;

重点:

数据库设计的三大范式

第一范式:确保每列保持原子性

第二范式:确保表中的每列都和主键相关

第三范式:确保每列都和主键列直接相关,而不是间接相关

总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。

如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结

构。所以不能一味的去追求范式建立数据库。

1.表约束

一、约束的概念

1.什么是约束

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

2.约束作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效

3.约束种类

非空约束(not null) 、唯一性约束(unique) 、主键约束(primary key) PK 、外键约束(foreign key) FK

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

二、各种约束的解释

1.非空约束:

CREATE TABLE tb2(

userName VARCHAR(10) NOT NULL, – 非空约束

userName VARCHAR(10) NOT NULL DEFAULT ‘无名’, – 非空约束

)

2.唯一性约束(包括表级和行级):

CREATE TABLE tb4(

userName VARCHAR(10) UNIQUE – 唯一约束,行级别约束,

useAge INT

)

是可以为null,并且可以有多个null,因为null是类型不是具体的数值

3.联合唯一约束:

CREATE TABLE tb4(

​ userName VARCHAR(10) UNIQUE, – 唯一约束,

​ userAge INT,

​ UNIQUE(userName,userAge) – 联合唯一约束,表级约束
)

字段是有关联的,联合的字段都一样的时候不能存入,其余可以存入

CREATE TABLE tb5(

​ userName VARCHAR(10) UNIQUE, – 唯一约束,

​ userAge INT,

CONSTRAINT user_uN_uA UNIQUE(userName,userAge) – 表级约束,也称联合唯一约束

)

**CONSTRAINT user_uN_uA :**约束关键字+约束名

4.主键约束(primary key)PK

1.主键(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

– 主键约束

– 每张表必须有且只有一个主键

– 主键的值是唯一的

– 主键不能为空
CREATE TABLE tb6(
userId INT PRIMARY KEY, – 主键约束,
userAge INT,
)

CREATE TABLE tb6(
userId INT ,

userAge INT,

CONSTRAINT user_uI_uA** PRIMARY KEY(userId,userAge) --主键联合约束

)

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

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

在MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动

生成,自增数从1开始,以1递增(auto_increment)

– auto_increment 为自增

CREATE TABLE tb9(

tib int PRIMARY KEY auto_increment,

userName VARCHAR(20)

);

问题:

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

1、作为Primary Key的域/域组不能为null,而Unique Key可以。

2、在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。unique not null 可以

将表的一列或多列定义为唯一性属性,而primary key设为多列时,仅能保证多列之和是唯一的,

具体到某一列可能会重复。

3、更大的区别在逻辑设计上。Primary Key一般在逻辑设计中用作记录标识,这也是设置

Primary Key的本来用意,而Unique Key只是为了保证域/域组的唯一性。

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

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

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

5.外键约束(foreign key)FK

1.什么是外键?

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键

A为基本表或父标,主表,B为信息表,子表,副表

2.只能是表级定义

foreign key(表的字段名) references 父表表名(父表的字段名)

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

3.外键约束

– 外键的值可以重复

– 外键必须要写父表中有的数据

– 父表中的关联字段必须是一个具有唯一性的数据

– 父表中的字段名可以与子表中的字段名不一致,但是数据类型必须一致

– 一个表中可以有多个外键,也可以有多个外键约束,但是只能有一个主键

– 大场:使用外键关系,不去建立外键约束

CREATE TABLE a(
aid int PRIMARY KEY auto_increment,
aname VARCHAR(10)
)

CREATE TABLE b(
bid int PRIMARY KEY auto_increment,
aid INT,
FOREIGN KEY(aid) REFERENCES a(aid) – 创建外键
)

2.约束的控制

添加非空约束

alter table 表名 modify test_student char(10) not null;

添加唯一约束

alter table 表名 add unique(表字段名,字段,字段,字段);

添加主键约束

alter table 表名 add primary key(表的字段名,字段,字段);

添加外键约束

alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);约束的删除

删除not null约束

alter table 表名 modify 列名 类型;

删除unique约束

alter table 表名 drop index 唯一约束名;

删除primary key约束

alter table 表名 drop primary key;

删除foreign key约束

alter table 表名 drop foreign key 外键名;

标签:数据库,表名,外键,约束,详解,MySQL,TABLE,主键,字段名
From: https://blog.csdn.net/qq_67028830/article/details/140722483

相关文章

  • mysql授权
    mysql连接的两种方式mysql服务端10.0.0.51:3306mysql-uroot-p密码-h该账户允许登录的网段-P实例端口第一种基于ip:port的网络链接形式,入口一,链接参数,-hlocahost-P3306端口,窗口提供服务的入口windows机器,去链接mysql服务端......
  • Python操作MySQL数据库的5种方式
    不管你是做数据分析,还是网络爬虫,Web开发、亦或是机器学习,你都离不开要和数据库打交道,而MySQL又是最流行的一种数据库,这篇文章介绍Python操作MySQL的5种方式,你可以在实际开发过程中根据实际情况合理选择。1、MySQLdbMySQLdb又叫MySQL-python,是Python连接MySQL最流行......
  • 小一保姆级 python三大核心多态、抽象类、动态添加内容详解
    一.多态多态是面向对象编程中的一个核心概念,它允许一个接口被多个数据类型实现。这意味着,即使多个类具有不同的内部实现,它们也可以共享一个公共接口。多态的实现通常依赖于继承和方法重写。继承:子类继承父类的属性和方法。方法重写:子类重写父类中的方法,以提供特定的实现。......
  • PHP获取MySQL错误信息的方法是什么
    在PHP中,当你使用MySQLi或PDO扩展与MySQL数据库进行交互时,你可能会遇到错误或异常。以下是如何从MySQLi和PDO获取错误信息的方法:使用MySQLi获取错误信息:如果你使用的是MySQLi扩展,你可以通过mysqli_error()函数或mysqli对象的error属性来获取最近调用的错误描述。使用mysqli_erro......
  • MySQL忘记密码
    查看MySQL有没有启动。如果MySQL已经启动了,那么停掉MySQL:servicemysqldstop设置无密码启动在下面写上:skip-grant-tables启动MySQLservicemysqldstart无密码开启MySQL可以在里面设置密码。......
  • JSP学生社团管理系统k2120(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文
    系统程序文件列表开题报告内容JSP学生社团管理系统开题报告一、课题背景与意义课题背景随着高等教育的普及和学生综合素质培养的重视,学生社团在高校中扮演着越来越重要的角色。它们不仅是学生锻炼能力、展示才华的平台,也是促进学生交流、丰富校园文化生活的重要途径。然而......
  • JSP学生社团管理系统ja976(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    系统程序文件列表开题报告内容JSP学生社团管理系统开题报告一、课题背景与意义课题背景随着高校教育改革的深入和学生活动的日益丰富,学生社团作为校园文化的重要载体,其管理和运营面临着诸多挑战。传统的社团管理方式往往依赖于纸质文档和人工操作,不仅效率低下,而且容易出......
  • Java 启动参数最全详解
    Java启动参数最全详解!在Java开发中,发布JAR文件是一个常见的操作。合理设置启动参数可以确保应用程序在不同环境中正常运行,并优化性能。本文将详细介绍所有可能的启动参数,以及它们的使用场景、设置建议和具体示例。一、JAR文件基础JAR(JavaArchive)文件用于打包Java......
  • Linux操作系统下编译、链接过程详解
    gcc和g++的区别:gcc和g++是GNU编译器集合中的两个不同的编译器,它们之间的主要区别在于它们所针对的编程语言以及它们的行为和功能。1.编译器的目标语言:gcc是用于编译C语言的编译器,而g++是用于编译C++语言的编译器。因此它们分别用于编译不同的源代码文件;2.语法支持:gcc和......
  • MySQL 学习笔记 进阶(SQL优化,视图,存储过程 上)
    SQL优化 SQL优化-插入数据insert优化·批量插入insertintotb_uservalues(1,'Tom'),(2,'Cat'),(3,'Jerry');·手动提交事务starttransaction;insertintotb_uservalues(1,'Tom'),(2,'Cat'),(3,'Jerry......