Mysql教程

7.4本章实例

在本小节将在jop数据库中创建一个user表和一个information表。具体下图所示。

user表

字段名字段描述数据类型主键外键非空唯一自增
userid编号INT(10)
username用户名VARCHAR(20)
password密码VARCHAR(20)
info附加信息TEXT

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的唯一性索引,并且以降序的形式排列;在usemame和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            |
| landingbj          |
| mysql              |
+--------------------+
4 rows in set (0.14 sec)

结果显示,数据库系统中不存在名为JOB的数据库。CRCREATE DATABASE语句来创建数据库,代码执行如下:

mysql> CREATE DATABASE job;
Query OK, 1 row affected (0.08 sec)

执行结果显示,数据库创建成功。再次执行SHOW语句来查看JOB数据库是否已经存在。代码执行如下:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| example            |
| job                |
| landingbj          |
| mysql              |
+--------------------+
5 rows in set (0.03 sec)

结果显示,已经存在名为job的数据库

2.创建user表

先使用USE job语句选择job数据库。

结果显示,数据库已经选择成功。然后可以执行CREATE TABLE语句来创建user表。根据实例要求,存储引擎为MyISAM类型;在userid字段上创建名为index_uid的唯一性索引,并且以降序的形式排列;在usemame和passwd字段上创建名为index_user的多列索引;在info字段上创建名为index_info的全文索引。SQL代码如下:

mysql> CREATE TABLE  user(userid INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL,passwo
rd VARCHAR(20) NOT NULL , info TEXT,UNIQUE INDEX index_uid(userid DESC),INDEX index_user(username,password),FULLTEXT IND
EX 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,
  `password` varchar(20) NOT NULL,
  `info` text,
  PRIMARY KEY (`userid`),
  UNIQUE KEY `userid` (`userid`),
  UNIQUE KEY `index_uid` (`userid`),
  KEY `index_user` (`username`,`password`),
  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_user是user字段上的全文索引;存储引擎为MyISAM。

3.创建information表

在job数据库创建名为information的表。代码如下:

mysql> create table information(id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL,sex VAR
CHAR(4) NOT NULL,birthday DATE,address VARCHAR(20),tel VARCHAR(20),pic BLOB);
Query OK, 0 rows affected (0.23 sec)

执行结果显示,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(20) 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.在那么字段创建名为index_name的索引

使用CREATE INDEX语句创建index_name索引,代码如下

mysql> create INDEX index_name ON information(name(10));
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

5.创建名为index_bir的多列索引

使用CREATE INDEX 语句创建index_bir索引,代码如下:

mysql> create index index_bir on information(birthday ,address);
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

6.用ALTER TABLE语句创建index_id的唯一性索引

使用ALTER TABLE语句创建index_bir索引,代码如下:

mysql> alter table information add index index_id(id ASC);
Query OK, 0 rows affected (0.10 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` date DEFAULT NULL,
  `address` varchar(20) 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.05 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,
  `password` 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索引已经不存在了。

删除information表上的index_name索引

执行DROP语句可以删除information表上的index_name索引。代码执行结果如下:

mysql> drop index index_name on information;
Query OK, 0 rows affected (0.09 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` date DEFAULT NULL,
  `address` varchar(20) 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索引已经不存在了。


关注微信获取最新动态