速查"/>
MySQL基础使用速查
在日常学习和工作使用MySQL中的总结,方便自己查看,没有的说明我没有遇到或用到。
一、Windows下的基本操作
1.1 数据库存放目录:
C:\ProgramData\MySQL\MySQL Server 版本号\data
(该目录下每个目录表示一个数据库)
1.2 MySQL服务:
1.2.1 启动:
net start mysql
1.2.2 关闭:
net stop mysql
1.3 数据库登录&登出:
1.3.1 登录:
mysql -u用户名 -p密码 -hIP
1.3.2 登出:
/* 二选一即可 */
quit
exit
1.4 卸载MySQL:
- 关闭MySQL服务
- 卸载MySQL
- 删除MySQL安装目录
- 查看注册表(regedit)并删除MySQL:
- HKEY_LOCAL_HACHINE\SYSTEM\CurrentControlSet\Services\MySQL
- HKEY_LOCAL_HACHINE\SYSTEM\ControlSet001\Services\MySQL
- HKEY_LOCAL_MACHTNE\SYSTEM\ControlSet002\ Services\MySQL
1.5 bin目录中的重要文件:
- MySQL服务器端程序:mysqld.exe
- MySQL客户端程序:mysql.exe
- 服务器配置文件:my.ini
1.6 my.ini文件配置:
1.6.1 配置MySQL 的端口:3306(默认)
1.6.2 配置字符编码:
[client] 下配置客户端编码:
default-character-set=gbk
[mysqld]下配置服务器编码:
character-set-server=utf8
1.6.3 配置二进制数据大小上限:
[mysqld]下配置:
max_allowed_packet=8M
1.7 MySQL编码问题:
1.7.1 查看MySQL数据库编码:
SHOW VARIABLES LIKE 'char%';
1.7.2 编码解释:
character_set_client = utf8
MySQL把我们客户端传递的数据都当成是utf8。
若客户端发送的是GBK,服务器会当成utf8对待,
结果:乱码
处理问题的两种办法:
- 人客户端发送utf8的数据(行不通)
- 把character_set_client修改为GBK
- 只在当前窗口内有效;重新打开窗口又会还原。
character_set_results = utf8
MySQL发送给客户端的数据都是utf8的。
若服务器发送给服务器的是utf8的数据,客户端会它当成GBK
结果:乱码
处理问题的办法:
- 让服务器发送GBk的数据:character_set_results = gbk
1.7.3 在配置文件(my.ini)中修改才能一劳永逸
[client]Port=3306[mysql]default_character_set=gbk /* 它可以修改三个变量:client、resylts、connection */
1.8 备份与恢复
mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
/*
注意:不要打分号不要登录MySQL,直接在cmd下运行生成的脚本文件中不包含create database语句
*/
1.8.2 执行SQL脚本
第一种方式:
mysql -u用户名 -p密码 数据库名<脚本文件路径
/*
不要打分号
不要登录MySQL,直接在cmd下运行
*/
第二种方式:
/* 第一步:登录mysql *//* 第二步:输入代码 */
SOURCE SQL脚本路径
二、DDL 数据定义语言
2.1 库:
2.1.1 查看所有数据库:
SHOW DATABASES
2.1.2 切换数据库:
USE 数据库名
2.1.3 创建数据库:
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]
2.1.4 删除数据库:
DROP DATABASE [IF EXISTS] 数据库名
2.1.5 修改数据库编码:
ALTER DATABASE 数据库名 CHARACTER SET utf8
2.2 表:
2.2.1 创建表:
CREATE TABLE [IF NOT EXISTS] 表名(列名 列类型 ,…列名 列类型
);
2.2.2 查看当前数据库所有表名称:
SHOW TABLES
2.2.3 查看指定表的创建语句:
SHOW CREATE TABLE 表名;
2.2.4 查看表结构:
DESC 表名;
2.2.5 删除表:
DROP TABLE 表名;
2.3 列:
即:对表的修改
2.3.1 添加列:
ALTER TABLE 表名ADD (列名 列类型,…列名 列类型);
2.3.2 修改列类型:
ALTER TABLE 表名MODIFY 列名 列新的类型;
2.3.3 修改列名:
ALTER TABLE 表名CHANGE 原列名 新列名 列类型;
2.3.4 删除列:
ALTER TABLE 表名DROP 列名;
2.3.5 修改表名称:
ALTER TABLE 表名RENAME TO 新表名;
三、DML 数据操作语言
3.1 插入记录:
3.1.1 插入所有列:
INTERT INTO 表名(列名1,列名2,…) VALUES(列值1,列值2,…);
3.1.2 插入部分列:
没有插入的列为默认值NULL
INTERT INTO 表名(列名1,列名2) VALUES(列值1,列值2);
3.1.3 不给出插入列,默认为插入所有列。
值的顺序要与创建表时列的顺序相同。
INTERT INTO 表名 VALUES(列值1,列值2,…,列值last);
在数据库中所有的字符串类型必须使用单引号,不能使用双引号。日期类型也要使用单引号。
3.2 修改记录:
UPDATE 表名 SET 列名1=列值1, 列名2=列值2,… [WHERE 筛选条件]
【筛选条件】
条件必须是一个boolean类型的值或表达式;
【运算符】
=!=<>><>=<=BETWEEN…ANDIN(…)IS NULLNOTORAND
3.3 删除记录:
DELETE FEOM 表名[WHERE 筛选条件];
四、DCL 数据控制语言
4.1 建议:
- 一个项目创建一个用户!一个项目对应的数据库只有一个!
- 这个用户只能对这个数据库有权限,其他数据库你就操作不了了!
4.2 创建用户:
4.2.1 用户只能在指定的IP地址上登录
CREATE USER 用户名@IP地址 IDENTIFIED BY '密码';
4.2.2用户可以在任意IP地址上登录
CREATE USER 用户名@'%' IDENTIFIED BY '密码';
4.3 给用户授权:
4.3.1 给用户分派在指定数据库上的指定权限
GRANT 权限1, … ,权限n ON 数据库名.* TO 用户名@IP地址;
4.3.2 给用户分派指定数据库上的所有权限
GRANT ALL ON 数据库名.* TO 用户名@IP地址;
4.4 撤销授权:
4.4.1 撤销指定用户在指定数据库上的指定权限
REVOKE 权限1, … ,权限n ON 数据库名.* FROM 用户名@IP地址;
4.5 查看权限:
4.5.1 查看指定用户的权限
SHOW GRANTS FOR 用户名@IP地址;
4.6 删除用户:
DROP USER 用户名@IP地址;
五、DQL 数据查询语言
5.1 列控制
5.1.1 查询所有列:
SELECT * FROM 表名;
5.1.2 查询指定列:
SELECT 列1 [, 列2, …, 列N] FROM 表名;
5.1.3 完全重复的记录只一次
DISTINCT
:当查询结果中的多行记录一模一样时,只显示一行。
-- 查询所有列,完全重复的记录只显示一行 --
SELECT DISTINCT * FROM 表名;-- 查询指定列,完全重复的记录只显示一行 --
SELECT DISTINCT 列1 [, 列2, …, 列N] FROM 表名;
5.2 列运算:
5.2.1 数量类型的列可做加,减,乘,除运算:
SELECT 列名A+1 FROM 表名;SELECT 列名B-列名C FROM 表名;SELECT 列名D*列名E FROM 表名;SELECT 列名F/2 FROM 表名;/* 任何数值与NULL相加 = NULL。 */
5.2.2 字符串类型可以做连接运算:
SELECT CONCAT ('字符串', 列名B) FROM 表名;
5.2.3 转换NULL值:
SELECT IFNULL(列名, 0) +1000
更多推荐
MySQL基础使用速查
发布评论