English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستتعلم كيفية إنشاء جداول داخل قاعدة البيانات باستخدام SQL.
في الفصل السابق تعلمنا كيفية إنشاء قاعدة بيانات على خادم قاعدة البيانات. الآن حان وقت إنشاء بعض الجداول في قاعدة البيانات، حيث سيتم في الواقع حفظ البيانات. الجداول في قاعدة البيانات هي مجرد تنظيم المعلومات إلى صفوف وأعمدة.
استخدام جملة SQL CREATE TABLE لإنشاء الجداول.
اللغة الأساسية لإنشاء الجداول
CREATE TABLE table_name (column1_name data_type constraints,column2_name data_type constraints,... );
للتفهم بسهولة هذه اللغة، دعنا نستخدممثاللإنشاء جدول في قاعدة البيانات، في أداة سطر الأوامر لMySQL أدخل الجملة التالية وأضغط Enter:
-- لغة قاعدة بيانات MySQL CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE ); -- لغة قاعدة بيانات SQL Server CREATE TABLE persons ( الرقم التسلسلي INT NOT NULL PRIMARY KEY IDENTITY(1,1), name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
الجملة السابقة تنشئ جدولاً يُدعىشخصجداول، التي تحتوي علىالرقم التسلسلي،الاسم،تاريخ الميلادوهاتفأربعة أعمدة. لاحظ، بعد كل اسم عمود هناك إعلان عن نوع البيانات؛ هذا الإعلان يحدد ماذا سيتم تخزينه في العمود، مثل الأعداد الصحيحة، النصوص، التواريخ وما إلى ذلك.
某些数据类型可以使用length参数声明,该参数指示可以在列中存储多少个字符。例如,VARCHAR(50)最多可容纳50个字符。
注意:列的数据类型可能会因数据库系统而异。例如,MySQL和SQL Server支持INT整数值的数据类型,而Oracle数据库支持NUMBER数据类型。
下表总结了MySQL支持的最常用的数据类型。
数据类型 | 描述 |
---|---|
INT | 存储介于-2147483648至2147483647之间的数值 |
DECIMAL | 以精确的精度存储十进制值。 |
CHAR | 存储最大长度为255个字符的定长字符串。 |
VARCHAR | 存储可变长度的字符串,最大长度为65,535个字符。 |
TEXT | 存储最大大小为65,535个字符的字符串。 |
DATE | 以YYYY-MM-DD格式存储日期值。 |
DATETIME | 以YYYY-MM-DD HH:MM:SS格式存储组合的日期/时间值。 |
TIMESTAMP | 存储时间戳值。TIMESTAMP值存储为自Unix纪元('1970-01-01 00:00:01'UTC)以来的秒数。 |
请查看参考部分SQL DB数据类型,以获取有关流行的RDBMS(如MySQL,SQL Server等)中可用的所有数据类型的详细信息。
在前面的语句中为表列设置了一些其他约束(也称为修饰符)。约束定义关于列中允许的值的规则。
NOT NULL约束确保该字段不能接受一个NULL值。
PRIMARY KEY约束标记对应的字段作为表的主键。
AUTO_INCREMENT属性是标准SQL的MySQL扩展,它告诉MySQL如果未指定该值,则通过将前一个值增加1来自动为该字段分配一个值。仅适用于数字字段。
UNIQUE约束确保一列的每一行必须具有唯一值。
在下一章中,我们将学习有关SQL约束的更多信息。
注意: Microsoft SQL Server使用该IDENTITY属性来执行自动增量功能。默认值为IDENTITY(1,1),即种子或起始值为1,增量值为1。
إشارة:您可以执行命令以查看MySQL和Oracle数据库中任何表的列信息或任何表的结构,而在SQL Server中(将table_name替换为实际的表名)。DESC table_name;EXEC sp_columns table_name;
إذا حاولت إنشاء جدول موجود مسبقًا في قاعدة البيانات، ستحصل على رسالة خطأ. لتجنب هذا، يمكنك استخدام جملة الخيارية IF NOT EXISTS في MySQL، مثلما هو موضح أدناه:
CREATE TABLE IF NOT EXISTS persons ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );
إشارة:إذا كنت ترغب في عرض قائمة الجداول الموجودة في قاعدة البيانات المحددة حاليًا، يمكنك تنفيذ الجملة SHOW TABLES; في سطر أوامر MySQL.