sql怎么创建表

sql怎么创建表,第1张

1.1 创建表方法

创建表是指在已存在的数据库中建立新表。这是建立数据库最重要的一步,是进行其他 *** 作的基础。

1.1.1 创建表的语法形式

CREATE TABLE 表名 (

属性名 数据类型 [ 完整性约束条件 ],

属性名 数据类型 [ 完整性约束条件 ],

......

属性名 数据类型 [ 完整性约束条件 ],

)[ 表类型 ] [ 表字符集 ]

SQL 是不区分大小写。下面将会具体介绍SQL,这种创建表是通过什么方式起来的效果怎么样?

命名规范:

1. 命名富有意义 ( 英文或英文组合 )

2. 自定义名称使用小写

3. MySQL 语句使用大写

CREATE TABLE IF NOT EXISTS data_house(

id INT,

name VARCHAR(20)

gender BOOLEAN,

) Engine = MyISAM

上面 SQL 语句的含义是:如果不存在 text1 表,就创建它,包含 3 个字段 id 、 name 和 gender ,它们的类型分别是整形、字符型和布尔型,创建的表的类型是 MyISAM 。

完整性约束条件表

PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY 标识该属性为该表的外键,是与之联系的某表的主键

NOT NULL 标识该属性不能为空

UNIQUE 标识该属性的值是唯一的

AUTO_INCREMENT 标识该属性的值自动增加,这是 MySQL 的 SQL 语句的特色 (null,0)

DEFAULT 标识该属性设置默认值 (not null defualt 0,not null default 0.0,not null default '')

1.1.2 设置表的主键

主键是表的一个特殊字段。该字段能惟一地标识该表中的每条信息。主键和记录的关系,如同身份z和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份z是用来标明人的身份,每个人都具有惟一的身份z号。设置表的主键指在创建表时设置表的某个字段为该表的主键。

主键的主要目的是帮组 MySQL 以最快的速度查找到表中的某一条信息。

主键必须满足的条件:

1. 主键必须是唯一的,表中任意两条记录的主键字段的值不能相同;

2. 主键的值是非空值;

3. 主键可以是单一的字段,也可以是多个字段组合。

1. 单字段的主键:

CREATE TABLE student1 (

stu_id INT PRIMARY KEY ,

stu_name VARCHAR(20) NOT NULL,

stu_gender BOOLEAN

) Engine = InnoDB

2. 多字段主键 :

CREATE TABLE student2 (

stu_id INT,

course_id INT,

grade FLOAT,

PRIMARY KEY( stu_id, course_id )

)Engine = InnoDB

1.1.3 设置表的外键

外键是表的一个特殊字段。如果字段 sno 是一个表 A 的属性,且依赖于表 B 的主键。那么,称表 B 为父表,表 A 为子表, sno 为表 A 的外键。通过 sno 字段将父表 B 和子表 A 建立关联关系。设置表的外键指在创建表设置某个字段为外键。

设置外键的原则:必须依赖于数据库中已存在的父表的主键;外键可以为空值。

外键的作用 : 是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。例如, stu_id 就 student 表的主键, stu_id 是 grade 表的外键。当 stu_id 为 '123' 同学退学了,需要从 student 表中删除该学生的信息。那么, grade 表中 stu_id 为 '123' 的所有信息也应该同时删除。

CONSTRAINT 外键别名 FOREIGN KEY ( 属性 1.1, 属性 1.2... 属性 1.n)

REFERENCES 表名 ( 属性 2.1, 属性 2.2,..., 属性 2.n)

CREATE TABLE student3 (

id INT PRIMARY KEY,

stu_id INT,

course_id INT,

# 设置外键

CONSTRAINT C_fk FOREIGN KEY (stu_id, course_id) REFERENCES student2(stu_id, course_id)

) Engine = InnoDB

1.1.4 设置表的非空约束

非空性是指字段的值不能为空值 (NULL) 。非空约束将保证所有记录中该字段都有值。如果用户新插入的记录中,该字段为空值,则数据库系统会报错。例如,在 id 字段加上非空约束, id 字段的值就不能为空。如果插入记录的 id 字段的值为空,该记录将不能插入。设置表的非空约束是指在创建表时为表的某些特殊字段加上 NOT NULL 约束条件。设置非空约束的基本语法规则如下:

属性名 数据类型 NOT NULL

1.定义基本表语句

语法:

USE 数据库名 CREATE TABLE 表名 (列名 类型(大小) DEFAULT'默认值',

列名 类型(大小) DEFAULT'默认值',

2.定义完整性约束

语法:

USE 数据库名 CREATE TABLE 表名 (列名 类型(大小) DEFAULT'默认值' CONSTRAINT 约束名 约束定义,

列名 类型(大小) DEFAULT'默认值' CONSTRAINT 约束名 约束定义,

列名 类型(大小) DEFAULT'默认值' CONSTRAINT 约束名 约束定义,

约束定义

(1)NULL | NOT NULL  用于定义列的空值约束。(定义列)  (下面的蓝色部份是单选其中之一)

语法:CONSTRAINT 约束名 NULL | NOT NULL

例:下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

(3)PRIMARY KEY 约束唯一标识数据库表中的每条记录。(即可以定义列也可能定义表)

语法:CONSTRAINT 约束名 PRIMARY KEY (列名, 列名, ... ...)

说明:用于定义基本表的主键。与UNIQUE约束类似,PRIMARY KEY 约束也是通过建立唯一索引来保证基本表在主键列(某一个列或多个列的组合)上取值的唯一性。然而它们之间也存在着很大差别:在一个基本表中只能定义一个 PRIMARY KEY 约束,却能定义多个UNIQUE约束。如果为基本表的某一个列或多个列的组合指定了 PRIMARY KEY 约束,那么其中在任何一个列都不能出现空值;而 UNIQUE 约束允许出现空值。

下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束:

(2)UNIQUE  约束唯一标识数据库表中的每条记录。(即可以定义列也可能定义表)

语法:CONSTRAINT 约束名 UNIQUE (列名, 列名, ... ...)

说明:用于指定基本表在某一个列或多个列的组合上取值必须唯一。定义了UNIQUE约束的那些列称为唯一键。如果为基本表的革一列或多个列的组合指定了UNIQUE约束,则系统将为这些列建立唯一索引,从而保证在表中的任意两行记录在指定的列或列组合上不能取同样的值。

注意:

a. UNIQUE 约束唯一标识数据库表中的每条记录。

b. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

c. PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

d.请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

(4)FOREIGN KEY 外键 (即可以定义列也可能定义表)

语法:CONSTRAINT 约束名 FOREIGN KEY (列名, 列名, ... ...) REFERENCES (列名, 列名, ... ...)

说明:指定某一个列或多个列的组合作为外部键,并在外部键和它所引用的主键或唯一键之间建立联系。在这种联系中,包含外部键的基本表称为从表,包含外部键引用的主键或唯一键的表称为主表。一旦为一列或列的组合定义了 FOREIGN KEY 约束,系统将保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。

下面的 SQL 在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY:

1、运行Navicat数据库管理工具,连接本地数据库。点击左上角“文件”或者工具栏“连接”图标,创建自己的数据库连接。Navicat

for

MySQL可以连接本地Mysql数据库,还可以连接远程Mysql数据库。两者连接方式基本相同。

2、连接好数据库之后,点击新建数据库,打开“新建数据库”对话框,输入数据库名之后,点击“确定”按钮。

3、为数据库添加数据表,这里是通过数据表的创建语句自动创建数据表。先到工程目录下找到创建数据表的SQL语句。

4、在Navicat

for

MySQL选中刚才创建的数据库,选择“查询”->“新建查询”,把步骤三中的SQL语句复制到“查询编辑器”中,点击运行。

5、在d出的数据库名对话框中输入数据库名,并且点击“保存”按钮。只有经过保存的数据库名才可以在数据库查询中知道刚建好的数据表。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7427928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存