《MySQL 5.7 从零开始学》笔记-数据表基本操作

在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。

创建数据表

所谓创建数据表,指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。

数据表属于数据库,在创建数据表之前,应该使用语句USE <数据库名>指定操作的是在哪一个数据库中进行,如果没有选择数据库,就会抛出”No database selected”的错误。

创建数据表的语句为CREATE TABLE,语法规则如下:

CREATE  TABLE <表名>
    (
    列名1,数据类型 [列级别约束条件] [默认值],
    列名2,数据类型 [列级别约束条件] [默认值],
    ……
    [表级别约束条件]
    );

使用CREATE TABLE创建表时,必须指定以下信息:

  1. 要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如 DROP、ALTER、INSERT等
  2. 数据表中的每一个列(字段)的名称和数据类型。如果创建多个列,就要用逗号隔开。

例如:

  • 1.创建数据库 - teaphy
mysql> CREATE DATABASE teaphy
    -> ;
Query OK, 1 row affected (0.18 sec)
  • 2.选择创建表的数据库 - teaphy
mysql> USE teaphy
Database changed
  • 3.创建表
mysql> CREATE TABLE teaphy_emp1
    -> (
    -> id INT(11),
    -> name VARCHAR(25),
    -> depid INT(11),
    -> salary FLOAT
    -> );
  • 4 使用HOW TABLES;命令查看数据表是否创建成功
mysql>  SHOW TABLES;
+------------------+
| Tables_in_teaphy |
+------------------+
| teaphy_emp1      |
+------------------+
1 row in set (0.02 sec)

可以看到,teaphy数据库中已经有了数据表teaphy_emp1,数据表创建成功。

使用主键约束

主键又称为主码,是表中一列或多列的组合。主键约束(Primary Key Contraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人的关系,它们之间是一一对应的。

主键分为两种类型:单字段主键和多字段联合主键。

单字段主键

主键由一个字段组成。

SQL语句格式分为两种情况:

  1. 在定义列的同时指定主键,语法规则为:字段名 数据类型 PRIMARY KEY [默认值]

    例如:

mysql> CREATE TABLE teaphy_emp2
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> depid INT(11),
    -> salary FLOAT
    -> );
Query OK, 0 rows affected (0.53 sec)

在创建的teaphy_emp2表中,其主键为 id
2. 在定义完所有列之后指定主键,语法规则为:[CONSTRAINT <约束名> PRIMARY KEY [字段名]]

例如:

mysql> CREATE TABLE teaphy_emp3
    -> (
    -> id INT(11),
    -> name VARCHAR(25),
    -> depid INT(11),
    -> salary FLOAT,
    -> CONSTRAINT teaphy_emp3_pri PRIMARY KEY(id)
    -> );
Query OK, 0 rows affected (0.43 sec)

创建了数据表teaphy_emp3,在所有列声明以后,指定id为主键,其约束名为teaphy_emp3_pri.

多字段联合主键

主键由多个字段联合组成,其语法规则为:`PRIMARY KEY [字段1, 字段2,…, 字段n]

例如:

mysql> CREATE TABLE teaphy_emp4
    -> (
    -> name VARCHAR(25),
    -> depid INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(name, depid)
    -> );
Query OK, 0 rows affected (0.76 sec)

语句执行结束以后,创建了新表teaphy_emp4,其中,name字段和depid字段组合一起成为teaphy_emp4的多字段联合主键。

使用外键约束

外键用来在两个表的数据之间建立链接,可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须为另个表中的主键的某个值。

外键首先是表中的一个字段,可以不是本表的主键,但要对应另外一个表中的主键。外键的主要作用是保证数据的完整性,定义外键后,不允许删除在另外一个表中具有关联关系的行。

  • 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表。
  • 从表(字表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表。

创建外键的语法规则:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [ ,字段名2,…]
REFERENCES <主表名> 主键列1 [ ,主键列2,…]

其中:

  • 外键名:定义外键约束的名称,一个表中不能有相同名称的外键
  • 字段名:表示子表需要添加外键约束的字段列
  • 主表名:表示被子表外键所依赖的表的名称
  • 主键列:表示主表中定义的主键列或者列组合

例如:

  • 1.创建主表 - teaphy_dept1,其主键为id
mysql> CREATE TABLE teaphy_dept1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> location VARCHAR(60)
    -> );
Query OK, 0 rows affected (0.54 sec)
  • 2.创建子表 - teaphy_dept2
mysql> CREATE TABLE teaphy_dept2
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> depId INT(11),
    -> salary FLOAT,
    -> CONSTRAINT fk_ept_dept1 FOREIGN KEY(depId) REFERENCES teaphy_dept1(id)
    -> );
Query OK, 0 rows affected (0.84 sec)

在表teaphy_dept2中,添加了名为fk_ept_dept1的外键约束,外键名称为depId,其依赖于表teaphy_dept1的主键id

使用非空约束

非空约束(Not Null constraint)指字段的值不能为空。对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。

非空约束的语法规则:字段名 数据类型 not null

例如:

mysql>  CREATE TABLE teaphy_emp5
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25) NOT NULL,
    -> age INT(3)
    -> );
Query OK, 0 rows affected (0.41 sec)

执行该SQL语句后,创建表teaphy_emp5,其中字段name的插入值不能为空(NOT NULL).

使用唯一性约束

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则如下:

  1. 在定义完列之后直接指定唯一约束,语法规则为:字段名 数据类型 UNIQUE

例如:

mysql>  CR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值