MySQL 通常使用结构化查询语言(SQL 语句)作为数据库的操作语言。结构化查询语言是对数据库的定义与操作的语法结构,由 CREATE、ALTER 与 DROP 三个语法所组成。SQL 语言代表着关系型数据库系统的工业标准,因此,目前几乎所有的关系型数据库系统都支持 SQL 语言,SQL 语言成为通用的关系型数据库语言。
结构化查询语言主要分为三大类:数据库定义语言、数据库操作语言、数据库查询语言:
SQL 语言的特点:
在使用 SQL 语句对数据库进行管理时,最常使用的命令如表 1 所示。
命 令 | 含 义 |
---|---|
CREATE DATABASES 数据库名称 | 创建新的数据库 |
DESCRIBE 表单名称 | 描述表单 |
UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值 | 更新表单中的数据 |
USE 数据库名称 | 指定使用的数据库 |
SHOW DATABASES | 显示当前已有的数据库 |
SHOW TSBLES | 显示当前数据库中的表单 |
SELECT * FROM 表单名称 | 从表单中选中某个记录值 |
DELETE FROM 表单名 WHERE attribute=值 | 从表单中删除某个记录值 |
CREATE DATABASE 语句通常用来创建数据库,在执行该语句时要求执行者必须有 CREATE 权限。
该语句的语法格式如下:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] [数据库名称] [create_specification] ...
各个参数的含义如下:
【例 1】创建名为 test1 的数据库,并使用 show databases 显示 MySQL 数据库所有的数据库列表。命令如下:
[root@bogon abc]# mysql -u root -p
Enter password:
mysql> create database test1;
mysql> show databases;
创建以及显示数据库如图 2 所示。
CREATE TABLE 语句用于创建数据库中的表,在创建之前需要使用 use db_name 进入数据库。
该语句的语法格式如下:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [数据表名称] (create_specification,...) [table_options] [opartition_options]
CREATE TABLE 语句的常用数据类型及含义如表 3 所示。
数据类型 | 含 义 |
---|---|
TINYINT(n) | 8 位整数类型 |
SMALLINT(n) | 16 位整数类型 |
MEDIUMINT(n) | 32 位整数类型 |
INT(n) | 32 位整数类型 |
BIGINT(n) | 64 位整数类型 |
FLOAT(n,d) | 单精度浮点数 |
DOUBLE(n,d) | 双精度浮点数 |
DATE | 曰期格式 |
TIME | 时间格式 |
char(n) | 固定长度字串 |
varchar(n) | 非定长字串 |
BIT | 二进制数据 |
BLOB | 非定长二进制数据 |
CREATE TABLE语句的常用属性及含义如表 4 所示。
属 性 | 含 义 |
---|---|
NOT_NULL | 数据为非空值 |
AUTO_INCREMENT | 插入新的数据后对应整数数据列自动加1 |
PRIMARY KEY | 创建住索引列 |
KEY | 普通索引列 |
DEFAULT CARSET | 设置默认字符集 |
ENGINE | 设置默认数据库存储引擎 |
【例 2】使用 use 语句打开 test1 数据库,并使用 create table 创建名为 student 的数据表。命令如下:
mysql> use test1;
Database changed
mysql> create table student
mysql> CREATE TABLE test (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
mysql> CREATE TABLE new_user SELECT * FROM mysql.user;
打开 test1 数据库,使用 create table 创建名为 student 的数据表,如图 5 所示。
使用 show tables 显示 test1 数据库中的 student 数据表,如图 6 所示。
DESCRIBE 语句用于查看数据表的数据结构,如图 7 所示。
ALTER DATABASE 语句用来修改数据库的属性,通常数据库的属性被保存在数据库目录的 db.opt 文件中。该语句的语法格式如下:
ALTER {DATABASE | SCHEMA} [数据库名称] alter_specification ...
【例 3】修改 test1 数据库默认的字符集及排序规则,如图 8 所示。
ALTER TABLE 语句用于修改数据表结构。该语句的语法格式如下:
ALTER [IGNORE] TABLE [数据表名称] [alter_specification [,alter_specification]......]
DROP TABLE 语句用于删除一个或多个数据表,一旦执行该操作,表中的定义及数据都将被删除。该语句的语法格式如下:
DROP [TEMPORARY] TABLE [IF EXISTS] tb1_name [, tb1_name]…
删除 student 表,如图 9 所示。
DROP DATABASE 语句可以将数据库及数据库中的所有数据表全部删除。使用该语句删除数据库后,用户的权限并不会自动被删除。
DROP DATABASE 语句的语法格式如下:
DROP {DATABASE | SCHEMA} [IF EXITS] db_name
例如,删除名为 test1 的数据库:
mysql > DROP DATABASE test1
INSERT 语句用于向数据表中插入一行新的数据。该语句的语法格式如下:
INSERT [LOW_PRIORITY | DELAYDE | HIGH_PRIORITY] [IGNORE] [INTO] tb1_name [(col_name,…)]
【例 4】向 student 数据表中插入数据。
插入数据的具体值存放在 VALUES 后面,可以使用 INSERT 语句一次插入一条数据记录,也可以同时插入多条数据记录。
mysql> use test1;
mysql> INSERT INTO student (id,name,e_mail,telephone)
mysql> SELECT * FROM test1.student;
插入结果如图 10 所示。
UPDATE 语句用于更新数据表中现有的数据值,仅修改满足 where 条件的数据记录。
该语句的语法格式如下:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name={expre1 | DEFAULT} [, col_name2={ expre2 | DEFAULT }]… [WHERE where_condition]
【例 5】当 id 的值为 2 时,修改 name 的值为 tom1。命令如下:
mysql> UPDATE test1.student SET name="tom1" WHERE id=2;
DELETE 语句通常用来把满足条件的数据记录删除并返回删除的记录数量。该语句语法格式如下:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tb1_name [WHERE where_condition]
【例 6】删除 id=01 的数据;删除 name=tom 的数据。命令如下:
mysql> DELETE FROM student WHERE id=01;
mysql> DELETE FROM student WHERE student name="tom";
数据库的查询可以使用 SELECT 语句来实现。SELECT 语句用来查询数据表中的数据记录。该语句的语法格式如下:
SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr…]
[FROM table_references]
[WHERE where_condition]
[ORDER BY {col_anme | expr | position} [ASC | DESC]]
[LIMIT]
WHERE 命令用于数据库匹配查询的条件,常用的参数条件及含义如表 11 所示。
参数条件 | 含 义 |
---|---|
= | 等于 |
<> 或 != | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索一个例子 |
IN | 在列中搜索多个值 |
【例 7】
1) 查询 student 数据表中的所有数据记录,如图 12 所示。
2) 统计 id 记录的个数,如图 13 所示。
3) 查询 student 数据表中的所有数据记录,并按照 id 列排序,DESC 为降序,AEC 为升序,如图 14 所示。
4) 仅显示数据记录中的前两行记录,如图 15 所示。
5) 查询 name=tom 的所有记录,并显示出相应的 telephone 记录,如图 16 所示。