读书频道 > 网站 > 网页设计 > MySQL入门很简单
7.4 本章实例
12-07-30    叶孤城
收藏    我要投稿   

本文所属图书 > MySQL入门很简单

本书从初学者的角度出发,由浅入深,循序渐进地介绍了MySQL数据库应用与开发的相关知识。书中提供了大量操作MySQL数据库的示例,还提供了大量实例和上机实践内容,供读者演练。本书共分5篇。第1篇介绍数据库的基...立即去当当网订购
在本小节将在job数据库中创建一个user表和一个information表。具体如表7.1和表7.2所示。
表7.1  user表的内容
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
userid 编号 INT(10)
username 用户名 VARCHAR(20)
passwd 密码 VARCHAR(20)
info 附加信息 TEXT
 
表7.2  information表的内容
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
id 编号 INT(10)
name 姓名 VARCHAR(20)
sex 性别 VARCHAR(4)
birthday 出生日期 DATE
address 家庭住址 VARCHAR(50)
tel 电话号码 VARCHAR(20)
pic 照片 BLOB
 
按照下列要求进行操作:
(1)登录数据库系统后创建job数据库。
(2)创建user表。存储引擎为MyISAM类型。创建表的时候同时几个索引,在userid字段上创建名为index_uid的唯一性索引,并且以降序的形式排列;在username和passwd字段上创建名为index_user的多列索引;在info字段上创建名为index_info的全文索引。
(3)创建information表。
(4)在name字段创建名为index_name的单列索引,索引长度为10。
(5)在birthday和address字段是创建名为index_bir的多列索引,然后判断索引的使用情况。
(6)用ALTER TABLE语句在id字段上创建名为index_id的唯一性索引,而且以升序排列。
(7)删除user表上的index_user索引。
(8)删除information表上的index_name索引。
本实例的执行过程如下:
1.登录数据库系统并创建job数据库
在命令行中登录MySQL数据库管理系统,输入内容如下:
 
mysql -h localhost -u root -p
提示输入密码后,按要求输入密码,显示为:
Enter password: ****
按Enter键后,检验密码正确后进入MySQL管理系统。执行SHOW语句来查看数据库系统中已经存在的数据库,代码执行如下:
mysql> SHOW DATABASES; 
+----------------------------+ 
| Database           | 
+----------------------------+ 
| information_schema | 
| example           | 
| mysql              | 
| school             | 
| test                | 
+----------------------------+ 
6 rows in set (0.08 sec)
结果显示,数据库系统中不存在名为job的数据库。执行CREATE DATABASE语句来创建数据库,代码执行如下:
mysql> CREATE DATABASE job; 
Query OK, 1 row affected (0.08 sec)
执行结果显示,数据库创建成功。再次执行SHOW语句来查看job数据库是否已经存在。代码执行如下:
 
mysql> SHOW DATABASES; 
+---------------------------+ 
| Database          | 
+---------------------------+ 
| information_schema | 
| example           | 
| job                | 
| mysql             | 
| school             | 
| test               | 
+---------------------------+ 
7 rows in set (0.00 sec)
结果显示,已经存在名为job的数据库。
 
2.创建user表
 
先使用USE语句选择job数据库。代码执行如下:
 
mysql> USE job; 
Database changed
结果显示,数据库已经选择成功。然后可以执行CREATE TABLE语句来创建user表。根据实例要求,存储引擎为MyISAM类型;在userid字段上创建名为index_uid的唯一性索引,并且以降序的形式排列;在username和passwd字段上创建名为index_user的多列索引;在info字段上创建名为index_info的全文索引。SQL代码如下:
 
CREATE  TABLE  user( userid  INT(10)  NOT NULL
UNIQUE  PRIMARY KEY  AUTO_INCREMENT , 
username  VARCHAR(20)  NOT NULL ,  
passwd  VARCHAR(20)  NOT NULL , 
info  TEXT , 
UNIQUE  INDEX  index_uid ( userid  DESC ) , 
INDEX  index_user ( username, passwd ) , 
FULLTEXT  INDEX  index_info( info ) 
) ENGINE=MyISAM ;
执行结果显示,user表创建成功。执行SHOW CREATE TABLE语句来查看use表的结构。执行结果如下:
 
mysql> SHOW CREATE TABLE user \G 
*************************** 1. row *************************** 
       Table: user 
Create Table: CREATE TABLE `user` ( 
  `userid` int(10) NOT NULL AUTO_INCREMENT, 
  `username` varchar(20) NOT NULL, 
  `passwd` varchar(20) NOT NULL, 
  `info` text, 
  PRIMARY KEY (`userid`), 
  UNIQUE KEY `userid` (`userid`), 
  UNIQUE KEY `index_uid` (`userid`), 
  KEY `index_user` (`username`,`passwd`), 
  FULLTEXT KEY `index_info` (`info`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec) 
结果显示,index_uid是userid字段上的唯一性索引;index_user是user字段和passwd字段上的索引;index_info是info字段上的全文索引;存储引擎为MyISAM。
 
3.创建information表
 
在job数据库下创建名为information的表。代码如下:
 
CREATE TABLE information ( id  INT(10) 
NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT, 
name  VARCHAR(20)  NOT NULL , 
sex  VARCHAR(4)  NOT NULL , 
birthday  DATE , 
address  VARCHAR(50) , 
tel  VARCHAR(20) , 
pic  BLOB 
); 执行结果显示,information表创建成功。执行SHOW CREATE TABLE语句来查看information表的结构。执行结果如下:
 
mysql> SHOW CREATE TABLE information \G 
*************************** 1. row ************************** 
       Table: information 
Create Table: CREATE TABLE `information` ( 
  `id` int(10) NOT NULL AUTO_INCREMENT, 
  `name` varchar(20) NOT NULL, 
  `sex` varchar(4) NOT NULL, 
  `birthday` date DEFAULT NULL, 
  `address` varchar(50) DEFAULT NULL, 
  `tel` varchar(20) DEFAULT NULL, 
  `pic` blob, 
  PRIMARY KEY (`id`), 
  UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
查询结果显示,id字段是主键,而且有唯一性约束。
 
4.在name字段创建名为index_name的索引
 
使用CREATE INDEX语句创建index_name索引。代码执行如下:
 
mysql> CREATE  INDEX  index_name  ON  information( name(10) ) ; 
Query OK, 0 rows affected (0.02 sec) 
Records: 0  Duplicates: 0  Warnings: 0 
结果显示index_name索引创建成功。
 
5.创建名为index_bir的多列索引
 
使用CREATE INDEX语句创建index_bir索引。代码执行如下:
 
mysql> CREATE  INDEX  index_bir  ON  information(birthday, address ) ; 
Query OK, 0 rows affected (0.02 sec) 
Records: 0  Duplicates: 0  Warnings: 0
结果显示,index_bir索引创建成功。
 
6.用ALTER TABLE语句创建名为index_id的唯一性索引
 
使用ALTER TABLE语句创建index_id索引。代码执行如下:
 
mysql> ALTER  TABLE  information  ADD  INDEX  index_id( id  ASC ) ; 
Query OK, 0 rows affected (0.02 sec) 
Records: 0  Duplicates: 0  Warnings: 0
结果显示index_id索引创建成功。执行SHOW CREATE TABLE语句来查看information表的结构。执行结果如下:
 
mysql> SHOW CREATE TABLE information \G 
*************************** 1. row *************************** 
       Table: information 
Create Table: CREATE TABLE `information` ( 
  `id` int(10) NOT NULL AUTO_INCREMENT, 
  `name` varchar(20) NOT NULL, 
  `sex` varchar(4) NOT NULL, 
  `birthday` datetime DEFAULT NULL, 
  `address` varchar(50) DEFAULT NULL, 
  `tel` varchar(20) DEFAULT NULL, 
  `pic` blob, 
  PRIMARY KEY (`id`), 
  UNIQUE KEY `id` (`id`), 
  KEY `index_name` (`name`(10)), 
  KEY `index_bir` (`birthday`,`address`), 
  KEY `index_id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
执行结果显示,information表中已经存在index_name、index_bir和index_id等3个索引。
 
7.删除user表上的index_user索引
 
执行DROP语句可以删除user表上的索引。代码执行结果如下:
 
mysql> DROP INDEX index_user ON user; 
Query OK, 0 rows affected (0.14 sec) 
Records: 0  Duplicates: 0  Warnings: 0
结果显示删除成功。执行SHOW CREATE TABLE语句来查看user表的结构。执行结果如下:
 
mysql> SHOW CREATE TABLE user \G 
*************************** 1. row *************************** 
       Table: user 
Create Table: CREATE TABLE `user` ( 
  `userid` int(10) NOT NULL AUTO_INCREMENT, 
  `username` varchar(20) NOT NULL, 
  `passwd` varchar(20) NOT NULL, 
  `info` text, 
  PRIMARY KEY (`userid`), 
  UNIQUE KEY `userid` (`userid`), 
  UNIQUE KEY `index_uid` (`userid`), 
  FULLTEXT KEY `index_info` (`info`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
结果显示,index_user索引已经不存在了。8.删除information表上的index_name索引
 
执行DROP语句可以删除information表上的index_name索引。代码执行结果如下:
 
mysql> DROP INDEX index_name ON information ; 
Query OK, 0 rows affected (0.03 sec) 
Records: 0  Duplicates: 0  Warnings: 0
结果显示删除成功。执行SHOW CREATE TABLE语句来查看information表的结构。执行结果如下:
 
mysql> SHOW CREATE TABLE information \G 
*************************** 1. row *************************** 
       Table: information 
Create Table: CREATE TABLE `information` ( 
  `id` int(10) NOT NULL AUTO_INCREMENT, 
  `name` varchar(20) NOT NULL, 
  `sex` varchar(4) NOT NULL, 
  `birthday` datetime DEFAULT NULL, 
  `address` varchar(50) DEFAULT NULL, 
  `tel` varchar(20) DEFAULT NULL, 
  `pic` blob,  
  PRIMARY KEY (`id`), 
  UNIQUE KEY `id` (`id`), 
  KEY `index_bir` (`birthday`,`address`), 
  KEY `index_id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
结果显示,index_name索引已经不存在了。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站