搜尋
首頁資料庫mysql教程4、数据表的创建与更新_MySQL

bitsCN.com

数据表是关系数据库中操作的级别对象。在关系数据库中,通过数据表来存储数据记录。在数据表中会经常用到主键、外键、约束和索引。这一章将对数据表中涉及到的数据类型以及主键、外键、约束和索引等概念和使用方法做一个全面的介绍。另外还将介绍数据表的创建方法,以及如何对表中的记录进行增加和修改操作、如何删除数据表等内容。
1.数据库中的表
在关系数据库中,数据表是存储数据的基本单元,由行和列两部分组成的。它是根据数据库设计阶段的E-R图转换而来。在数据表中除了行、列、数据记录、属性、字段等基本概念外,还会涉及到主键、外键、索引、约束等概念。
数据记录、行、字段、列
在关系数据库中,数据表是存储数据的基本单元,由行和列两部分组成的。其中,行用来描述实体中的具体数据,在数据表中每一行中的数据被称为一条数据记录,也可以简称为记录;字段是表中的一列,用来保存数据表中某一条记录中的特定信息。字段在关系数据库中也可以称为列。
1
主键
为了保证在一张数据表中不会出现两个完全相同的数据记录,需要为每一张数据表都定义一个主键。主键作为数据表中的唯一标示,保证了一条记录的唯一性。通过主键可以区分数据表中的每一条记录。在创建数据表时,需要保证被定义为主键的列的列值唯一,并且不能为空值(即NULL值)。
主键在关系模型中用来约束实体完整性。所谓实体完整性约束是指对数据表中行的完整性约束。在实体完整性中,需要有一个主键来唯一标示数据表中每一行的数据记录,数据表中的主键唯一且不能为空值。
注意:主键可以定义在多个列上,并不一定只定义在一个列上。也就是说,在定义数据表的时候,可以将数据表中的多个列合并在一起作为该表的主键。
外键
外键是用来定义表与表之间的关系的。在数据表中,外键是这样定义的:如果属性列F是关系B中一个属性(并不是关系B的主键),并且属性列F是关系A中的主键,则F就是关系B的外键。关系A中的表被称为主表,关系B中的表被称为主表的从表。
外键在关系模型中用来约束参照完整性。所谓参照完整性约束是指表与表之间的约束。在参照完整性中,从表中的每一条数据记录中的外键值都必须存在于主表中。对于建立了关联关系的两个数据表来说,对其中一个数据表的增加、修改或者删除数据的操作都会对另一个数据表中的记录产生影响。
索引
在实际应用中,为了加快访问速度,节省访问时间,一般都需要使用索引进行查询。通过建立索引,在查询数据表中的数据时,数据库可以很快的将其找到,而不用扫描整个数据表。
索引是一个指向数据表中数据的指针,指向索引字段在数据表中的物理位置。如果在执行查询操作时,WHERE子句中指定的字段是被设置为索引的字段,则数据库会首先在索引中对指定的值进行查询,并返回查询的数据在数据表中的位置。如果在执行查询操作时,WHERE子句中指定的字段没有设置为索引的字段,那么数据库会查询数据表中的每一行数据记录,进行全部扫描。因此适当的创建索引,可以加快数据的检索速度,提高对数据的访问效率,提供数据查询的性能。
当然,索引本身也有一些弊端,例如,索引会占用大量的硬盘空间;随着数据列的增加,创建和维护索引的时间也会随之增加;在对数据进行增加、删除和修改等更新操作的时候,需要对索引进行维护,降低更新数据的速度。因此,对那些不是在查询过程中经常用到的列以及在数据表中经常需要进行增加、删除和修改等更新操作的列就不适合建立索引。
虽然创建索引可以提高查询的速度,但是由于索引本身会占用物理空间以及维护索引可能带来的时间的损耗,所以在为数据表中的列创建索引时,并不是为数据表中的每一个列都要创建索引,那样做反而不会起到提高查询效率的作用。因此需要在数据表的适当的列上创建索引。一般可以在下面这些列中创建索引。
1.在主键列中创建索引
2.多表连接时,在经常使用的连接列上创建索引
3.在经常使用WHERE子句查询的列上创建索引
4.在经常进行分组(GROUP BY)和排序(OREDR BY)的列上创建索引
约束
为了保证数据的完整性,需要使用数据库约束。完整性约束包括对表的约束和对列的约束。表约束主要包括唯一约束、主键约束、外键约束和CHECK约束,列约束除了包括唯一约束、参照约束和CHECK约束之外,还有非空约束
唯一约束(UNIQUE):保证使用唯一约束的某一列或者一组列中没有相同的值,即保证列的值的唯一性。但是唯一约束中可以允许在列中插入空值(即NULL值)。
主键约束(PRIMARY KEY):保证使用主键约束的列中只能有唯一的值,并且不能包含空值。数据表中每一列只能定义一个PRIMARY KEY。
外键约束(FOERING KEY):保证表的参照完整性,确保对一个表的数据操作不会对与之关联的表造成不利的影响。
检查约束(CHECK):限制列的取值范围或者取值条件。可以为一个列定义多个CHECK约束。
非空约束(NOT NULL):只用来约束列。在向该列插入数据时不允许插入空值。
2.创建数据表
在创建完数据库之后,就可以在数据库中创建数据表了。创建数据表可以通过使用CREATE TABLE语句。使用CREAT TABLE语句创建数据表的语法格式如下:

CREATE TABLE table_name(column_name1 datatype1 [constraint_condition1][,column_name2 datatype2 [constraint_condition2]]…)
column_name1为指定数据表的列名;datatype1为指定列名的数据类型;constraint_condition1为指定列名的完整性约束。
为了保证数据的完整性,需要使用数据库约束。约束主要包括唯一约束(UNIQUE)、主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、检查约束(CHECK)和非空约束(NOT NULL)。
唯一约束(UNIQUE)用来保证某一列或者一组列中没有相同的值。如果为列定义了唯一约束,则该列中不允许出现重复的值,但是允许列中存在空值(即NULL值)。唯一约束即可以定义的表级上,也可以定义在列级上。一般在为列创建唯一约束后,数据库会自动为该列建立一个唯一索引,其索引名与约束名是相同的。
主键约束(PRIMARY KEY)是用来保证使用主键约束的某一列或者一组列中有唯一的值,并且不能包含空值(即NULL值)。数据表中每一列只能定义一个PRIMARY KEY。一般在为列创建主键约束后,数据库会自动为该列建立一个主索引,其索引名与约束名是相同的。
在创建数据表时,如果希望将多个列组合起来作为一个数据表中的主键,可以在PRIMARY KEY关键字后使用括号,将需要定义为主键的列放到PRIMARY KEY关键字后面的括号中。括号中的多个列之间需要使用逗号分割。
首先来考虑这样一个问题,现在由于某种原因需要将一名学生在学校的全部信息删除。这里涉及学生信息的一共有两个表,一个是学生信息表,一个是成绩信息表。学生信息表保存的是学生的基本信息,成绩信息表保存的是学生选课的课程成绩信息。如果没有定义外键约束,将该名学生从学生信息表中删除时,而没有将该名学生的选课的课程成绩信息删除,这样就会造成两个关联表之间数据的不一致。
同样的问题也可能出现在对两个关联表中数据的修改操作中。如果是多个表之间存在关联关系的话,不定义外键约束,类似上面的情况很可能会发生。为了避免由于操作不当而引起的关联表中数据的不一致,有必要为关联表之间定义外键约束。
外键约束(FOERING KEY)主要是用来定义两个表之间的关系。外键约束保证了表的参照完整性,确保对一个表的数据操作不会对与之关联的表造成不利的影响。定义外键的语法格式如下:
FOREIGN KEY[表名1](列名1) REFERENCES 表名2(列名2)[ON UPDATE [CASCADE]|[SET NULL]|[RESTRICT]][ON DELETE[CASCADE]|[SET NULL]|[RESTRICT]]
其后的ON UPDATE和ON DELETE分别指明了对表中的数据做修改和删除时,主从表之间要采用的主要操作方式。
CASCADE:级联删除。如果主表中的一条数据记录被删除,那么从表中与之相对应的的数据也将被一起删除。
SET NULL:置空删除。如果主表中的一条数据记录被删除,那么从表中与之相对应的的数据也将被设置为空值。
RESTRICT:受限删除。如果主表中的一条数据记录被删除,则在执行DELETE命令时数据库管理系统会报错,通知用户与主表相对应的该数据在从表中仍然存在,但是与主表相对应的该数据在从表中不会被删除。它是默认的方式。
检查约束(CHECK)是用来限制列的取值范围或者取值条件,使用CHECK约束可以保证数据规则的一致性。可以为一个列定义多个CHECK约束,当为列定义了CHECK约束后,该列中所对应的数据必须满足指定的约束条件。
非空约束(NOT NULL)是用来保证在向该列插入数据时不允许插入空值(即NULL值)。非空约束只能用来约束列。bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何向新的MySQL用戶授予權限如何向新的MySQL用戶授予權限May 09, 2025 am 12:16 AM

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

如何在MySQL中添加用戶:逐步指南如何在MySQL中添加用戶:逐步指南May 09, 2025 am 12:14 AM

toadduserInmysqleffect和securly,跟隨台詞:1)USEtheCreateUserStattoDaneWuser,指定thehostandastrongpassword.2)GrantNecterAryAryaryPrivilegesSustherthing privilegesgeStatement,usifementStatement,adheringtotheprinciplelastprefilegege.3)

mysql:添加具有復雜權限的新用戶mysql:添加具有復雜權限的新用戶May 09, 2025 am 12:09 AM

toaddanewuserwithcomplexpermissionsinmysql,loldtheSesteps:1)創建eTheEserWithCreateuser'newuser'newuser'@''localhost'Indedify'pa ssword';。 2)GrantreadAccesstoalltablesin'mydatabase'withGrantSelectOnMyDatabase.to'newuser'@'localhost';。 3)GrantWriteAccessto'

mysql:字符串數據類型和coltrationsmysql:字符串數據類型和coltrationsMay 09, 2025 am 12:08 AM

MySQL中的字符串數據類型包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT,排序規則(Collations)決定了字符串的比較和排序方式。 1.CHAR適合固定長度字符串,VARCHAR適合可變長度字符串。 2.BINARY和VARBINARY用於二進制數據,BLOB和TEXT用於大對像數據。 3.排序規則如utf8mb4_unicode_ci忽略大小寫,適合用戶名;utf8mb4_bin區分大小寫,適合需要精確比較的字段。

MySQL:我應該在Varchars上使用什麼長度?MySQL:我應該在Varchars上使用什麼長度?May 09, 2025 am 12:06 AM

最佳的MySQLVARCHAR列長度選擇應基於數據分析、考慮未來增長、評估性能影響及字符集需求。 1)分析數據以確定典型長度;2)預留未來擴展空間;3)注意大長度對性能的影響;4)考慮字符集對存儲的影響。通過這些步驟,可以優化數據庫的效率和擴展性。

mysql blob:有什麼限制嗎?mysql blob:有什麼限制嗎?May 08, 2025 am 12:22 AM

mysqlblobshavelimits:tinyblob(255bytes),blob(65,535 bytes),中間佈洛布(16,777,215個比例),andlongblob(4,294,967,967,295 bytes).tousebl觀察:1)考慮pperformance impactsandSandStorLageBlobSextern; 2)管理backbackupsandreplication carecration; 3)usepathsinst

MySQL:自動化用戶創建的最佳工具是什麼?MySQL:自動化用戶創建的最佳工具是什麼?May 08, 2025 am 12:22 AM

自動化在MySQL中創建用戶的最佳工具和技術包括:1.MySQLWorkbench,適用於小型到中型環境,易於使用但資源消耗大;2.Ansible,適用於多服務器環境,簡單但學習曲線陡峭;3.自定義Python腳本,靈活但需確保腳本安全性;4.Puppet和Chef,適用於大規模環境,複雜但可擴展。選擇時需考慮規模、學習曲線和集成需求。

mysql:我可以在斑點內搜索嗎?mysql:我可以在斑點內搜索嗎?May 08, 2025 am 12:20 AM

是的,YouCansearchInIdeAblobInMysqlusingsPecificteChniques.1)轉換theblobtoautf-8StringWithConvertFunctionWithConvertFunctionandSearchUsiseLike.2)forCompresseBlysBlobs,useuncompresseblobs,useuncompressbeforeconversion.3)expperformance impperformance imptactSandDataEcoding.4)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境