启动 / 关闭 {#启动 - 关闭}
- 启动(以管理员模式运行命令行)
net start mysql
- 关闭(以管理员模式运行命令行)
net stop mysql
登录 / 退出 {#登录 - 退出}
- 登录
mysql -u"用户名" -p"密码"
- 登录格式二
mysql -h"ip 地址" -u"用户名" -p"密码"
- 退出
exit
图形化界面 {#图形化界面}
SQL 语句分类 {#SQL 语句分类}
-
什么是 SQL 语句
- 结构化查询语言 (S tructured Q uery Language) 简称 SQL。
- SQL 语句就是对数据库进行操作的一种语言。
-
SQL 的作用
- 通过 SQL 语句我们可以 方便的操作数据库、表、数据。
- SQL 是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持 SQL 语句,但都有特有内容。
-
SQL 语句分类
-
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等 -
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等 -
DQL(Data Query Language) 数据查询语言
对数据库进行数据查询,关键字 select。 -
DCL(Data Control Language)数据控制语言(了解)
是用来设置或更改数据库用户或角色权限的语句,这个比较少用到。
-
-
SQL 通用语法
- SQL 语句可以单行或多行书写, 分号结尾
- 可以使用空格和缩进增强语句的可读性
- MySQL 数据库的 SQL 语句不区分大小写, 关键字建议大写
- 三种注释
- 单行注释(-- 注释内容)
- 多行注释(/* 注释内容 */)
- 注释内容(# 注释内容 /MySQL 特有)
-- 查询 mobai 表
SELECT
*
FROM
mobai;
DDL 操作数据库 {#DDL 操作数据库}
- 创建数据库
CREATE DATABASE IF NOT EXISTS '数据库名';
- 判断是否存在相同数据库并创建
CREATE DATABASE '数据库名' DEFAULT CHARACTER SET '字符集';
- 创建数据库并指定编码
CREATE DATABASE '数据库名' DEFAULT CHARACTER SET '字符集';
- 查看数据库
SHOW DATABASES;
- 查看当前数据库详细信息
SHOW CREATE DATABASE '数据库';
- 修改数据库编码
ALTER DATABASE '数据库名' DEFAULT CHARACTER SET '新字符集';
- 删除数据库
DROP DATABASE '数据名';
- 查看当前使用数据库
SELECT DATABASE();
- 切换数据库
USE '数据库';
- DDL 小结
| DDL 语句操作数据库 | 关键字 | |:-----------:|:---------------------------------------------------| | 创建 | CREATE DATABASE 数据库名; | | 修改 | ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集; | | 查看 | SHOW CREATE DATABASE 数据库名; | | 删除 | DROP DATABASE 数据库名; |
- 创建表
CREATE TABLE '表名' ('字段名 字段类型, 字段名 字段类型');
- MySQL(常用)数据类型
| 类型 | 描述 | |:-------:|:-----:| | int | 整型 | | double | 浮点类型 | | varchar | 字符串类型 | | date | 日期类型 |
- 查看数据库中所有表
SHOW TABLES;
- 查看表结构
DESC '表名';
- 查看创建表的 SQL 语句
SHOW CREATE TABLE '表名';
- 快速创建一个表结构相同的表
CREATE TABLE '新表名' LIKE '旧表名';
- 删除表
DROP TABLE '表名';
- 判断是否存在并删除表
DROP TABLE IF EXISTS '表名';
DDL 修改表结构 {#DDL 修改表结构}
- 给表添加一列
ALTER TABLE '表名' ADD '字段名' '字段类型';
- 修改列类型
ALTER TABLE '表名' MODIFY '字段名' '新的类型';
- 修改列名字
ATLER TABLE '表名' CHANGE '老字段名' '新字段名' '字段类型';
- 删除列
ALTER TABLE '表名' DROP '字段名';
- 修改表名
RENAME TABLE '旧表名' TO '新表名';
- 修改表的字符集
ALTER TABLE '表名' DEFAULT CHARACTER SET '新字符集';
DML 插入记录 {#DML 插入记录}
DML 是对表中的数据进行增删改
- 插入全部字段
INSERT INTO '表名' ('字段名 1, 字段名 2, 字段名 3') VALUES ('值 1, 值 2, 值 3');
- 简化写法
INSERT INTO '表名' VALUES ('值 1, 值 2, 值 3');
- 解决 MySQL/DOS 窗口中文乱码问题
错误原因: 因为 MySQL 的客户端设置编码是 utf8, 而系统的 DOS 命令行编码是 gbk,编码不一致导致的乱码
set names gbk; -- 告诉 mysql 传输数据的时候, 使用 gbk
DML 更新表记录 {#DML 更新表记录}
- 不带条件修改数据
UPDATE '表名' SET '字段名'='新的值';
- 待条件修改数据新的值
UPDATE '表名' SET '字段名 = 新的值' WHERE '条件';
关键字说明
UPDATE
: -- 表示修改SET
: -- 修改的字段WHERE
: -- 指定条件
DML 删除表记录 {#DML 删除表记录}
- 带条件删除数据
DELETE FROM '表名' WHERE '条件';
- 不带条件删除数据
DELETE FROM '表名';
-
注意
- 值与字段必须对应,个数相同,类型相同
- 值的数据大小必须在字段的长度范围内
- 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
- 如果要插入空值,可以不写字段,或者插入 null
DQL 没有条件的简单查询 {#DQL 没有条件的简单查询}
注意:查询不会对数据库中的数据进行修改,只是一种显示数据的方式。
- 写出查询每列的名称
SELECT '字段名 1', '字段名 2' FROM '表名';
- 使用 * 表示所有列
SELECT * FROM '表名';
- 查询表中指定列数据
- 查询指定列的数据, 多个列之间以逗号分隔
SELECT '字段名 1', '字段名 2' FROM '表名';
- 别名查询
- 查询时给列、表指定别名需要使用 AS 关键字
- 使用别名的好处是方便观看和处理查询到的数据
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;
- 清除重复值
SELECT DISTINCT '字段名' FROM '表名';
- 某列数据和固定值运算
SELECT 字段名 + 数值 FROM 表名;
- 某列数据和其他列数据参与运算
SELECT 字段1 + 字段2 FROM 表名;
注意: 参与运算的必须是数值类型
蠕虫复制 {#蠕虫复制}
什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
INSERT INTO 表名1 SELECT 字段名 FROM 表名2;