数据库如何建表

上周有客户问我如何在 Navicat for MySQL 中创建数据表,我详细解释了。
首先,您需要打开 Navicat for MySQL 并找到要创建数据库的部分。
你看,所有的数据库都在那里,你选择一个然后点击它。

然后在数据库中找到“表”选项,右键单击,会出现一个菜单。
You can directly click on “New table”.这一步很重要,因为所有后续操作都会设计这张表。

然后您将看到右侧的界面,您可以在其中设计电路板。
您是否看到这些字段名称、类型、长度以及是否为空的选项? That's all you need to fill out.例如,如果要创建用户表,可以将字段名称设置为“用户名”,类型设置为“文本”,长度可以设置为5 0个字符,然后“如果为空”选择“否”,因为用户名不能为空。

设计完成后,您可以单击“保存”按钮。
别忘了保存,否则你辛苦定义的数据就白费了。

最后,你会在界面上看到一个“表名”。
输入所需的表名称,例如“用户信息表”,然后单击“确定”。
表名可以根据自己的需要设置,只要记住就好,使用起来也方便。

无论如何,这取决于你。
This operation is actually quite simple. Try it a few times and you will get it.我仍然想知道是否值得记住,最好在创建表之前规划字段和类型,以便设计更高效。

数据库怎么建表啊

哦,让我告诉你我做手表的时候。
这并不像阅读手册并在键盘上打字那么简单。
2 005 年我接手这个项目的时候,用的是access数据库,当时对它了解不多。
如果您想创建一个表来存储客户数据,只需键入 CREATE TABLEcustomers 即可完成。
结果是一个错误,表明该表已存在。
当时很紧急,整个项目都用了。

后来我问了老师傅,他教我怎么做。
首先检查表是否存在,如果存在则使用 E​​XISTS DROP table Clients。
这句话。
查看,如果存在则删除该表,如果不存在则报错,并创建新表。
我是经过一番大惊小怪之后才这么做的。
后来我发现 MySQL 和 Oracle 有不同的语法,所以我必须记住互换使用它们。
有一个漏洞需要解决。
有一次我做表的时候,其中一个字段是客户编号,于是就想到了大写的VARCHAR(2 0)。
结果,其中存储的信息全部损坏。
检查后发现需要指定一个字符集,比如CHARACTER SET utf8 这让我很困扰,我花了很多时间试图找出原因。
创建表格之前最好面对电脑逐行输入,不要只靠记忆。
然后,我想起 INT 是一个整数,所以我错误地输入了一次 INT(2 0),认为这可能会限制它的长度。
实际上,这是 SQL Server 的一条旧规则。
现在我只使用 INTEGER 或仅使用 INT。
数据无法保存,必须进行编辑。

而索引是一个陷阱。
当我开始建表时,我觉得列太多了,所以我添加了所有索引。
因此,查询速度极其缓慢。
后来我了解到索引虽然不错,但也好不了多少。
尤其是大表,想想看,每次更新数据都要换索引,很累。
后来学着乖了,只在查询条件多、排序频繁的列上加索引。
例如,在“客户”表中,为“客户 ID”添加主键索引,为“电话”或“电子邮件”添加标准索引,而不要理会其他索引。

哦,顺便说一句,外键也很有用。
我当年做项目的时候,两个表就链接起来了,没有加外键。
结果,一个表中的数据被删除了,但另一个表中仍然存在大量无效数据,我什至无法检测到。
后来添加外键,设置ON DELETE CASCADE,主表数据删除,从表关联的数据也自动删除。
这就是所谓的规则。
确实,对于制表业而言,熟能生巧。
首先你应该参考手册并逐一尝试AUTO_INCRMENT、NOT NULL和DEFAULT。
会慢慢好起来的。
现在我可以画出表结构并编写相应的SQL语句。
不过,有一些新的东西比如分布式数据库我还是不敢废话。
我还没接触过,不敢乱说。

数据库建表语句有哪些

说实话,说到创建表,当我第一次接触数据库时,我被堆栈的限制所淹没。
但如果你真正使用它,你会发现这些骨架建筑模型数据。
创建的命令,说白了就是画图,设置第一个目录。

例如在commerce项目中,我在创建user表时写了以下内容: sql 用户表( id INT 主键自动递增 用户 VARCHAR(5 0) 唯一非空; 地址 VARCHAR(1 00) UNIQUE 密码哈希 CHAR(6 4 ) NOT NULL, 创建于 TIMESTAMP 删除 CURRENT_TIMESTAMP, 最后登录时间戳 );
注意是自增主键,用户和邮箱约束必须是UNIQUE,密码列中不能有空值。
要绘制用户的图片,必须注意细节。

当连接许多表时,有趣的外键约束非常重要。
上次回顾旧系统时,发现商品记录和订单凭证是根据ID字段建立关系的,海量数据也随之被压缩。
小心更改: sql 更改表添加订单 FK_ORDER_USER 外键 (user_id) 引用用户 (id) UPDATE CASCADE DELETE RESTRICTION;
添加了更新级联,这意味着有时当用户更改名称时,显示必须按顺序更改。
删除限制可防止用户及其等级被意外删除。

我发现了另一个关于检查约束的陷阱。
MySQL 8 .0之前,只有列约束,但是后来我发现每月约束好用得多。
之前的策略是验证用户的年龄,在列级别他写道: sql Age INT CHECK (age >= 1 8 )
后来系统需要添加学术验证,发现无法跨列判断列的约束。
切换到表级后,是否可以进行该语句; sql CHECK (age >= 1 8 AND education_level IN (1 , 2 ))
当然,太多的这些约束不会牺牲什么。
这对我来说是一个古老的目标。
所有这些都受到要建造的桌子的狭窄的限制。
结果,插入数据时,响应速度实际上慢了3 0%。
后来,当我更改设计时,我删除了必要的检查约束并使用它仅应用验证层。
速度顿时更快了。

仅依靠语法书是无法学习模型信息的。
您实际上运行了代码。
例如,如果尝试一次向三列添加 CHECK 约束,MySQL 8 .0 或更高版本将报告错误,因为数据元素无法触发单个检查约束。
第一次陷入这个陷阱的时候,我看了半个小时的错误日志,最后发现写的顺序错了。

我没有详细了解 PostgreSQL 在这方面的语法,但我记得它的流程没有一个比 MySQL 更复杂。
请记住识别数据。
我使用的案例基本都是MySQL。