详解mysql基本操作详细(二)
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,前言本文类容1、数据库的几大约束2、表与表之间的关系约束:主键约束:作用:为了保证数据的有效性和完整性mysql中常用的约束:主键约束(primary key) 唯一约束(unique) 非空约束(n
千家信息网最后更新 2025年01月21日详解mysql基本操作详细(二)
前言
本文类容
1、数据库的几大约束
2、表与表之间的关系
约束:
主键约束:
作用:为了保证数据的有效性和完整性mysql中常用的约束:主键约束(primary key) 唯一约束(unique) 非空约束(not null) 外键约束(foreign key)主键约束:被修饰过的字段唯一非空 注意:一张表只能有一个主键,这个主键可以包含多个字段 方式1:建表的同时添加约束 格式: 字段名称 字段类型 primary key 方式2:建表的同时在约束区域添加约束 所有的字段声明完成之后,就是约束区域了 格式: primary key(字段1,字段2) create table pk01( id int, username varchar(20), primary key (id) ); insert into pk01 values(1,'tom');-- 成功 insert into pk01 values(1,'tom');-- 失败 Duplicate entry '1' for key 'PRIMARY' insert into pk01 values(null,'tom');-- 失败 Column 'id' cannot be null create table pk01( id int primary key, username varchar(20), primary key (id) );-- 错误的 一张表只能有一个主键 方式3:建表之后,通过修改表结构添加约束 create table pk02( id int, username varchar(20) ); alter table pk02 add primary key(字段名1,字段名2..); alter table pk02 add primary key(id,username); insert into pk02 values(1,'tom');-- 成功 insert into pk02 values(1,'tomcat');-- 成功 insert into pk02 values(1,'tomcat');-- 失败
唯一约束
被修饰过的字段唯一,对null不起作用 方式1:建表的同时添加约束 格式: 字段名称 字段类型 unique create table un( id int unique, username varchar(20) unique ); insert into un value(10,'tom');-- 成功 insert into un value(10,'jack');-- 错误 Duplicate entry '10' for key 'id' insert into un value(null,'jack');-- 成功 insert into un value(null,'rose');-- 成功 方式2:建表的同时在约束区域添加约束 所有的字段声明完成之后,就是约束区域了 unique(字段1,字段值2...) 方式3:建表之后,通过修改表结构添加约束 alter table 表名 add unique(字段1,字段2);-- 添加的联合唯一 alter table 表名 add unique(字段1);-- 给一个添加唯一 alter table 表名 add unique(字段2);-- 给另一个添加唯一 //////////////// create table un01( id int, username varchar(20) ); alter table un01 add unique(id,username); insert into un01 values(1,'tom');-- 成功 insert into un01 values(1,'jack');-- 成功 insert into un01 values(1,'tom');-- 失败 Duplicate entry '1-tom' for key 'id'
非空约束
特点:被修饰过的字段非空 方式: create table nn( id int not null, username varchar(20) not null ); insert into nn values(null,'tom');-- 错误的 Column 'id' cannot be null
案例1 一对多 - 创建用户表
create table user( id int primary key auto_increment, username varchar(20));-- 创建订单表create table orders( id int primary key auto_increment, totalprice double, user_id int);
为了保证数据的有效性和完整性,添加约束(外键约束).
在多表的一方添加外键约束
格式:
alter table 多表名称 add foreign key(外键名称) references 一表名称(主键);
例如:
alter table orders add foreign key(user_id) references user(id);
添加了外键约束之后有如下特点:
- 1.主表中不能删除从表中已引用的数据
- 2.从表中不能添加主表中不存在的数据
开发中处理一对多:
在多表中添加一个外键,名称一般为主表的名称_id,字段类型一般和主表的主键的类型保持一致,
为了保证数据的有效性和完整性,在多表的外键上添加外键约束即可.
案例2 一对多 - 创建用户表
-- 创建商品表create table product( id int primary key auto_increment, name varchar(20), price double);-- 创建中间表create table orderitem( oid int, pid int);
- 添加外键约束
alter table orderitem add foreign key(oid) references orders(id);
alter table orderitem add foreign key(pid) references product(id);
开发中处理多对多:
引入一张中间表,存放两张表的主键,一般会将这两个字段设置为联合主键,这样就可以将多对多的关系拆分
成两个一对多了
为了保证数据的有效性和完整性
需要在中间表上添加两个外键约束即可.
案例3-多表查询
笛卡尔积:
多张表无条件的联合查询.没有任何意思 select a.*,b.* from a,b;
内连接
格式1:显式的内连接 select a.*,b.* from a [inner] join b on ab的连接条件格式2:隐式的内连接 select a.*,b.* from a,b where ab的连接条件
外连接
左外连接: select a.*,b.* from a left [outer] join b on 连接条件; 意思: 先展示join左边的(a)表的所有数据,根据条件关联查询 join右边的表(b),符合条件则展示出来,不符合以null值展示. 右外连接: select a.*,b.* from b right [outer] join a on 连接条件; 意思: 先展示jion右边的表(a)表的所有数据,根据条件关联查询join左边的表(b),符合条件则展示出来,不符合以null值展示. 子查询:一个查询依赖另一个查询.
以上所述是小编给大家介绍的mysql基本操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
字段
数据
成功
条件
名称
方式
查询
格式
有效
区域
同时
完整性
有效性
类型
保证
两个
意思
案例
错误
联合
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电脑共享文件服务器
中国自主4台根服务器
党课 网络安全
数据库恢复机制与技术
芯片设计和软件开发哪个难
互联网教育科技软件
管理软件开发哪个品牌好
m7服务器
web软件开发职业技术证书
安全数据库是什么东西
西南民族大学数据库
合肥捷科网络技术有...
电大计算机网络技术专业
服务器租用维修
软件开发公司必备认证
虎丘区第三方网络技术哪个好
消防部队网络安全工作
软件开发标准员岗位职责
万兆网卡是目前服务器上最快的吗
数据库的学习理念
遂宁俗匈网络技术有限公司
罗布乐思服务器响应错误怎么办
深信服服务器内存价格
web软件开发职业技术证书
家庭无线服务器
以下属于网络安全信息的
怎么查看安装数据库的版本
数据库没有卸载完
云南最好的软件开发
服务器多世界手机