详解MySQL数据库、表与完整性约束的定义(Create)

 更新时间:2025年04月18日 11:22:03   作者:超大鸡蛋灌饼  
这篇文章主要介绍了MySQL数据库、表与完整性约束的定义(Create),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

第1关:创建数据库

编程要求
创建用于2022年北京冬奥会信息系统的数据库:beijing2022。

create database beijing2022;

第2关:创建表及表的主码约束

编程要求
在右侧“命令行”窗口中操作,或在“代码文件”窗口中填写语句,创建数据库TestDb,在TestDb下创建表t_emp,表结构如下:

注意:

必须为表建主码,但不用考虑主码约束的命名;
备注栏仅用于说明列的含义及具体要求,并不要求用COMMENT短语给列作备注。

# 请在以下适当的空白处填写SQL语句,完成任务书的要求。空白行可通过回车换行添加。 
CREATE DATABASE TestDb;
USE TestDb;
CREATE TABLE t_emp (
    id INT PRIMARY KEY,
    name VARCHAR(32),
    deptId INT,
    salary FLOAT
);
/* *********** 结束 ************* */

第3关:创建外码约束(foreign key)

编程要求
设有以下两张表:

请创建上述两个表,为表定义主键,并给表staff创建外键,这个外键约束的名称为FK_staff_deptNo。在创建表之前你可能需要先创建数据库:MyDb,并且将两张表创建在MyDb数据库中。不需考虑关于性别的约束。(注意:如果你在实验1之后接着作本实验,数据库MyDb可能已经存在)

# 请在以下空白处填写完成任务的语句,空白行可通过回车换行添加。
# 你也可以在命令行窗口完成任务,不过,在命令行键入的语句不会被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
DROP TABLE IF EXISTS staff;
DROP TABLE IF EXISTS dept;
CREATE TABLE dept (
    deptNo INT PRIMARY KEY,
    deptName VARCHAR(32)
);
CREATE TABLE staff (
    staffNo INT PRIMARY KEY,
    staffName VARCHAR(32),
    gender CHAR(1),
    dob DATE,
    salary NUMERIC(8,2),
    deptNo INT,
    CONSTRAINT FK_staff_deptNo FOREIGN KEY (deptNo) REFERENCES dept(deptNo)
);
#结束

第4关:CHECK约束

编程要求
表products的结构如下:

字段名称    数据类型    备注
pid    char(10)    产品户ID,主码
name    varchar(32)    产品名称
brand    char(10)    品牌,只能是('A','B')中的某一个
price    int    价格,必须>0

请在数据库MyDb中创建表products,并分别实现对品牌和价格的约束,两个CHECK约束的名称分别为CK_products_brand和CK_products_price,主码约束不要显示命名。(提示:如果数据库MyDb不存在,请首先创建它,并将它作为工作数据库。)

# 请在以下空白处填写完成任务的语句,空白行可通过回车换行添加。
# 你也可以在命令行窗口完成任务,不过,在命令行键入的语句不会被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
DROP TABLE IF EXISTS products;
CREATE TABLE products (
    pid CHAR(10) PRIMARY KEY,          
    name VARCHAR(32),
    brand CHAR(10),
    price INT,
    CONSTRAINT CK_products_brand CHECK (brand IN ('A', 'B')),
    CONSTRAINT CK_products_price CHECK (price > 0)
);
# 结束 

第5关:DEFAULT约束

编程要求
表hr的结构如下:

字段名称    数据类型    备注
id    char(10)    工号,主码
name    varchar(32)    姓名,不允许为空值
mz    char(16)    民族, 缺省值为“汉族”
请在数据库MyDb中创建表hr,并实现name列的NOT NULL约束和mz列的Default约束(别忘了主码约束)。

# 请在以下空白处填写完成任务的语句,空白行可通过回车换行添加。
# 你也可以在命令行窗口完成任务,不过,在命令行键入的语句不会被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
CREATE TABLE hr (
    id CHAR(10) PRIMARY KEY,
    name VARCHAR(32) NOT NULL,
    mz CHAR(16) DEFAULT '汉族'
);
# 结束 

第6关:UNIQUE约束

编程要求
表s的结构如下:

字段名称    数据类型    备注
sno    char(10)    学号,主码
name    varchar(32)    姓名,不允许为空值
ID    char(18)    身份证号, 不允许有两个相同的身份证号
请在数据库MyDb中创建表s,并实现相关约束(主码,NOT NULL和Unique约束)。
注意表名s是小写的,列名ID是全大写的。如果没有数据库MyDb,你需要创建它,并使其成为当前工作数据库。

# 请在以下空白处填写完成任务的语句,空白行可通过回车换行添加。
# 你也可以在命令行窗口完成任务,不过,在命令行键入的语句不会被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
CREATE TABLE s (
    sno CHAR(10) PRIMARY KEY,
    name VARCHAR(32) NOT NULL,
    ID CHAR(18) UNIQUE
);
# 结束 

到此这篇关于MySQL数据库、表与完整性约束的定义(Create)的文章就介绍到这了,更多相关mysql表与完整性约束的定义内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySql command line client命令操作大全

    MySql command line client命令操作大全

    这篇文章主要介绍了MySql command line client命令操作大全,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 关于MySql数据库Update批量更新不同值的实现方法

    关于MySql数据库Update批量更新不同值的实现方法

    这篇文章主要介绍了关于MySql数据库Update批量更新不同值的实现方法,数据库管理系统可以通过SQL管理数据库,定义和操作数据,维护数据的完整性和安全性,需要的朋友可以参考下
    2023-05-05
  • MySQL表添加某一列和删除某一列的方法

    MySQL表添加某一列和删除某一列的方法

    MySQL是一种广泛使用的关系型数据库管理系统,它是一种开源的软件,由瑞典的MySQL AB公司开发的,这篇文章主要介绍了关于MySQL表添加某一列和删除某一列的sql语句,需要的朋友可以参考下
    2023-06-06
  • MySQL之InnoDB中的锁用法

    MySQL之InnoDB中的锁用法

    这篇文章主要介绍了MySQL之InnoDB中的锁用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • Mysql的DQL查询操作全面分析讲解

    Mysql的DQL查询操作全面分析讲解

    DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据。DQL语言主要的语句:SELECT语句。DQL语言是数据库语言中最核心、最重要的语句,也是使用频率最高的语句
    2022-12-12
  • MySQL存储引擎中的MyISAM和InnoDB区别详解

    MySQL存储引擎中的MyISAM和InnoDB区别详解

    这篇文章主要介绍了MySQL存储引擎中的MyISAM和InnoDB区别详解,本文总结了MyISAM与InnoDB的11点区别,需要的朋友可以参考下
    2015-03-03
  • 当Mysql行锁遇到复合主键与多列索引详解

    当Mysql行锁遇到复合主键与多列索引详解

    这篇文章主要给大家介绍了关于当Mysql行锁遇到复合主键与多列索引的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 如何给MySQL添加自定义语法的方法示例

    如何给MySQL添加自定义语法的方法示例

    本文主要介绍了如何给MySQL添加自定义语法的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • mysql实现随机查询经验谈

    mysql实现随机查询经验谈

    官方文档中进行说明:Order By和RAND()连用,会多次扫描表,导致速度变慢,下面看下一些测试详解
    2013-10-10
  • mysql多表连接查询实例讲解

    mysql多表连接查询实例讲解

    本篇文章中给大家通过实例代码讲述了mysql多表连接查询的方法,有需要的朋友们可以参考学习下。
    2018-10-10

最新评论