ホームページ データベース mysql チュートリアル 4、数据表的创建与更新_MySQL

4、数据表的创建与更新_MySQL

Jun 01, 2016 pm 01:34 PM
リレーショナルデータベース データシート 記録

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pinduoduo で購入したものの記録はどこで確認できますか? 購入した製品の記録を表示するにはどうすればよいですか? Pinduoduo で購入したものの記録はどこで確認できますか? 購入した製品の記録を表示するにはどうすればよいですか? Mar 12, 2024 pm 07:20 PM

Pinduoduo ソフトウェアは多くの優れた製品を提供し、いつでもどこでも購入でき、各製品の品質は厳しく管理され、すべての製品は正規品であり、多くの優遇ショッピング割引があり、誰もがオンラインで買い物をすることができます。携帯電話番号を入力してオンラインにログインし、オンラインで複数の配送先住所や連絡先情報を追加し、最新の物流動向をいつでも確認できます さまざまなカテゴリの商品セクションが開き、検索して上下にスワイプして購入および注文することができます家から出ることなく利便性を体験することができます.オンライン ショッピング サービスでは、購入した商品を含むすべての購入記録を確認することもでき、数十のショッピング赤い封筒とクーポンを無料で受け取ることもできます.今回、編集者は Pinduoduo ユーザーに詳細なオンライン サービスを提供しました購入した製品の記録を表示する方法。 1. 携帯電話を開き、Pinduoduo アイコンをクリックします。

Linux コマンド履歴を表示および管理する方法 Linux コマンド履歴を表示および管理する方法 Aug 01, 2023 pm 09:17 PM

Linux でコマンド履歴を表示する方法 Linux では、history コマンドを使用して、以前に実行されたすべてのコマンドのリストを表示します。構文は非常に単純です:history History コマンドと組み合わせるオプションには次のものがあります: オプションの説明 -c 現在のセッションのコマンド履歴をクリアします -w コマンド履歴をファイルに書き込みます -r 履歴ファイルからコマンド履歴を再ロードします - n 最近のコマンドの出力数を制限するhistory コマンドを実行するだけで、Linux ターミナルで以前に実行されたすべてのコマンドのリストが表示されます。コマンド履歴の表示に加えて、コマンド履歴を管理したり、以前に実行したコマンドの変更を実行したり、逆に実行したりすることもできます。コマンド履歴を検索したり、履歴を完全に削除したりすることもできます

iPhoneの通話履歴を確認してエクスポートするにはどうすればよいですか? iPhoneの通話履歴を確認してエクスポートするにはどうすればよいですか? Jul 05, 2023 pm 12:54 PM

iPhone の通話録音は過小評価されがちですが、iPhone の最も重要な機能の 1 つです。この機能はシンプルであるため非常に重要であり、デバイス上で発信または受信された通話に関する重要な洞察を提供できます。仕事の目的でも、法的手続きの場合でも、通話記録にアクセスできる機能は非常に貴重であることがわかります。簡単に言うと、通話履歴とは、電話をかけたり受けたりするたびに iPhone に作成されるエントリを指します。これらのログには、連絡先の名前 (連絡先として保存されていない場合は番号)、タイムスタンプ、継続時間、通話ステータス (ダイヤル、不在、応答なし) などの重要な情報が含まれています。これらはあなたの通信履歴の簡潔な記録です。通話履歴には、iPhone に保存されている通話履歴ストリップが含まれます

iPhoneのヘルスケアアプリで薬の記録履歴を表示する方法 iPhoneのヘルスケアアプリで薬の記録履歴を表示する方法 Nov 29, 2023 pm 08:46 PM

iPhone では、ヘルスケア App に薬を追加して、毎日摂取する薬、ビタミン、サプリメントを追跡および管理できます。デバイスで通知を受信したときに、服用した薬またはスキップした薬を記録できます。薬を記録すると、どれくらいの頻度で薬を服用したか、または服用しなかったかを確認できるので、健康状態を追跡するのに役立ちます。この記事では、iPhone のヘルスケア アプリで選択した薬のログ履歴を表示する方法を説明します。ヘルスケア アプリで薬の記録履歴を表示する方法に関する短いガイド: ヘルスケア アプリ > 参照 > 薬 > 薬 > 薬の選択 > オプション&a に移動します。

Java 開発プロジェクトをログに記録して監視する方法 Java 開発プロジェクトをログに記録して監視する方法 Nov 03, 2023 am 10:09 AM

Java 開発プロジェクトを記録および監視する方法 1. 背景の紹介 インターネットの急速な発展に伴い、ますます多くの企業が Java を開発し、さまざまな種類のアプリケーションを構築し始めています。開発プロセスでは、ロギングとモニタリングは無視できない重要なリンクです。開発者は、ロギングと監視を通じて問題を発見して時間内に解決し、アプリケーションの安定性とセキュリティを確保できます。 2. ログの重要性 1. 問題の追跡: アプリケーション エラーが発生した場合、ログは問題を迅速に特定するのに役立ちます。

C# 開発のアドバイス: システムのログ記録と監視 C# 開発のアドバイス: システムのログ記録と監視 Nov 22, 2023 pm 08:30 PM

C# 開発に関する提案: ログおよび監視システムの概要: ソフトウェア開発プロセスでは、ログおよび監視システムは重要なツールです。この記事では、C# 開発におけるログ記録および監視システムの役割と実装に関する提案を紹介します。はじめに: ロギングとモニタリングは、大規模なソフトウェア開発プロジェクトにおいて不可欠なツールです。これらは、プログラムの実行状況をリアルタイムで把握し、問題を迅速に発見して解決するのに役立ちます。この記事では、C# 開発でログおよび監視システムを使用してソフトウェアの品質と開発効率を向上させる方法について説明します。ロギングシステムの役割

MySQL のデータテーブル圧縮テクノロジー MySQL のデータテーブル圧縮テクノロジー Jun 16, 2023 am 08:16 AM

MySQL は、多くの Web サイトやアプリケーションの中核コンポーネントである一般的なリレーショナル データベースです。データの量がますます大きくなるにつれて、MySQL のパフォーマンスを最適化する方法が特に重要になります。重要な領域の 1 つはデータ テーブルの圧縮です。この記事では、MySQL のデータ テーブル圧縮テクノロジを紹介します。圧縮テーブルと非圧縮テーブル MySQL には、圧縮テーブルと非圧縮テーブルの 2 種類のデータ テーブルがあります。非圧縮テーブルは MySQL のデフォルトのテーブル タイプで、固定長の行形式を使用してデータを格納します。これはデータを意味します

リレーショナル データベースの正規化理論によって解決される主な問題は何ですか? リレーショナル データベースの正規化理論によって解決される主な問題は何ですか? Jan 22, 2021 pm 02:39 PM

リレーショナル データベースの標準化理論によって解決される主な問題は、適切な論理データベース構造をどのように構築するか、つまり、概念構造設計段階で設計された基本的なエンティティ関係図を、データ モデルと一貫性のあるデータ モデルに変換する方法です。選択したデータベース管理システム製品によってサポートされる論理構造。

See all articles