MySQL 四部曲
序号 | 文章 |
---|---|
1 | MySQL 环境搭建的四种方式 |
2 | MySQL 基础简介及配置 |
3 | MySQL基础语句 |
① SQL,英文全称 Structured Query Language
,是一种结构化查询语言,是一种关系型数据库的查询规范,用于访问和处理数据库。
② SQL其实就是定义了操作所有关系型数据库的规则。
③ Oracle,MySQL,SQL Server 等每一种数据库操作的方式存在不一样的地方,从 SQL 引申出来。所以不同的数据库都支持 SQL 语言。
① DDL (Data Definition Language) – 数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create
, drop
,alter
等
② DML (Data Manipulation Language) – 数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert
,delete
, update
等
③ DQL (Data Query Language) – 数据查询语言
用来查询数据库中表的记录(数据)。关键字:select
, where
等
④ DCL (Data Control Language) – 数据控制语言
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT
, REVOKE
等
① 每条语句以分号结尾,但在一些可视化数据库管理工具中不是必须加的
② SQL 中不区分大小写,关键字中认为大写和小写是一样的
③ SQL 中的三种注释
符号 | 说明 |
---|---|
-- |
单行注释 |
/* */ |
多行注释 |
# |
单行注释,MySQL 特有 |
对于数据库及数据表等操作,我们一般要记住的也就 增、删、改、查 四个操作。下面也就是对数据库和和数据表增、删、改、查操作的详细介绍。
① 创建数据库
CREATE DATABASE 数据库名;
示例:
create database db1;
② 判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
示例:
create database if not exists db2;
③ 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
示例:
create database db3 default character set gbk;
① 查看所有的数据库
show database;
① 查看某个数据库的定义信息
show create database 数据库名;
示例:
show create database db1;
show create database db2;
show create database db3;
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
示例:修改数据库db3的默认字符集为 utf8
alter database db3 character set utf8;
DROP DATABASE 数据库名;
示例:删除数据库 db2
drop database db2;
SELECT DATABASE(); #全局函数
USE 数据库名;
示例:
-- 查看正在使用的数据库
select database();
-- 改变要使用的数据库
use db4;
CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2,
......
字段名 n 字段类型 n,
)
示例:
CREATE TABLE people (
age INT,
NAME VARCHAR(20)
)
关键字 | 说明 |
---|---|
CREATE | 创建 |
TABLE | 表 |
常用的数据类型也就这四个,如果有需要,可以看下面的详细数据类型表。
数据类型 | 说明 |
---|---|
int | 整形 |
double | 浮点型 |
varchar | 字符串型 |
date | 日期类型 |
类型 | 大小(Bytes) | 范围 | 说明 |
---|---|---|---|
TINYINT | 1 | (-128,127) | 微整型 |
SMALLINT | 2 | (-32 768,32 767) | 小整型 |
MEDIUMINT | 3 | (-8 388 608,8 388 607) | 中整型 |
INT(INTEGER) | 4 | (-2 147 483 648,2 147 483 647) | 整型 |
BIGINT | 8 | (-9 223 372 036 854 775 808,9 223 372 036 854 775 807) | 大整型 |
FLOAT | 4 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 单精度浮点型 |
DOUBLE | 8 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点型 |
DECIMAL | DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 小数值 |
类型 | 大小(Bytes) | 范围 | 说明 |
---|---|---|---|
DATA | 3 | 1000-01-01/9999-12-31 | 日期类型 |
TIME | 3 | -838:59:59 / 838:59:59 | 时间类型 |
YEAR | 1 | 1901/2155 | 年份类型 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | 日期时间类型 |
类型 | 大小(Bytes) | 说明 |
---|---|---|
CHAR | 0-255 | 定长字符串 |
VARCHAR | 0-65535 | 变长字符串 |
TINYBLOB | 0-255 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 | 短文本字符串 |
BLOB | 0-65 535 | 二进制形式的长文本数据 |
TEXT | 0-65 535 | 长文本数据 |
MEDIUMBLOB | 0-0-16 777 215 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 | 极大文本数据 |
SHOW TABLES;
DESC 表名;
示例:
DESC people;
SHOW CREATE TABLE 表名;
示例:
SHOW CREATE TABLE people;
CREATE TABLE 新表 LIKE 表1;
示例:
CREATE TABLE people1 LIKE people;
DROP TABLE 表名;
ALTER TABLE 表名 ADD 列名 类型;
示例:
ALTER TABLE people ADD class VARCHAR(20);
DESC people;
ALTER TABLE 表名 MODIFY 列名 新的类型;
示例:
ALTER TABLE people MODIFY class INT;
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
示例:
ALTER TABLE people CHANGE class sex INT;
这里提示一下,由于MySQL中没有布尔值,可以用数值型0,1代替布尔值哦!
ALTER TABLE 表名 DROP 列名;
示例:
ALTER TABLE people DROP sex;
RENAME TABLE 表名 TO 新表名;
示例:
RENAME TABLE people TO persons;
ALTER TABLE 表名 character set 字符集;
示例:
ALTER TABLE persons CHARACTER SET gbk;
可以不写所有列名,这时插入的是部分数据。
INSERT INTO 表名 (列名1,列名2,...) VALUES (值1,值2,...);
示例:
INSERT INTO persons (age,NAME) VALUES(19,'小红');
INSERT INTO 表名 VALUES (值 1, 值 2, …);
示例:
INSERT INTO persons VALUES(20,'小兰');
UPDATE 表名 SET 列名=值;
示例:
UPDATE persons SET age=age+1;
UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
示例:
UPDATE persons SET NAME='小明' WHERE NAME='小红';
DELETE FROM 表名;
示例:
DELETE FROM persons;
DELETE FROM 表名 WHERE 字段名=值;
示例:
DELETE FROM persons WHERE age=20;
TRUNCATE TABLE 表名;
示例:
TRUNCATE TABLE persons;
SELECT * FROM 表名;
示例:
SELECT * FROM persons;
SELECT 列名 1, 列名 2, ... FROM 表名;
示例:
SELECT age FROM persons;
SELECT 列名 1 AS 别名, 列名 2 AS 别名... FROM 表名;
示例:
SELECT age AS 年龄 FROM persons;
SELECT DISTINCT 字段名 FROM 表名;
示例:
SELECT DISTINCT age FROM persons;
SELECT 列名 1 + 固定值 FROM 表名;
示例:
SELECT age+1 FROM persons;
SELECT 列名 1 + 列名 2 FROM 表名;
要注意,列中的值类型要为数值型
比较运算符 | 说明 |
---|---|
>、<、<=、>=、=、<> | 注意:<>在 SQL 中表示不等于,在 mysql 中也可以使用!= |
BETWEEN…AND | 表示一个范围 |
IN | 表示某些值是否在集合中 |
LIKE ‘_%’ | 模糊查询 |
IS NULL | 查询某一列是否为 NULL |
and、or、not | 逻辑运算符 |
示例代码:
SELECT * FROM persons WHERE age<>19;
SELECT * FROM persons WHERE age NOT IN (19,20,22);