目录
1.1 简介
MySQL 是一种开放源代码的轻量级关系型数据库。
- 开放源代码:用户可阅读、修改代码。
- 轻量级:占用资源少,处理数据快速高效。
- 关系型:数据间为二维关系。
1.1 相关概念
- DB:数据库(database),存储有组织的数据的“仓库”。
- DBMS:数据库管理系统(Database Management System,又称数据库软件或产品),数据库是通过 DBMS 创建和操作的容器。
常见数据库管理系统:MySQL、Oracle、DB2、SqlServer 等。 - SQL:结构化查询语言(Structure Query Language),专门用来与数据库通信的语言。通用性强。
1.2 存储数据
- 数据–>表–>库。
- 一个数据库可以有多个表,用表名(唯一)进行区分。
- 表具有一些特性,这些特性定义了数据在表中如何存储。
- 表由列(字段)组成,一列(数据元素) 包含了相同类型的数据 + 数据按行存储,一行(元组,或记录)是一组相关的数据。
- 表头( header ): 每一列的名称。
- 键( key ): 键的值在当前列中具有唯一性。
- 值( value ): 行的具体信息, 每个值必须与该列的数据类型相同。
1.3 数据类型
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
- 数值类型:MySQL 支持所有标准 SQL 数值数据类型。这些类型包括严格数值数据类型( INTEGER、SMALLINT、DECIMAL 和 NUMERIC ),以及近似数值数据类型( FLOAT、REAL 和 DOUBLE PRECISION )。
- 日期和时间类型:表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME 和 YEAR 。每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL 不能表示的值时使用"零"值。TIMESTAMP 类型有专有的自动更新特性。
- 字符串类型:指 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 。
注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
2. 基础语法
使用 Navicat
1. show databases; 查看当前所有数据库
2. use db_name; 查看指定库
3. show tables; 查看当前库的所有表
4. show tables from db_name; 查看其他库的所有表
5. 创建表
create table table_name(
列名 列类型,
列名 列类型,
...
);
创建数据库
create database db_name;
删除数据库
drop database db_name;
6. desc table_name; 查看表结构
语法规范
- 不区分大小写,但建议关键字大写(图形化界面自动大写),表名、列名小写
- 每条命令最好用分号(英文 ; )结尾(也可以用 \g )
- 每条命令根据需要,可以进行缩进或换行
- 注释:单行 #注释文字 或者 – 注释文字;多行 /* 注释文字 */
2.1 WHERE
- 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用 WHERE 语句来设定查询条件。
- 可以在 WHERE 子句中指定任何条件。
- 可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
2.2 SELECT
2.3 INSERT
MySQL 表中使用 INSERT INTO SQL语句来插入数据。
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
如果数据是字符型,必须使用单引号或者双引号,如:" value "。
-
命令行界面:
-
查询界面:
-
直接操作表:
2.4 DELETE
DELETE FROM table_name [WHERE Clause];
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 可以在 WHERE 子句中指定任何条件。
- 可以在单个表中一次性删除记录。
2.5 UPDATE
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
- 可以同时更新一个或多个字段。
- 可以在 WHERE 子句中指定任何条件。
- 可以在一个单独表中同时更新数据。
2.6 LIKE 和 UNION
WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 " id = 1 ;"。但是有时候我们需要获取 id 字段含有 " 1 " 的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于 UNIX 或正则表达式中的星号 *。
如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
- expression1 , expression2 , … expression_n : 要检索的列。
- tables : 要检索的数据表。
- WHERE conditions : 可选, 检索条件。
- DISTINCT : 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
- ALL : 可选,返回所有结果集,包含重复数据。
2.7 ORDER BY 和GROUP BY
ORDER BY 对读取的数据进行排序。
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT, SUM, AVG 等函数。
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;