SQL基础教程,30分钟入门SQL!
结构化查询语言主要分为三大类:数据库定义语言、数据库操作语言、数据库查询语言:
- 数据库定义语言:主要负责创建、修改、删除表、索引、视图、函数、存储过程和触发器等对象。
- 数据库操作语言:主要负责数据库中数据的插入、修改、删除等操作。
- 数据库查询语言:主要用来查询数据表中的数据记录。
SQL 语言的特点:
- SQL 语言简洁,易学易用,初学者经过慢慢学习就可以直接使用SQL存取数据。
- SQL 语言是一种非过程语言,只需直接决定“做什么”,存取的过程由RDBMS来决定,从而向用户隐蔽数据的存取路径。
- SQL 语言是一种面向集合的语言。
- SQL 语言不仅可以独立使用,而且可以嵌入到宿主语言中使用,具有自含型和宿主型两种特点。
- SQL 语言具有查询、操作、定义三种语言一体化的特点。
在使用 SQL 语句对数据库进行管理时,最常使用的命令如表 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] ...
各个参数的含义如下:- [数据库名称]:创建数据库的名称。MySQL数据库通常将数据存储区以目录方式来表示,因此数据库名称必须符合操作系统的文件夹命名规则,在 MySQL 中不区分大小写。
- IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误,如果数据库存在并且没有指定IF NOT EXISTS,就会发生错误。
【例 1】创建名为 test1 的数据库,并使用 show databases 显示 MySQL 数据库所有的数据库列表。命令如下:
[root@bogon abc]# mysql -u root -p
Enter password:
mysql> create database test1;
mysql> show databases;

图 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 所示。数据类型 | 含 义 |
---|---|
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;

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

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

图 7 student数据表的数据结构
3、ALTER DATABASE语句
ALTER DATABASE 语句用来修改数据库的属性,通常数据库的属性被保存在数据库目录的 db.opt 文件中。该语句的语法格式如下:ALTER {DATABASE | SCHEMA} [数据库名称] alter_specification ...
【例 3】修改 test1 数据库默认的字符集及排序规则,如图 8 所示。

图 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 所示。
图 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 插入数据
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]
参数条件 | 含 义 |
---|---|
= | 等于 |
<> 或 != | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索一个例子 |
IN | 在列中搜索多个值 |
【例 7】
1) 查询 student 数据表中的所有数据记录,如图 12 所示。

图 12 student表中的所有数据信息
2) 统计 id 记录的个数,如图 13 所示。

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

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

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

图 16 查询name=tom并显示出相应的telephone记录
声明:《Linux系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。