一、学习目标
- 掌握如何向表中插入数据
- 掌握更新数据的方法
- 熟悉如何删除数据
- 掌握对数据表基本操作的方法和技巧
- 了解什么是索引
- 掌握创建索引的方法和技巧
- 熟悉如何删除索引
- 熟悉掌握索引的常见问题
二、实验内容
- 创建表books,对数据表进行插入、更新和删除操作,掌握表数据基本操作。books表结构以及表中的记录如下所示
books表结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
id | 书编号 | INT(11) | 是 | 否 | 是 | 是 | 否 |
name | 书名 | VARCHAR(50) | 否 | 否 | 是 | 否 | 否 |
authors | 作者 | VARCHAR(100) | 否 | 否 | 是 | 否 | 否 |
price | 价格 | INT(11) | 否 | 否 | 是 | 否 | 否 |
pubdate | 出版日期 | YEAR | 否 | 否 | 是 | 否 | 否 |
note | 说明 | VARCHAR(255) | 否 | 否 | 否 | 否 | 否 |
num | 库存 | INT | 否 | 否 | 是 | 否 | 否 |
books表中的记录
id | name | authors | price | pubdate | note | num |
1 | Tale of AAA | Dickes | 23 | 1995 | novel | 11 |
2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 |
3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 |
4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 |
5 | Old Land | Honore Blade | 30 | 2010 | law | 0 |
6 | The Battle | Upton Sara | 33 | 1999 | medicine | 40 |
7 | Rose Hood | Richard Haggard | 28 | 2008 | cartoon | 28 |
步骤如下:
①创建数据表books,并按books表结构定义各个字段
create table books
(id int(11) not null unique primary key,
name varchar(50) not null,
authors varchar(100) not null,
price int(11) not null,
pubdate year not null,
note varchar(255),
num int(11) not null );
②将books表中的记录插入books表中
insert into books values
(1,'Tale of AAA','Dickes',23,'1995','novel',11),
(2,'EmmaT','Jane lura',35,'1993','joke',22),
(3,'Story of Jane','Jane Tim',40,'2001','novel',0),
(4,'Lovey Day','George Byron',20,'2005','novel',30),
(5,'Old Land','Honore Blade',30,'2010','law',0),
(6,'The Battle','Upton Sara',33,'1999','medicine',40),
(7,'Rose Hood','Richard Kale',28,'2008','cartoon',28);
③将小说类型(novel)的书价格都增加5
update books
set price = price +5
where note = 'novel';
④将名称为EmmaT的书价格改为40,并将说明改为drama
update books
set price=40,note='drama'
where name = 'EmmaT';
⑤删除库存为0的记录
delete from books
where num = 0;
- 创建数据库index_test,按照下面表结构在index_test数据库中创建两个数据表test_table1和test_table2,如下表所示,并按照操作过程完成对数据表的基本操作
test_table1表结构
字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
id | INT(11) | 否 | 否 | 是 | 是 | 是 |
name | CHAR(100) | 否 | 否 | 是 | 否 | 否 |
address | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
description | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
test_table2表结构
字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
id | INT(11) | 是 | 否 | 是 | 是 | 否 |
firstname | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
middlename | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
lastname | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
birth | DATE | 否 | 否 | 是 | 否 | 否 |
title | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
步骤如下:
①登录MySQL数据库
mysql -u root -p;
②创建数据库index_test
create database index_test;
use index_test;
③创建表test_table1
create table test_table1
(id INT(11) not null unique auto_increment,
name CHAR(100) not null,
address CHAR(100) ,
description CHAR(100),
UNIQUE INDEX UniqIdx(id));
④创建表test_table2,存储引擎为MyISAM
create table test_table2
(id int(11) not null unique primary key,
firstname char(50) not null,
middlename char(50) not null,
lastname char(50) not null,
birth date not null,
title char(100))
engine=myisam;
⑤使用ALTER TABLE语句在表test_table2的birth字段上建立名称为ComDateIdx的普通索引
alter table test_table2 add index comdateidx(birth);
⑥使用CREATE INDEX在title字段上建立名称为FTIdx的全文索引
create fulltext index ftidx on test_table2(title);
⑦使用ALTER TABLE语句删除表test_table1中名称为UniqIdx的唯一索引
alter table test_table1 drop index uniqidx;
⑧使用DROP INDEX语句删除表test_table2中名称为ComDateIdx的唯一索引
drop index comdateidx on test_table2;
三、思考题(02)
- 插入记录时可以不指定字段名称吗?
- 更新或者删除表时必须指定WHERE子句吗?
- 索引对数据库性能如此重要,应该如何使用它?