news 2026/9/3 2:03:52

数据库如何建表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库如何建表

文章目录

  • 1 创建并使用数据库
    • 1.1 打开命令行
    • 1.2 运行MySQL
    • 1.3 建立数据库以及表数据
  • 2 创建表时约束条件
    • 2.1 约束类型
    • 2.2 其他SQL语句

1 创建并使用数据库

1.1 打开命令行

有的是直接输入密码就可以(软件版比较常用)。

有的是首先Win+r,输入cmd,打开MySQL命令行(用的多一些)。

还有的是到数据库安装目录下的bin文件夹,在地址栏中运行cmd。

注意,Windows启动 MySQL 的几种方式:http://u3v.cn/6j2iwa。

1.2 运行MySQL

运行cmd后输入:mysql -u root -p再回车,我的没有密码,所以password那里没有输入。

正常来讲输入自己设置的密码:(默认:123456)直接回车。

1.3 建立数据库以及表数据

首先就是建立一个数据库,在这里我们把数据库的名字命名为:jdbc_demo,输入:

createdatabasejdbc_demo;

然后我们检查一下是否创建成功,输入:

showdatabases;

使用数据库,输入:

usejdbc_demo;

创建表,让表中有ID、名字、密码三条信息(里面信息可以随便改),输入:

create tableuser(idint(4)notnullprimary key auto_increment,usernamevarchar(20)notnull,passwordvarchar(10)notnull);

当然我们在创建表之前可以先判断一下这个表在不在;

如果数据库中存在这个表,就把它从数据库中drop掉。

DROPTABLEIFEXISTS表名;

总的来说可以这样写:

IF EXISTS表名;作用:如果表存在就删掉(这段代码怎么执行都不会报错)。

DROPTABLEIFEXISTSuser;-- IF EXISTS 表名; 作用:如果表存在就删掉(这段代码怎么执行都不会报错)createtableuser(idint(4)primarykeyauto_increment,-- 主键ID 可以不设置非空,因为主键本来就是非空且唯一usernamevarchar(20)notnull,-- 用户名 非空passwordvarchar(10)notnull-- 密码 非空);

查看表是否存在,输入:

showtables;

查看表的定义,输入:

descuser;

插入数据(我们在这里随便写一下),输入:

insert into uservalues(0,"tom","12");

查看数据,输入:

select*fromuser;

到这里我们就完成一个创建数据库、建表的过程了,我们看一下运行效果:

注意事项:所有的符号都是英文编写。

2 创建表时约束条件

约束是建表时给某一列增加的强制数据规则;

创建表的语法结构:

CREATETABLE<表名>(<列名><数据类型>[列级完整性约束定义]{,<列名><数据类型>[列级完整性约束定义]}[,表级完整性约束定义]);

2.1 约束类型

根据上表student表结构写一下约束类型:

  • 主键PRIMARY KEY(一个表最多只能设置一个,是表每行的唯一性标识,非空且唯一);
  • 外键:FOREIGN KEY(是别的表中的主键,两个表有依赖关系),被别的表依赖的表称为父表,依赖别的表的表成为子表,子表数据增加或修改时,数据必须在父表中存在。父表中数据删除或修改时,数据没有被子表使用;
  • 非空NOT NULL(不允许为空);
  • 唯一性UNIQUE KEY(如果某列定义加了这个约束,那后续数据不允许出现重复,唯一约束允许NULL值的存在),比如说手机号。每个表最好都有主键约束;
  • 检查约束CHECK(条件表达式),用于限制列的取值范围或规则,例如限制性别只能是男或女;
  • 自增auto_increment(常用在主键上,如果ID有1、2、3、4、5,删掉了3号,那么会变成:1、2、4、5);

【例一】用student表进行举例;

snonamesexagedepuid
09512101张三18计算机系000001
09512102李四19计算机系000002
09512103王五20计算机系000003
列名数据类型约束说明
snoCHAR(8)主键每个学生学号应非空且唯一
nameCHAR(10)非空姓名信息必须要保存
sexCHAR(2)检查取值“男”或“女”
ageINT检查小于10,大于60的学生年龄无意义
depVARCHAR(26)default默认值为“计算机系”
uidCHAR(18)唯一值每个人的身份证号是唯一

创建student表;

CREATETABLEstudent(snoCHAR(8)PRIMARYKEY,nameCHAR(10)NOTNULL,sexCHAR(2)CHECK(sex='男'ORsex='女'),ageINTCHECK(age>=10ANDage<=60),depVARCHAR(26)default'计算机系',uidCHAR(18)UNIQUE);

【例二】用stulesson表进行举例

snocnamescore
001数据库原理90
003数据库原理80
003C语言75
列表数据类型约束说明
snoCHAR(8)
cnameCHAR(50)非空姓名信息必须要保存
scoreINT检查在0~100之间

创建stulesson

CREATETABLEstulesson(snoCHAR(8),cnameCHAR(50)NOTNULL,scoreINTCHECK(score>=0ANDscore<=100),PRIMARYKEY(sno,cname),FOREIGNKEY(sno)REFERENCESstudent(sno))

注释:

  • <表名>:所要定义的基本表的名字
  • <列名>:组成该表的各个属性(列)
  • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
  • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

其中PRIMARY KEY为主码约束,CHECK为检查约束。

2.2 其他SQL语句

删除数据库drop database数据库名;

删除表drop table表名;

在表的末尾添加一个列Alter table表名add列名 数据类型 (约束条件);

在表的开头添加一个列Alter table表名add列名 数据类型 (约束条件)first

此外:想直接导入sql文件或者写好后想导出数据库怎么办,可以参考下面这篇文章:http://i9n.cn/EzpXi。

3 char 和 varchar 区别

charvarchar都是SQL数据库中用于存储字符串数据类型的字段类型,它们的主要区别在于存储方式空间效率以及长度处理

(1)存储方式

  • char:定长字符串类型,每个char类型的字段会占用预定义的固定长度的空间,不论实际存储的字符串长度是否达到预设长度。例如,如果你声明一个char(10)字段,那么即使你只存储了3个字符,也会占用10个字符的存储空间,并用空格或其他空白字符填充剩余的7个字符位置。
  • varchar:变长字符串类型,根据实际存储的字符数动态分配存储空间。例如,对于varchar(10),若存储3个字符,只会占用包含3个字符及必要结束标记的存储空间。

(2)空间效率

  • char:当数据长度往往固定且较小,或者经常填充到预定义长度时,空间利用率较高,但存储短字符串时可能会造成空间浪费。
  • varchar:更适合存储长度变化较大的字符串,能有效节省空间,特别是对于大多数字符串都不满预定义长度的情况下。

(3)性能

  • char:因为长度固定,在数据存储和检索上可能会更快,特别是在索引密集型操作中,因为存储结构更加紧凑和可预测。
  • varchar:数据长度不固定,尽管现代数据库系统对此做了优化,但在某些条件下,尤其是在索引较大且字符串长度变化范围大的情况下,其性能可能略低于char。

(4)适用场景

  • char:适用于存储固定长度的数据,如身份证号码、ID、邮政编码等,或者是长度一定且不需要额外空间的场景。
  • varchar:适用于存储长度可变的数据,如姓名、地址、评论等,这些数据长度可能有很大差异。

需要注意的是,不同数据库系统对charvarchar的具体实现可能会有所不同,包括最大长度限制、是否填充空格、存储效率等方面。在MySQL等数据库中,varchar的最大长度可达65535字节,而在Oracle数据库中,varchar2varchar的增强版本,通常用于替代varchar

文章已获作者授权转载,版权归原作者所有,如有侵权,与本账号无关,可联系删除。 原文作者:二哈喇子!
原文链接:https://rej177.blog.csdn.net/article/details/122727753?spm=1001.2014.3001.5502

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:50:27

【DevOps安全必修课】:Dify环境中密钥文件自动化备份的正确姿势

第一章&#xff1a;Dify环境中密钥文件自动化备份的核心挑战 在Dify平台的运维实践中&#xff0c;密钥文件作为身份认证与服务间通信安全的核心载体&#xff0c;其完整性与可用性直接关系到系统的稳定性。然而&#xff0c;在实现密钥文件自动化备份的过程中&#xff0c;面临多重…

作者头像 李华
网站建设 2026/9/1 7:10:56

如何高效查找国外研究文献:实用方法与技巧指南

刚开始做科研的时候&#xff0c;我一直以为&#xff1a; 文献检索就是在知网、Google Scholar 里反复换关键词。 直到后来才意识到&#xff0c;真正消耗精力的不是“搜不到”&#xff0c;而是—— 你根本不知道最近这个领域发生了什么。 生成式 AI 出现之后&#xff0c;学术检…

作者头像 李华
网站建设 2026/9/2 22:22:48

紧急警告:dify索引因段落过长频繁中断?立即执行这3个修复步骤

第一章&#xff1a;紧急警告&#xff1a;dify知识库索引因段落过长频繁中断 近期多位用户反馈&#xff0c;在使用 Dify 构建知识库时&#xff0c;索引任务频繁中断或失败。经排查&#xff0c;主要原因为文档中存在**超长段落**&#xff0c;超出向量化模型的上下文处理能力&…

作者头像 李华
网站建设 2026/8/28 20:07:11

Dify密钥文件如何安全备份?99%开发者忽略的3个致命细节

第一章&#xff1a;Dify密钥文件备份的重要性 在使用 Dify 这类基于大模型的应用开发平台时&#xff0c;密钥文件是保障系统安全与数据完整性的核心组件。这些密钥通常用于身份认证、API 调用加密以及敏感配置的解密操作。一旦丢失或损坏&#xff0c;可能导致服务中断、数据无法…

作者头像 李华
网站建设 2026/8/29 2:44:44

中小企业语音转写解决方案:Speech Seaco Paraformer低成本落地实践

中小企业语音转写解决方案&#xff1a;Speech Seaco Paraformer低成本落地实践 1. 引言&#xff1a;为什么中小企业需要高性价比的语音识别方案&#xff1f; 在日常办公中&#xff0c;会议记录、客户沟通、培训录音等场景产生了大量语音数据。过去&#xff0c;人工听写耗时耗…

作者头像 李华
网站建设 2026/9/3 0:48:05

为什么90%的Dify用户忽略DSL迁移能力?掌握它让你效率提升3倍

第一章&#xff1a;DSL迁移能力的核心价值与认知误区 在现代软件架构演进中&#xff0c;领域特定语言&#xff08;DSL&#xff09;的迁移能力逐渐成为系统可维护性与扩展性的关键支撑。DSL通过抽象业务语义&#xff0c;使开发人员能够以更贴近业务逻辑的方式编写代码&#xff0…

作者头像 李华