9.3.2 MySQL的常用操作

MySQL自带了许多命令行工具,如mysql、mysqladmin、mysqldump、mysqlimport等,其中,最重要的是mysql工具,它是SQL命令解释器,通过它能够执行SQL语句。下面为读者介绍一些MySQL常用的操作命令。

9.3.2 MySQL的常用操作 - 图1

图9-7 设置默认字符集(左)

图9-8 设置root用户的密码(右)

在“开始”菜单中找到MySQL命令行工具"MySQ L5.5Command Line Client",输入root用户的密码连接到MySQL数据库服务器,也可以打开DOS窗口,输入如下命令:

  1. mysql h localhost u root -p

上述命令表示使用root用户连接到本机的MySQL数据库,连接成功后会显示mysql>提示符,如图9-9所示。

9.3.2 MySQL的常用操作 - 图2

图9-9 连接本机的MySQL数据库

连接到MySQL数据库之后,可以执行创建数据库、创建表、插入数据、添加用户等常用操作。


说明 如果读者不习惯用命令行工具操作MySQL数据库,可以考虑使用phpMyAdmin,它是一款使用PHP编写的MySQL数据库管理工具,官方主页为:http://www.phpmyadmin.net。


1.database相关操作

1)显示当前服务器的数据库列表:

  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. | test |
  9. +--------------------+

2)创建一个名为liufeng的数据库:

  1. mysql> create database liufeng;
  2. Query OK, 1 row affected (0.00 sec)

3)选择使用数据库liufeng:

  1. mysql> use liufeng;
  2. Database changed

4)设置客户端字符集为utf8(通常在use database_name之后执行该操作):

  1. database_name之后执行该操作):
  2. mysql> set names utf8;
  3. Query OK, 0 rows affected (0.00 sec)

5)查询当前使用的数据库:

  1. mysql> select database();
  2. +------------+
  3. | database() |
  4. +------------+
  5. | liufeng |
  6. +------------+
  7. 1 row in set (0.00 sec)

6)删除数据库:

  1. mysql> drop database liufeng;
  2. Query OK, 0 rows affected (0.04 sec)

2.table相关操作

1)显示数据库test中的所有表:

  1. mysql> show tables;
  2. Empty set (0.00 sec)

2)创建一张名为user的表(包含id、姓名和年龄):

  1. mysql> create table user(id int auto_increment primary key, name varchar(30), age int);
  2. Query OK, 0 rows affected (0.48 sec)

说明 auto_increment表示字段id的值是自动增长的,在每次插入记录时会自动增加1,无须手动赋值。primary key表示字段id是主键,能够唯一标识一条记录。


3)显示user表的建表语句:

  1. mysql> show create table user;
  2. +-------+-----------------------------------------------------------------------+
  3. | Table | Create Table|
  4. +-------+-----------------------------------------------------------------------+
  5. | user | CREATE TABLE `user` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `name` varchar(30) DEFAULT NULL,
  8. `age` int(11) DEFAULT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
  11. +-------+-----------------------------------------------------------------------+
  12. 1 row in set (0.00 sec)

4)查看user表的表结构:

  1. mysql> desc user;
  2. +-------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | name | varchar(30)| YES | | NULL | |
  7. | age | int(11) | YES | | NULL | |
  8. +-------+-------------+------+-----+---------+----------------+
  9. 3 rows in set (0.01 sec)

5)删除user表:

  1. mysql> drop table user;
  2. Query OK, 0 rows affected (0.35 sec)

3.记录的增删改查

1)创建user表并插入两条记录:


  1. mysql> create table user(id int auto_increment primary key, name varchar(30), age int);
  2. Query OK, 0 rows affected (0.79 sec)
  3.  
  4. mysql> insert into user(name, age) values('liufeng', 29);
  5. Query OK, 1 row affected (0.36 sec)
  6.  
  7. mysql> insert into user(name, age) values('luyao', 28);
  8. Query OK, 1 row affected (0.14 sec)

说明 在插入记录时,无须对自动增长auto_increment的字段id赋值。


2)查询user表的所有记录:

  1. mysql> select * from user;
  2. +----+---------+------+
  3. | id | name | age |
  4. +----+---------+------+
  5. | 1 | liufeng | 29 |
  6. | 2 | luyao | 28 |
  7. +----+---------+------+
  8. 1 rows in set (0.00 sec)

3)查询user表中name等于liufeng的记录:

  1. mysql> select * from user where name='liufeng';
  2. +----+---------+------+
  3. | id | name | age |
  4. +----+---------+------+
  5. | 1 | liufeng | 29 |
  6. +----+---------+------+
  7. 1 row in set (0.00 sec)

4)删除user表中id等于2的记录:

  1. mysql> delete from user where id=2;
  2. Query OK, 1 row affected (0.11 sec)

5)将user表中name等于liufeng的记录的age修改为28:

  1. mysql> update user set age=28 where name='liufeng';
  2. Query OK, 1 row affected (0.12 sec)
  3. Rows matched: 1 Changed: 1 Warnings: 0

6)查询user表的总记录数:

  1. mysql> select count(*) from user;
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 1 |
  6. +----------+
  7. 1 row in set (0.00 sec)