当前位置:首页|资讯

单元3 数据定义 3-2 数据表创建

作者:老徐的CS自留地发布时间:2024-10-04

1 创建表

先选择数据库,在上机1的基础上完成

因为换机房了,所以上午创建的数据库bookstore没有了。那咋办?重新建呗!

一句话就够啦!(这时候就不用考虑字符集的问题啦,直接采用默认的就行!)

当然先看看数据库有哪些?别建冲突了!

show databases;

若没有bookstore数据库,那就创建吧!

create database bookstore;use bookstore;

然后,开始创建表啦!

CREATE TABLE  book (       图书编号  char(10)   NOT NULL,       类别  varchar(8)  NOT NULL  DEFAULT  '计算机',       书名       varchar(40)  NOT  NULL ,       出版时间   date        NOT  NULL ,       单价      float(5,2)    NULL ,       数量      int   );

然后查看表

show tables;

看一下表的描述

desc book;

也可以这样用:

desc bookstore.book;

2 修改表|删除表|显示表

上面已经创建了book表,相比于教材中的book表的字段也多,类型呢,有的还不一样,咋办呢?

用alter table来修改呀!

ALTER TABLE  book  CHANGE COLUMN 类别  图书类别  varchar(20)   NOT NULL  DEFAULT  '计算机', ADD COLUMN 作者 char(10)     NOT  NULL , ADD COLUMN  出版社     varchar(20)   NOT  NULL , MODIFY COLUMN 数量      int(5), ADD COLUMN 折扣      float(3,2) , ADD COLUMN  封面图片  blob;

观察上述两个图片,一样吗?一样,但是呢?发现有的字段顺序不一样,那咋办呢?

即将“作者”和”出版社”放到“书名”列的后面;

使用了以下代码,测试一下吧

ALTER TABLE  book    MODIFY  作者 char(10) NOT  NULL AFTER 书名;


实际上,大家发现,想通过命令调整表结构,确实相当麻烦,有没有更好的方法呢?

其实有呀,啥?思考一下!

对,删除原有的表,重新创建,当然这样的前提是表中没有数据的前提下,若有数据,就十分麻烦啦!

use bookstore; show tables; drop table book; show tables;

再执行一遍重新创建表的sql

USE Bookstore; CREATE TABLE  book (    图书编号  char(10)   NOT NULL  PRIMARY KEY,    图书类别  varchar(20)   NOT NULL  DEFAULT  '计算机',    书名       varchar(40)   NOT  NULL ,    作者       char(10)     NOT  NULL ,    出版社     varchar(20)   NOT  NULL ,    出版时间   date           NOT  NULL ,    单价      float(5,2)       NOT  NULL ,    数量      int(5),      折扣      float(3,2) ,      封面图片  blob ) ENGINE=InnoDB;

然后,再观察即可

use bookstore; show tables; desc books;

3 复制表

3.1 复制表结构,但不复制数据

使用LIKE关键字创建一个与参照表相同结构的新表,但内容不会复制,因此创建的新表是一个空表。

那以book表为例,复制一个book表的副本,不用复制数据,如何做呢?

CREATE TABLE book_copy1 LIKE book;

然后,show tables;看一下,是不是有一个book_copy1表呢?

3.2 复制表结构的同时,也复制数据

使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。

CREATE TABLE  book_copy2  AS (SELECT  *  FROM  Book);

当然,你想看看copy2的这个表里是否有数据,用以下命令可以搞定,但是,因为原来的book中就没有数据,所以这里也没有数据喔!

select * from book_copy2;

4  尝试完成教材-实训题目libraryDB

不要急,慢慢来!一定可以的!

先完成题目的前半部分,涉及到完整性约束的地方先不完成



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1