首页 > 编程笔记

SQL基础教程,30分钟入门SQL!

MySQL 通常使用结构化查询语言(SQL 语句)作为数据库的操作语言。结构化查询语言是对数据库的定义与操作的语法结构,由 CREATE、ALTER 与 DROP 三个语法所组成。SQL 语言代表着关系型数据库系统的工业标准,因此,目前几乎所有的关系型数据库系统都支持 SQL 语言,SQL 语言成为通用的关系型数据库语言。

结构化查询语言主要分为三大类:数据库定义语言、数据库操作语言、数据库查询语言:
  1. 数据库定义语言:主要负责创建、修改、删除表、索引、视图、函数、存储过程和触发器等对象。
  2. 数据库操作语言:主要负责数据库中数据的插入、修改、删除等操作。
  3. 数据库查询语言:主要用来查询数据表中的数据记录。

SQL 语言的特点:
在使用 SQL 语句对数据库进行管理时,最常使用的命令如表 1 所示。

表 1 常用的数据库表单管理命令及含义
命 令 含 义
CREATE DATABASES 数据库名称 创建新的数据库
DESCRIBE 表单名称 描述表单
UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值 更新表单中的数据
USE 数据库名称 指定使用的数据库
SHOW DATABASES 显示当前已有的数据库
SHOW TSBLES 显示当前数据库中的表单
SELECT * FROM 表单名称 从表单中选中某个记录值
DELETE FROM 表单名 WHERE attribute=值 从表单中删除某个记录值

数据库定义语言

1、CREATE DATABASE语句

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 所示。

创建test1数据库
图 2 创建test1数据库

2、CREATE TABLE语句

CREATE TABLE 语句用于创建数据库中的表,在创建之前需要使用 use db_name 进入数据库。

该语句的语法格式如下:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [数据表名称] (create_specification,...) [table_options] [opartition_options]

CREATE TABLE 语句的常用数据类型及含义如表 3 所示。

表 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 所示。

表 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 所示。

创建student数据表
图 5 创建student数据表

使用 show tables 显示 test1 数据库中的 student 数据表,如图 6 所示。

查看student数据表
图 6 查看student数据表

DESCRIBE 语句用于查看数据表的数据结构,如图 7 所示。

student数据表的数据结构
图 7 student数据表的数据结构

3、ALTER DATABASE语句

ALTER DATABASE 语句用来修改数据库的属性,通常数据库的属性被保存在数据库目录的 db.opt 文件中。该语句的语法格式如下:

ALTER {DATABASE | SCHEMA} [数据库名称] alter_specification ...


【例 3】修改 test1 数据库默认的字符集及排序规则,如图 8 所示。

修改test1数据库默认的字符集及排序规则
图 8 修改test1数据库默认的字符集及排序规则

4、ALTER TABLE语句

ALTER TABLE 语句用于修改数据表结构。该语句的语法格式如下:

ALTER [IGNORE] TABLE [数据表名称] [alter_specification [,alter_specification]......]

5、DROP TABLE语句

DROP TABLE 语句用于删除一个或多个数据表,一旦执行该操作,表中的定义及数据都将被删除。该语句的语法格式如下:

DROP [TEMPORARY] TABLE [IF EXISTS] tb1_name [, tb1_name]…

删除 student 表,如图 9 所示。

删除student表
图 9 删除student表

6、DROP DATABASE语句

DROP DATABASE 语句可以将数据库及数据库中的所有数据表全部删除。使用该语句删除数据库后,用户的权限并不会自动被删除。

DROP DATABASE 语句的语法格式如下:

DROP {DATABASE | SCHEMA} [IF EXITS] db_name

例如,删除名为 test1 的数据库:

mysql > DROP DATABASE test1

数据库操作语言

1、INSERT语句

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 所示。

插入数据
图 10 插入数据

2、UPDATE语句

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;

3、DELETE语句

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 所示。

表 11 常用参数条件及含义
参数条件 含 义
= 等于
<> 或 != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索一个例子
IN 在列中搜索多个值

【例 7】
1) 查询 student 数据表中的所有数据记录,如图 12 所示。

student表中的所有数据信息
图 12 student表中的所有数据信息

2) 统计 id 记录的个数,如图 13 所示。

统计id记录的个数
图 13 统计id记录的个数

3) 查询 student 数据表中的所有数据记录,并按照 id 列排序,DESC 为降序,AEC 为升序,如图 14 所示。

降序排列
图  14 降序排列

4) 仅显示数据记录中的前两行记录,如图 15 所示。

显示前两行记录
图 15 显示前两行记录

5) 查询 name=tom 的所有记录,并显示出相应的 telephone 记录,如图 16 所示。

查询name=tom并显示出相应的telephone记录
图 16 查询name=tom并显示出相应的telephone记录

优秀文章