boxmoe_header_banner_img

欢迎来到我的博客

加载中

加载中动画图标 0%

加载中...

文章导读

实验6:表的创建及修改


avatar
菰 远 2025-10-05 130

老师的网站:47.107.46.163

相关软件下载地址

这个实验是使用ol83_vm15-16_GY环境下做的
下载ol83_vm15-16_GY.7z实在太慢可以找我拿U盘拷贝
下载地址:

星辰云盘:数据库相关软件包括虚拟机等
123网盘:数据库相关软件包括虚拟机等
百度网盘:数据库相关软件包括虚拟机等
huang1111:数据库相关软件包括虚拟机等
小飞机网盘:数据库相关软件包括虚拟机等
115网盘:数据库相关软件包括虚拟机等
send:数据库相关软件包括虚拟机等
VMware 17.5:VMware Workstation Pro 17.5.1 build-23298084 软件安装包
SecureCRT 8.5.1.3:SecureCRT 8.5.1.3 中文破解版

系统账号密码都是root
数据库的账号为root 密码为123456
这个虚拟机内已经有一个快照了要是配置错误可以直接恢复快照,平常也可以把整个虚拟机文件夹ol83_vm15-16_GY丢自己U盘,这样就不用每次都要下载了

实验环境准备

这个实验是使用ol83_vm15-16_GY环境下做的
下载ol83_vm15-16_GY.7z实在太慢可以找我拿U盘拷贝

#这个命令是启动mysql,虚拟机第一次启动或者重新启动都需要输入一次
cd /usr/local/mysql
bin/mysqld_safe --user=mysql &
#输入之后ctrl+c退出
mysql -u root -p
#如果输出 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 那就是没有启动mysql,相关命令在《实验环境准备》都有放着
#密码在上面已经写的清清楚楚了
USE dbXXX;
#这个命令表示连接dbxxx数据库,每次进入数据库都要连接一次,不然会提示没有数据库
#XXX为你自己名字的首字母注意!!!!!!

要是输出 ERROR 1049 (42000): Unknown database ‘dbXXX’ 那就是没有这个数据库需要创建数据库输入这个(CREATE DATABASE dbXXX;)再试试就可以了

1. 创建表test,包含三个字段:a-整数类型,b-最长10个字符的可变长度字符串,c-日期型,然后给此表添加一条记录。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

CREATE TABLE test (
    a INT,
    b VARCHAR(10),
    c DATE
);

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

#插入记录自行修改XX
INSERT INTO test VALUES (1, '测试', 'xxxx-xx-01');
#自行修改日期内的xx数据,比如2025-10-01

输出Query OK, 1 row affected (0.01 sec)是正确的
截图从– XXX到输出Query OK, 1 row affected (0.01 sec)为止的全部

2. 删除上面的test表,重新创建test,依然包含上面三个字段,并且建表时字段a附加主键约束,b附加unique约束,c附加非空约束,a列与b列的约束用表级指定名称的语法形式来实现。表建好后,验证每个约束的作用。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

DROP TABLE test;
CREATE TABLE test (
    a INT,
    b VARCHAR(10),
    c DATE NOT NULL,
    CONSTRAINT pk_test PRIMARY KEY (a),
    CONSTRAINT uk_test_b UNIQUE (b)
);

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

#验证
INSERT INTO test VALUES (1, '测试1', 'xxxx-xx-01');
INSERT INTO test VALUES (1, '测试2', 'xxxx-xx-02');
INSERT INTO test VALUES (2, '测试1', 'xxxx-xx-03');
INSERT INTO test VALUES (3, '测试3', NULL);
#这里的xx保持一样就行,
#比如你第一个是INSERT INTO test VALUES (1, '测试1', '2025-10-01');
#那么后面的(1, '测试2—)和(2, '测试1')也是2025-10-

输出ERROR 1048 (23000): Column ‘c’ cannot be null是正确的
截图从– XXX到输出ERROR 1048 (23000): Column ‘c’ cannot be null为止的全部

3. 创建两个表,名称分别为p、c,分别满足下列要求:p表中包含字段a、b,c表中包含字段x、y,都是int类型。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

CREATE TABLE p (
    a INT,
    b INT
);

CREATE TABLE c (
    x INT,
    y INT
);

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出Query OK, 0 rows affected (0.00 sec)是正确的
截图从– XXX到输出Query OK, 0 rows affected (0.00 sec)为止的全部

4. 修改以上p表和c表,对p表的a列附加主键约束,对c表的x列附加主键约束,y列附加外键约束,指向表p中的a列。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE p ADD CONSTRAINT pk_p PRIMARY KEY (a);
ALTER TABLE c ADD CONSTRAINT pk_c PRIMARY KEY (x);
ALTER TABLE c ADD CONSTRAINT fk_c_p FOREIGN KEY (y) REFERENCES p(a);

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出Records: 0 Duplicates: 0 Warnings: 0是正确的
截图从– XXX到输出Records: 0 Duplicates: 0 Warnings: 0为止的全部

5. 向以上表p、c添加记录,验证外键约束所起的作用,即验证外键对主表和子表分别如何限制。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

INSERT INTO p VALUES (1, 100);
INSERT INTO p VALUES (2, 200);
INSERT INTO c VALUES (1, 1);
INSERT INTO c VALUES (2, 2);
INSERT INTO c VALUES (3, 3);
DELETE FROM p WHERE a = 1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出ERROR 1451 (23000) ……是正确的
截图从– XXX到输出ERROR 1451 (23000) ……为止的全部

6. 删除表c的外键约束,重新对y列附加外键约束,指定on delete cascade和on update cascade,验证其作用。
-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE c DROP FOREIGN KEY fk_c_p;
ALTER TABLE c ADD CONSTRAINT fk_c_p_cascade 
    FOREIGN KEY (y) REFERENCES p(a) 
    ON DELETE CASCADE ON UPDATE CASCADE;
UPDATE p SET a = 10 WHERE a = 1;
DELETE FROM p WHERE a = 2;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出Query OK, 1 row affected (0.00 sec)是正确的
截图从– XXX到输出Query OK, 1 row affected (0.00 sec)为止的全部

7. 修改上面test表的名称为test1,然后验证结果。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE test RENAME TO test1;
SHOW TABLES;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出9 rows in set (0.01 sec)是正确的
截图从– XXX到输出9 rows in set (0.01 sec)为止的全部

8. 删除test1表中的b字段然后验证结果。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE test1 DROP b;
DESC test1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出2 rows in set (0.00 sec)是正确的
截图从– XXX到输出2 rows in set (0.00 sec)为止的全部

9. 把test1表中的c字段名称修改为d,然后验证结果。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE test1 CHANGE c d DATE;
DESC test1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出2 rows in set (0.00 sec)是正确的
截图从– XXX到输出2 rows in set (0.00 sec)为止的全部

10. 删除test1表中的主键约束,然后验证结果。

-- XXX
#XXX为你名字首字母!!! --(有空格)XXX!!!

以下的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴

ALTER TABLE test1 DROP PRIMARY KEY;
DESC test1;

以上的代码可以直接代码框的右上角点击复制代码,我是在Crt 8.5.1.3(不是课室的版本)操作的,Mobaxterm的没有测试过,不过看别人也可以正常复制粘贴
输出2 rows in set (0.00 sec)是正确的
截图从– XXX到输出2 rows in set (0.00 sec)为止的全部

感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码
GuYuan-V-个人博客
🎉 我的生日

日期:09月29日

--