MySQL数据库练习题

例题1

创建一个名为school的数据库,并在其中创建一个名为students的数据表。students表应包含以下字段:
student_id:整型,作为主键,自动递增。
first_name:字符串类型,最大长度为30,不允许为空。
last_name:字符串类型,最大长度为50,不允许为空。
birthdate:日期类型,用于存储学生的出生日期。
gender:字符类型,长度为1,只允许存储'M'(男性)或'F'(女性)。
enrollment_date:日期时间类型,用于存储学生的入学日期和时间。
同时,为students表的gender字段添加检查约束,确保只能存储'M'或'F'的值。请写出创建数据库和数据表的SQL语句。

ALTER TABLE 表名 ADD CONSTRAINT [约束名] CHECK(约束条件) [[NOT] ENFORCED];

mysql> DROP DATABASE school;
mysql> create database school;
mysql> use school;
mysql> create table students
    -> (
    -> students_id int(10) PRIMARY KEY AUTO_INCREMENT,
    -> first_name varchar(30) not null,
    -> last_name varchar(50) not null,
    -> birthdate date,
    -> gender CHAR(1) CHECK (gender IN ('M','F')),
    -> enrollment_date datetime
    -> );
mysql> alter table students add constraint gender check(gender IN ('M','F'));
mysql> describe students;

例题2

在school数据库中,创建一个名为courses的数据表。courses表应包含以下字段:
course_id:整型,作为主键,自动递增。
course_name:字符串类型,最大长度为100,不允许为空且唯一。
credits:浮点型,用于储存课程的学分,精度为3,标度为1.
instructor_id:整型,作为外键,引用teachers表的teacher_id字段(假设teachers表以及存在,且包含teacher_id作为主键)。同时,为courses表的course_name字段添加唯一约束,并确保credits字段的值在0-5之间。请写出创建数据表的SQL语句。

mysql> create database school;
mysql> use school;
mysql> create table teachers
    -> (
    -> teacher_id int primary key
    -> );
mysql> create table courses
    -> (
    -> course_id int primary key auto_increment,
    -> course_name varchar(100) not null,
    -> credits decimal(3,1) not null,
    -> instructor_id int,
    -> constraint fk_courses_teachers foreign key (instructor_id) references teachers(teacher_id)
    -> );
mysql> alter table courses add unique(course_name);
mysql> alter table courses add check (credits >=0 && credits <=5);
mysql> describe courses;
mysql> describe teachers;

你可能感兴趣的:(MySQL,数据库)