当前位置: 首页 > news >正文

MySQL数据库:创建/删除数据库、数据类型及完整性约束详解

创建与删除数据库

创建数据库

使用DDL语句创建数据库

# CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码; create database 数据库名 default character set 字符编码;

示例:

创建一个test 的数据库,并查看该数据库,以及该数据库的编码。

创建数据库:

create database test default character set utf8;

查看数据库:

show databases;

查看数据库编码:

select schema_name,default_character_set_name from information_schema.schemata where schema_name = 'test';

使用Navicat创建数据库

示例:

创建一个test2 的数据库

删除数据库
  • 使用DDL语言删除数据库
#DROP DATABASE 数据库名称; drop database 数据库名称;

示例:删除 test 数据库

drop database test;
  • 使用Navicat删除数据库

示例:删除test2数据库

选择数据库

在创建表时,需要先选择数据库。

#USE 数据库名; use 数据库名;

示例:

创建一个名称为 gzkhj 的数据库,编码为 utf8。

create database gzkhj default character set utf8;

选择该数据库

use gzkhj;

MySQL中的数据类型

整数类型

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用
例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充

浮点类型

字符类型

日期类型

二进制数据(BLOB)
  1. BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式
    存储,不分大小写。
  2. BLOB存储的数据只能整体读出。
  3. TEXT可以指定字符集,BLOB不用指定字符集。

MySQL中的约束

约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  • 主键约束(Primary Key) PK

  • 外键约束(Foreign Key) FK

  • 唯一性约束(Unique)

  • 非空约束(Not Null)

  • 检查约束(Check)

添加主键约束(Primary Key)
  1. 单一主键

使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

  1. 联合主键

使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

修改表添加主键约束

  • 使用DDL语句添加主键约束
# ALTER TABLE 表名 ADD PRIMARY KEY(列名) alter table 表名 add primary key(列名);

示例:将 emp 表中的 employee_id 修改为主键。

alter table emp add primary key(employee_id);

主键自增长

MySQL 中的自动增长类型要求:

  • 一个表中只能有一个列为自动增长。
  • 自动增长的列的类型必须是整数类型。
  • 自动增长只能添加到具备主键约束与唯一性约束的列上。
  • 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
alter table 表名 modify 主键 类型 auto_increment;

示例:将 emp 表中的 employee_id 主键修改为自增。

alter table emp modify employee_id int auto_increment;
  • 使用Navicat添加主键约束

删除主键

  • 使用DDL语句删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;


)

示例:删除emp表中的 employee_id 主键约束。

去掉自动增长:

alter table emp modify employee_id int;

删除主键:

alter table emp drop primary key;
  • 使用Navicat删除主键

添加外键约束(Foreign Key)

修改表添加外键约束

  • 使用DDL语句添加外键约束
#ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名); lter table 表名 add constraint 约束名 foreign key(列 名) references 参照的表名(参照的列名);

示例一:创建 departments 表包含 department_id 、department_name ,location_id。

create table departments(department_id int, department_name varchar(30), location_id int);

示例二:修改departments表,向department_id列添加主键约束与自动递增。

alter table departments add primary key(department_id); alter table departments modify department_id int auto_increment;

示例三:修改 emp 表,添加 dept_id 列。

alter table emp add column dept_id int;

示例四:向 emp 表中的 dept_id 列添加外键约束。

alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);
  • 使用Navicat添加外键约束

删除外键约束

  • 使用DDL语句删除外键约束。
#ALTER TABLE 表名 DROP FOREIGN KEY 约束名; alter table 表名 drop foreign key 约束名;

示例:删除 dept_id 的外键约束。

alter table emp drop foreign key emp_fk;
  • 使用Navicat删除外键约束

添加唯一性约束(Unique)

修改表添加唯一性约束

  • 使用DDL语句添加唯一性约束
# ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名); alter table 表名 add constraint 约束名 unique(列名);

示例:向 emp 表中的 name 添加唯一约束

alter table emp add constraint emp_uk unique(name);
  • 使用Navicat添加唯一性约束

删除唯一性约束

  • 使用DDL语句删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;

示例:删除 name 的唯一约束

alter table emp drop key emp_uk;
  • 使用Navicat删除唯一性约束

非空约束(Not Null)

修改表添加非空约束

  • 使用DDL语句添加非空约束。
# ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL; alter table 表名 modify 列名 类型 not NULL;

示例:向 emp 表中的 salary 添加非空约束

alter table emp modify salary float(8,2) not NULL;
  • 使用Navicat添加非空约束。

删除非空约束

  • 使用DDL语句删除非空约束
# ALTER TABLE 表名 MODIFY 列名 类型 NULL; alter table 表名 modify 列名 类型 NULL;

示例:删除emp表中salary 的非空约束

alter table emp modify salary float(8,2) NULL;
  • 使用Navicat删除非空约束

创建表时添加约束

查询表中的约束信息:

# SHOW KEYS FROM 表名; show keys from 表名;

示例:创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值

create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null);
http://www.cnnetsun.cn/news/2535475.html

相关文章:

  • 1. NLP课程大纲
  • 海量时序数据困局破壁:DolphinDB 如何重新定义工业物联网的数据底座
  • Rust Trait系统设计模式:实现灵活的多态和代码复用
  • 终极消息保护方案:RevokeMsgPatcher轻松实现微信QQ防撤回
  • 加速科研、提出新假设:谷歌重磅推出Co-Scientist模型
  • 【c++面向对象编程】第48篇:Lambda表达式与std::function:OOP中的函数式编程
  • 山东防爆监控哪个品牌好用
  • 3分钟解决网易云音乐格式限制:免费NCM转换工具完全指南
  • ComfyUI Manager 终极安装指南:3种方法轻松管理AI工作流节点
  • CANN NPU 功耗优化:推理服务的能效比提升实战
  • 2026论文写作工具红黑榜:AI论文网站怎么选?清单来了
  • AI Agent Harness 在智能客服领域的应用
  • 2026年论文党必备:盘点2026年倾心之选的的降AIGC网站
  • 为什么92%的Lindy自动化项目在第90天遭遇断崖式停滞?资深架构师紧急披露3个临界预警信号
  • 10_函数递归_从阶乘到递归调用栈
  • C++ 学习笔记---容器---vector(后续会更新)
  • CANN-ops-nn-昇腾NPU神经网络算子的积木盒子
  • 从翻车到封神:1个被低估的--no参数+2个隐藏材质关键词,让水面倒影清晰度突破人眼分辨极限
  • 如何用开源工具实现自动化硬件适配?OpCore-Simplify让跨平台部署变得简单
  • gcc下载地址
  • Keil C166嵌入式开发中的宽字符实现与优化
  • 飞行人形机器人空气动力学建模与CFD仿真实践
  • 抖音内容批量下载实战指南:从单视频到用户主页的高效方案
  • 企业内如何通过Taotoken实现API访问控制与审计
  • PostgreSQL 性能优化:从 3 秒到 30 毫秒,我做了这 5 件事
  • 文件上传漏洞深度解析:从getshell到六维纵深防御
  • IDA与Frida协同逆向:静态定位+动态Hook实战指南
  • Unity风格化山脉管线:轮廓生成+分层材质+程序植被
  • ThingsVis v1.1.15 版本更新:补齐嵌入与运维体验短板,多场景集成更可靠
  • 鸿蒙签名验证报错UNABLE_TO_VERIFY_LEAF_SIGNATURE根因解析