中软Day12
数据库
-
数据库的基本概念
-
数据库的英文单词: DataBase 简称 : DB DBA --> 数据库管理员
-
什么数据库?
- 用于存储和管理数据的仓库。
-
数据库的特点:
- 持久化存储数据的。其实数据库就是一个文件系统
- 方便存储和管理数据
- 使用了统一的方式操作数据库 – SQL
常见的数据库 Oracle sqlserver mysql 关系型数据库 redis MongoDB NoSql(not only)
-
-
MYSQL数据库软件
-
安装
-
卸载
- 去mysql的安装目录找到my.ini文件 配置文件
- 复制 datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”
- 卸载MySQL
- 删除C:/ProgramData目录下的MySQL文件夹。
- 删除注册表
- 去mysql的安装目录找到my.ini文件 配置文件
-
配置
- MySQL服务启动
- 手动。
- cmd–> services.msc 打开服务的窗口
- 使用管理员打开cmd
- net start mysql : 启动mysql的服务
- net stop mysql:关闭mysql服务
- MySQL登录
- mysql -uroot -p密码
- mysql -hip -uroot -p连接目标的密码
- mysql --host=ip --user=root --password=连接目标的密码
- MySQL退出
- exit
- quit
- MySQL服务启动
-
-
SQL
-
什么是SQL?
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 -
SQL通用语法
-
SQL 语句可以单行或多行书写,以分号结尾。 js 可以写也可以不写分号。
-
可使用空格和缩进来增强语句的可读性。
-
MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
-
3 种注释
-
单行注释: – 注释内容 或 # 注释内容(mysql 特有)
-
多行注释: /* 注释 */
-
-
-
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 等
- DDL(Data Definition Language)数据定义语言
-
-
DDL:操作数据库,表
-
操作数据库:CRUD
-
C(Create):创建
-
创建数据库
create database 数据库名称
-
创建数据库,判断不存在,再创建
create database if not exists 数据库名称
-
创建数据库 并指定数据字符集
create database 数据库名称 character set gbk;
-
练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
create database if not exists db4 character set gbk;
-
-
R(Retrieve):查询
-
查找所有数据库
show databases
-
查询字符集 查询某个数据库的创建语句
show create databse 数据库名称
-
-
U(Update):修改
-
修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
-
-
D(Delete):删除
-
删除数据库
drop database 数据库名称;
-
判断数据库存在,存在再删除
drop database if exists 数据库名称;
-
-
使用数据库
-
查询当前正在使用的数据库名称
select database();
-
使用数据库
use 数据库名称;
-
-
-
操作表
-
C(Create):创建
-
语法
create table 表名( 列名1 数据类型1, 列名2 数据类型2, .... 列名n 数据类型n );
注意:最后一列,不需要加逗号(,)
-
数据类型:
1.int 整数类型 age
2.double 小数类型 scroe double(5,2) 333.33 4,1 333.3
3.date 日期 只包含年月日 yyyy-MM-dd
4.datetime 日期 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
5.timestamp 时间戳 包含年月日时分秒 1970.1.1
6.varchar 字符串 name varchar(20) 姓名最大20个字符 张三 2个 zhangsan 8个
-
-
-
R(Retrieve):查询
-
查询某个数据库中所有的表名称
show tables;
-
查询表结构
desc 表名;
-
-
U(Update):修改
-
修改表名
alter table 表名 rename to 新的表名;
- 修改表的字符集
alter table 表名 character set 字符集名称;
- 添加一列
alter table 表名 add 列名 数据类型;
- 修改列名称 类型
alter table 表名 change 列名 新列别 新数据类型; alter table 表名 modify 列名 新数据类型;
-
-
删除列
alter table 表名 drop 列名;
-
-
D(Delete):删除
* drop table 表名; * drop table if exists 表名;
-
-
DML:增删改表中数据
-
添加数据
-
语法
* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); insert into 表名(id,name,age) values(值1,值2,...值n);
-
注意
-
列名和值要一一对应。
-
如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,...值n);
-
除了数字类型,其他类型需要使用引号(单双都可以)引起来
-
-
-
删除数据
-
语法
delete from 表名 [where 条件]
-
注意
-
如果不加条件,则删除表中所有记录。
-
如果要删除所有记录
delete from 表名;
不推荐使用 有多少条记录就执行多少次删除操作
TRUNCATE TABLE 表名;
推荐使用 效率高 删除表,再创建一张一样的表
-
-
-
修改数据:
- 语法:
update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
- 注意:如果不加任何条件,则会将表中所有记录全部修改。
-
-
DQL:查询表中的记录
select * from 表名; 怎么优化数据库 主从分离 读写分离 主表(读),从表(写)
-
语法
select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定
-
基础查询
-
多个字段的查询
select 字段名1,字段名2... from 表名;
- 注意: 如果查询所有字段,则可以使用*来替代字段列表。
-
去除重复:
distinct
-
计算列
- 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
-
起别名:
- as 也可以省略
-
-
条件查询
-
where子句后跟条件
-
运算符
* > 、< 、<= 、>= 、= 、<>(不等于 !=) * BETWEEN...AND * IN( 集 合) * LIKE:模糊查询 * 占位符: * _:单个任意字符 * %:多个任意字符 * IS NULL * and 或 && * or 或 || * not 或 !
-
-
排序查询
-
语法:order by 子句
ORDER BY 排序字段1,排序方式1,排序字段2,排序方式2 ORDER BY 列名称 排序规则 -- 基础语法
-
排序方式:
- ASC 升序(从小到大) 默认的
- DESC 降序
-
注意: 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
-
案例:
SELECT * FROM 学生表 ORDER BY 数学成绩 ASC ; -- 按照数学成绩升序排列 SELECT * FROM 学生表 ORDER BY 数学成绩 ASC , 英语成绩 DESC; -- 先按照数学成绩升序排,数学成绩相同就按英语成绩降序
-
-
分组查询
-
语法:group by 分组字段 —— 子句
-
注意事项
a.分组之后,查询的结果是 分组的字段 或者是 聚合函数
b.两个区别 WHERE 和 HAVING
WHERE 分组之前的条件筛选,不满足条件,不参与分组. 后面不能跟聚合函数
HAVING 分组之后的条件筛选,不满足条件,不会显示出来. 后面直接跟聚合函数 -
案例:
-- 根据性别进行分组,查询学生表当中的性别和对应的人数 SELECT 性别,COUNT(主键id) FROM 学生表 GROUP BY 性别; -- 从学生表当中查询成绩大于80,对性别分组要求人数大于2,显示最后的结果 SELECT COUNT(主键id) FROM 学生表 WHERE 成绩>80 GROUP BY 性别 HAVING COUNT(主键ID)>2;
-
-
聚合函数
-
常用的聚合函数
- count:计算个数
- 一般选择非空的列:主键
- count(*)
- max:计算最大值
- min:计算最小值
- sum:计算和
- avg:计算平均值
- count:计算个数
-
注意事项
聚合函数排除为NULL值的列.解决方案: -
不采用 为NULL的列
-
函数 IFNULL(列名,0)
-
案例:统计学生表当中,数学成绩的平均分
SELECT AVG(IFNULL(数学成绩,0)) FROM 学生表;
-
-
分页查询(mysql数据库专属的LIMIT)
-
基础格式
LIMIT 是限制的意思,所以 LIMIT 的作用就是限制查询记录的条数。 SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
LIMIT 起始位置,每页条数
-
计算公式:起始位置 = (当前页数-1)*每页条数
-
案例: 每页条数显示4条,在第6页的写法
SELECT * FROM 表名称 LIMIT 20,4; -- (6-1)*4 =20
-
-
多表查询
- 语法
select 列名列表 from 表名列表 where....
-
查询思路
- 确定查询的表 FROM 表名称…
- 查询的条件 WHERE 条件… —> 需要查看表结构(主外键) 大小…
3. 查询的结果 SELECT 结果…
-
where 和 having 的区别
-
where 是分组之前,不满足不参与分组 having 是分组之后,不满足没有结果
-
having 聚合函数 where 不跟聚合函数
-
-
笛卡尔积
-
语法:
SELECT * FROM 表名称1,表名称2;
- 查询出来的数据条目数:
a.计算公式:表名称1的条目数x表名称2的条目数
b.例如:表1有4条,表2里面9条. 查询的结果是 4*9 = 36 条
- 查询出来的数据条目数:
-
-
多表查询的分类:
-
内连接查询:
-
隐式内连接: 使用where条件取消除无用数据
-
语法:
SELECT * FROM 表1,表2 WHERE 表1.列1 = 表2.列2; -- 标准写法 SELECT * FROM 表1 别名1,表2 别名2 WHERE 别名1.列1 = 别名2.列2; -- 别名的写法
-
-
显式内连接:
-
语法:
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列1 = 表2.列2; -- 完整格式 SELECT * FROM 表1 JOIN 表2 ON 表1.列1 = 表2.列2; -- 省略INNER的格式
- 内连接查询:
- 从哪些表中查询数据
- 条件是什么
- 查询哪些字段
a.特点:
两个表当中交集的部分.取数据多的。
表1,有8条数据,6条数据在交集当中.
表2,有20条数据,10条数据在交集当中.
那么采用内连接查询的结果是 10 条数据。
b.两个表内连接查询的时候,
表1有10条数据,表2有5条数据.请问.最多有多少条数据,最少有多少条数据?
最多10条,最少0条。 -
-
外链接查询:
-
左外连接:
-
语法
SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.列1 = 表2.列2; -- 完整格式 SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列1 = 表2.列2; -- 省略OUTER的格式
-
作用:查询左表所有数据及其交集部分
-
右外连接:
-
语法
SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.列1 = 表2.列2; -- 完整格式 SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列1 = 表2.列2; -- 省略OUTER的格式
-
作用:查询右表所有数据及其交集部分
-
-
-
-
子查询
-
概念:查询中嵌套查询,称嵌套查询为子查询。
-
子查询的不同情况
-
子查询的结果可以是单行单列的
子查询作为条件 使用运算符去判断 > >= < <= <> !=
案例: -- 查询最高工资的员工信息 原始做法: SELECT MAX(gongzi) FROM yuangong; -- 查询到最高的员工工资 SELECT * FROM yuangong WHERE gongzi = 查询到的结果; -- 查询到的最高工资作为条件.再查询他信息 子查询的情况: SELECT * FROM yuangong WHERE gongzi = (SELECT MAX(gongzi) FROM yuangong);
-
子查询结果是多行单列
子查询作为条件 使用运算符IN( (选项1,选项2,选项3) )进行
案例: -- 查询财务部和市场部的员工信息 原始做法: SELECT id FROM yuangong WHERE name IN ('财务部','市场部'); -- 查询到财务部和市场部的ID SELECT * FROM yuangong WHERE id = 查询到的id结果; -- 通过查询到的结果作为条件,查询满足条件的所有员工信息 子查询的情况: SELECT * FROM yuangong WHERE id IN (SELECT id FROM yuangong WHERE name IN ('财务部','市场部'));
-
子查询结果是多行多列的,,作为虚拟表,进行连接查询
案例: -- 查询入职日期是2011-11-11日之后的员工信息和部门信息 子查询的情况: SELECT * FROM bumen t1 ,(SELECT * FROM yuangong WHERE yuangong.join_date > '2011-11-11') t2 WHERE t1.id = t2.bumen_id; 采用普通内连接: SELECT * FROM bumen t1 , yuangong t2 WHERE t1.id = t2.bumen_id AND t2.join_date > '2011-11-11';
-
-
-
-
-
约束
-
非空约束:某一列不能为 null。
1.名称:NOT NULL
2.效果:不能添加为空的数据.(“姓名”,“商品编号”)
3.三种操作的方式
a. 创建表的时候,添加非空约束CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 NOT NULL);
b.表创建完毕之后,再添加非空约束
ALTER TABLE 表名称 MODIFY 列名称 数据类型 NOT NULL;
c.删除非空约束
ALTER TABLE 表名称 MODIFY 列名称 数据类型;
-
主键约束:用来唯一标识数据库中的每一条记录。
-
名称:
PRIMARY KEY 主键的关键字
AUTO_INCREMENT 自动增长的关键字(根据上一行的数据进行自动增长) -
效果
主键效果: 非空并且唯一,而且在一张表当中只能有一个主键
自动增长: 在上一行的基础上,自动加上1 -
三种操作的方式
a.创建表的时候,添加主键约束CREATE TABLE 表名称 (列名1 数据类型1 PRIMARY KEY AUTO_INCREMENT,列名2 数据类型2);
b.表创建完毕之后,再添加主键约束【条件:不能有重复的】
ALTER TABLE 表名称 MODIFY 列名称 数据类型 PRIMARY KEY AUTO_INCREMENT;
c.删除主键约束
ALTER TABLE 表名称 DROP PRIMARY KEY; -- 删除主键约束 ALTER TABLE 表名称 MODIFY 自动增长的列名称 自动增长的数据类型; -- 删除自动增长的效果
-
-
外键约束:在从表中与主表主键对应的那一列。
- 名称:FOREIGN KEY
- 效果:让两个表之间产生关联,自己表的"外键"连上别人表的"主键"
- 三种操作的方式
a. 创建表的时候,添加外键约束
CREATE TABLE 表名称( 列名1 数据类型1, 列名2 数据类型2, CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键) );
b. 表创建完毕之后,再添加外键约束
ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键);
c. 删除外键约束
ALTER TABLE 表名称 DROP FOREIGN KEY 外键别名;
-
外键级联操作
a.级联的含义:
多个表主外键关系删除和修改的时候,彼此之间会受到影响
b.两个级联的关键字
级联更新 ON UPDATE CASCADE
级联删除 ON DELETE CASCADE
c.添加级联操作的语法ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键) ON UPDATE CASCADE ON DELETE CASCADE;
-
唯一约束:表中某一列不能出现重复的值。
1.名称:UNIQUE
2.效果:不能添加重复的数据,NULL只能有一个.(“手机号码”,“身份证”,“邮箱”)
3.三种操作的方式
a. 创建表的时候,添加唯一约束CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 UNIQUE);
b. 表创建完毕之后,再添加唯一约束【条件:不能有重复的】
ALTER TABLE 表名称 MODIFY 列名称 数据类型 UNIQUE;
c. 删除唯一约束
ALTER TABLE 表名称 DROP INDEX 列名称;
-
-
多表关系
- 一对多
- 实现方式:在多的一方建立外键,指向一的一方的主键。
- 多对多
- 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
- 一对一
- 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
- 一对多
-
范式
设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
1.第一范式(1NF) 每一项都是不可以分割的原子数据.不能存在合并项 2.第二范式(2NF) 抽取了核心直接依赖关系,其他间接关系放在一边 3.第三范式(3NF) 再次抽取间接表当中的依赖关系. 4.巴斯-科德范式(BCNF) 5.第四范式(4NF) 6.第五范式(5NF) 完美范式
- 函数依赖
- 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
例如:学号–>姓名。 (学号,课程名称) --> 分数 - 完全函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
例如:(学号,课程名称) --> 分数 - 部分函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
例如:(学号,课程名称) – > 姓名 - 传递函数依赖:A–>B, B – >C . 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A
例如:学号–>系名,系名–>系主任 - 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
例如:该表中码为:(学号,课程名称) - 主属性:码属性组中的所有属性
- 非主属性:除过码属性组的属性
- 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
- 函数依赖
-
DCL:管理用户,授权
-
管理用户
-
创建用户:
语法: CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; -- 主机名 本机 localhost 任意主机 %
-
删除用户:
语法: DROP USER '用户名'@'主机名';
-
修改用户密码:
语法1: UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名'; 语法2: SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
-
查询用户:
语法: USE mysql; SELECT * FROM user; -- 先要使用mysql自己的数据库,然后查询user表
-
忘记了超级管理员用户密码之后的解决方案
1. cmd 输入 net stop mysql -- 停止mysql服务 需要管理员运行该cmd 2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables 3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功 4. use mysql; 5. update user set password = password('你的新密码') where 6ser = 'root'; 7. 关闭两个窗口 8. 打开任务管理器,手动结束mysqld.exe 的进程 9. 启动mysql服务 10. 使用新密码登录。
-
-
权限管理:
-
查询权限:
语法: SHOW GRANTS FOR '用户名'@'主机名';
-
授予权限:
语法: GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; -- 标准格式 语法: GRANT ALL ON *.* TO 'zhangsan'@'localhost'; -- 给张三本机用户授予所有的权限
-
撤销权限:
语法: REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; 案例: REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%'; -- 撤销李四在所有机器上面的 UPDATE 权限
-
-
-
事务
-
事务的基本介绍
-
概念:
- 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
-
操作:
- 开启事务: start transaction;
- 回滚(出问题了,需要回到开启事务之前) :rollback;
- 提交 (正常执行,将改变的数据提交结束事务) :commit;
-
查看和修改事务的提交方式:
1.查看事务的提交方式
SELECT @@autocommit;
2.修改事务的提交方式
SET @@autocommit = 0; -- 0表示手动提交,1表示自动提交
-
MySQL数据库中事务默认自动提交
-
-
事务的四大特征:
- 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
- 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
- 隔离性:多个事务之间。相互独立。
- 一致性:事务操作前后,数据总量不变
-
事务的隔离级别(了解)
-
概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
-
存在问题:
- 脏读:一个事务,读取到另一个事务中没有提交的数据
- 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
- 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
-
隔离级别:
- read uncommitted:读未提交
- 产生的问题:脏读、不可重复读、幻读
- read committed:读已提交 (Oracle)
- 产生的问题:不可重复读、幻读
- repeatable read:可重复读 (MySQL默认采用)
- 产生的问题:幻读
- serializable:串行化
- 可以解决所有的问题,效率低
- 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
- read uncommitted:读未提交
-
设置和查看隔离级别
- 数据库查询隔离级别:
- select @@tx_isolation;
- 数据库设置隔离级别:
- set global transaction isolation level 级别字符串;
- 数据库查询隔离级别:
-
-
-
数据库的备份和还原
-
命令行:
-
备份
mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
-
还原:
-
登录数据库
-
创建数据库
-
使用数据库
-
执行文件.source 文件路径
source d:/文件.sql;
-
-
-
-
SQLyog快捷键
Ctrl+M 创建一个新的连接 Ctrl+N 使用当前设置新建连接 Ctrl+F4 断开当前连接 对象浏览器 F5 刷新对象浏览器(默认) Ctrl+B 设置焦点于对象浏览器 SQL 窗口 Ctrl+T 新建查询编辑器 Ctrl+E 设置焦点于 SQL 窗口 Ctrl+Y 重做 Ctrl+Z 撤销 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+H 替换 Ctrl+G 转到 Ctrl+O 在 SQL 窗口打开一个 SQL 文档 Ctrl+Shift+U 使选择内容大写 Ctrl+Shift+L 使选择内容小写 Ctrl+Shift+C 注释 SQL 窗口选择内容 Ctrl+Shift+R 从选择内容删除注释 Ctrl+Shift+T 插入模板 Ctrl+Enter 列出所有的标签 Ctrl+Space 列出匹配的标签 Ctrl+Shift+C 注释 执行查询 F8 执行当前查询并编辑结果集 F9 执行当前查询(默认) Ctrl+F9 执行选定查询(默认) Shift+F9 执行全部查询(默认) 粘贴 SQL 语句 Alt+Shift+I 插入语句 Alt+Shift+U 更新语句 Alt+Shift+D 删除语句 Alt+Shift+S 选择语句 结果 F11 插入更新对话框 Ctrl+R 设置焦点于结果面板中的活动标签 Ctrl+L 切换结果窗口/表数据以表格/文本方式显示 Ctrl+Alt+C 以 CSV, SQL, Excel 等导出表数据 Ctrl+Alt+E 以 SQL 转储文件备份数据 Ctrl+Shift+M 从 CSV 导入数据 Ctrl+Shift+E 导出结果集 Alt+1…n 在结果窗口中选择第n个标签 显示/隐藏 Ctrl+1 显示/隐藏 对象浏览器 Ctrl+2 显示/隐藏 结果面板 Ctrl+3 显示/隐藏 查询窗口 数据库/数据表 Ctrl+D 创建数据库 F6 更改 数据库/数据表的结构/索引/视图/存储过程/函数/触发器/事件 F2 重命名 数据表/视图/触发器/事件 Shift+Del 截断 数据库/数据表 F7 管理索引窗口 F10 关联/外键 Ctrl+Alt+R 重新排序字段 Ctrl+Alt+T 数据表诊断 Ctrl+Alt+F 刷新对话框 Ctrl+Shift+Alt+S 以 HTML 格式创建数据库架构 Ctrl+Shift+Q 从 SQL 转储文件恢复数据库 增强工具 Ctrl+W 数据库同步向导 Ctrl+Q 架构同步工具 Ctrl+Alt+O 数据迁移工具包 Ctrl+Alt+N 通知服务向导 Ctrl+Alt+S 计划备份 Ctrl+K 查询创建器 Ctrl+Alt+D 架构设计器 用户管理 Ctrl+U 添加用户 Ctrl+Alt+U 编辑用户 Ctrl+Shift+W 管理用户权限 个人文件夹 Ctrl+Shift+F 添加当前 SQL 语句到个人文件夹 其它 F1 帮助 F12 快捷键窗口 Ctrl+C 复制 Ctrl+A 全选 Ctrl+F/F3 查找 (SQL 窗口/以文本方式显示的结果窗口和表数据) Ctrl+S 保存 Ctrl+PgUp 切换到上一标签 Ctrl+PgDown 切换到下一标签 DEL 删除选定 Alt+L 关闭标签 Alt+F4 退出程序