中软Day12——数据库详解

中软Day12

数据库

  1. 数据库的基本概念
    1. 数据库的英文单词: DataBase 简称 : DB DBA --> 数据库管理员

    2. 什么数据库?

      • 用于存储和管理数据的仓库。
    3. 数据库的特点:

      1. 持久化存储数据的。其实数据库就是一个文件系统
      2. 方便存储和管理数据
      3. 使用了统一的方式操作数据库 – SQL

    常见的数据库 Oracle sqlserver mysql 关系型数据库 redis MongoDB NoSql(not only)

  2. MYSQL数据库软件
    1. 安装

    2. 卸载

      1. 去mysql的安装目录找到my.ini文件 配置文件
        • 复制 datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data/”
      2. 卸载MySQL
      3. 删除C:/ProgramData目录下的MySQL文件夹。
      4. 删除注册表
    3. 配置

      • MySQL服务启动
        1. 手动。
        2. cmd–> services.msc 打开服务的窗口
        3. 使用管理员打开cmd
          • net start mysql : 启动mysql的服务
          • net stop mysql:关闭mysql服务
      • MySQL登录
        1. mysql -uroot -p密码
        2. mysql -hip -uroot -p连接目标的密码
        3. mysql --host=ip --user=root --password=连接目标的密码
      • MySQL退出
        1. exit
        2. quit
  3. SQL

    • 什么是SQL?
      Structured Query Language:结构化查询语言
      其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。

    • SQL通用语法

      1. SQL 语句可以单行或多行书写,以分号结尾。 js 可以写也可以不写分号。

      2. 可使用空格和缩进来增强语句的可读性。

      3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

      4. 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 等
  4. DDL:操作数据库,表

    1. 操作数据库:CRUD

      1. 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;
          
      2. R(Retrieve):查询

        • 查找所有数据库

          show databases
          
        • 查询字符集 查询某个数据库的创建语句

          show create databse 数据库名称
          
      3. U(Update):修改

        • 修改数据库的字符集

          alter database 数据库名称 character set 字符集名称;
          
      4. D(Delete):删除

        • 删除数据库

          drop database 数据库名称;
          
        • 判断数据库存在,存在再删除

          drop database if exists 数据库名称;
          
      5. 使用数据库

        • 查询当前正在使用的数据库名称

          select database();
          
        • 使用数据库

          use 数据库名称;
          
    2. 操作表

      1. C(Create):创建

        1. 语法

          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个

      2. R(Retrieve):查询

        • 查询某个数据库中所有的表名称

          show tables;
          
        • 查询表结构

          desc 表名;
          
      3. U(Update):修改

        1. 修改表名

          alter table 表名 rename to 新的表名;
          
          1. 修改表的字符集
          alter table 表名 character set 字符集名称;
          
          1. 添加一列
          alter table 表名 add 列名 数据类型;
          
          1. 修改列名称 类型
          alter table 表名 change 列名 新列别 新数据类型;
          alter table 表名 modify 列名 新数据类型;
          
      4. 删除列

        alter table 表名 drop 列名;
        
    3. D(Delete):删除

           * drop table 表名;
        * drop table  if exists 表名;
      
  5. DML:增删改表中数据

    1. 添加数据

      • 语法

        * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
        		insert into 表名(id,name,age) values(值1,值2,...值n);
        
      • 注意

        1. 列名和值要一一对应。

        2. 如果表名后,不定义列名,则默认给所有列添加值

          insert into 表名 values(值1,值2,...值n);
          
        3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来

    2. 删除数据

      • 语法

        delete from 表名 [where 条件]
        
      • 注意

        1. 如果不加条件,则删除表中所有记录。

        2. 如果要删除所有记录

           delete from 表名;   
          

          不推荐使用 有多少条记录就执行多少次删除操作

          TRUNCATE TABLE 表名;
          

          推荐使用 效率高 删除表,再创建一张一样的表

    3. 修改数据:

      • 语法:
      	update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
      
      • 注意:如果不加任何条件,则会将表中所有记录全部修改。
  6. DQL:查询表中的记录

     select * from 表名;
    怎么优化数据库     主从分离  读写分离   主表(读),从表(写)  
    
    • 语法

      select
      		字段列表
      	from
      		表名列表
      	where
      		条件列表
      	group by
      		分组字段
      	having
      		分组之后的条件
      	order by
      		排序
      	limit
      		分页限定
      
    • 基础查询

      1. 多个字段的查询

        select 字段名1,字段名2... from 表名;
        
        • 注意: 如果查询所有字段,则可以使用*来替代字段列表。
      2. 去除重复:

        distinct
        
      3. 计算列

        • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
      4. 起别名:

        • as 也可以省略
    • 条件查询

      1. where子句后跟条件

      2. 运算符

        	* > 、< 、<= 、>= 、= 、<>(不等于 !=)
        	* 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; 
        
    • 聚合函数

      • 常用的聚合函数

        1. count:计算个数
          1. 一般选择非空的列:主键
          2. count(*)
        2. max:计算最大值
        3. min:计算最小值
        4. sum:计算和
        5. avg:计算平均值
      • 注意事项
        聚合函数排除为NULL值的列.解决方案:

      • 不采用 为NULL的列

      • 函数 IFNULL(列名,0)

      • 案例:统计学生表当中,数学成绩的平均分

         SELECT AVG(IFNULL(数学成绩,0)) FROM 学生表;
        
    • 分页查询(mysql数据库专属的LIMIT)

      1. 基础格式

        LIMIT 是限制的意思,所以 LIMIT 的作用就是限制查询记录的条数。
        SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
        
        LIMIT 起始位置,每页条数
        
      2. 计算公式:起始位置 = (当前页数-1)*每页条数

      3. 案例: 每页条数显示4条,在第6页的写法

          SELECT * FROM 表名称 LIMIT 20,4; -- (6-1)*4 =20
        
    • 多表查询

      • 语法
       	select
    		列名列表
       	from
       		表名列表
       	where....
    
    • 查询思路

      1. 确定查询的表 FROM 表名称…
    1. 查询的条件 WHERE 条件… —> 需要查看表结构(主外键) 大小…
      3. 查询的结果 SELECT 结果…
    • where 和 having 的区别

      1. where 是分组之前,不满足不参与分组 having 是分组之后,不满足没有结果

      2. having 聚合函数 where 不跟聚合函数

    • 笛卡尔积

      1. 语法:

          SELECT * FROM 表名称1,表名称2;
        
        1. 查询出来的数据条目数:
          a.计算公式:表名称1的条目数x表名称2的条目数
          b.例如:表1有4条,表2里面9条. 查询的结果是 4*9 = 36 条
    • 多表查询的分类:

      1. 内连接查询:

        1. 隐式内连接: 使用where条件取消除无用数据

          • 语法:

             SELECT * FROM 表1,表2 WHERE 表1.列1 = 表2.列2;  -- 标准写法
                    SELECT * FROM 表1 别名1,表2 别名2 WHERE 别名1.列1 = 别名2.列2;  -- 别名的写法 
            
        2. 显式内连接:

        • 语法:

            SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列1 = 表2.列2; -- 完整格式
                  SELECT * FROM 表1 JOIN 表2 ON  表1.列1 = 表2.列2; -- 省略INNER的格式
          
        1. 内连接查询:
        2. 从哪些表中查询数据
        3. 条件是什么
        4. 查询哪些字段

        a.特点:
        两个表当中交集的部分.取数据多的。
        表1,有8条数据,6条数据在交集当中.
        表2,有20条数据,10条数据在交集当中.
        那么采用内连接查询的结果是 10 条数据。
        b.两个表内连接查询的时候,
        表1有10条数据,表2有5条数据.请问.最多有多少条数据,最少有多少条数据?
        最多10条,最少0条。

      2. 外链接查询:

        • 左外连接:

          • 语法

             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的格式
              
            • 作用:查询右表所有数据及其交集部分

      3. 子查询

        • 概念:查询中嵌套查询,称嵌套查询为子查询。

        • 子查询的不同情况

          1. 子查询的结果可以是单行单列的

            子查询作为条件 使用运算符去判断 > >= < <= <> !=

            案例: 
            -- 查询最高工资的员工信息
            
            原始做法:
            SELECT MAX(gongzi) FROM yuangong;  -- 查询到最高的员工工资
            SELECT * FROM yuangong WHERE gongzi = 查询到的结果;  -- 查询到的最高工资作为条件.再查询他信息
            
            子查询的情况:  
            SELECT * FROM yuangong WHERE gongzi = (SELECT MAX(gongzi) FROM yuangong);
            
          2. 子查询结果是多行单列

            子查询作为条件 使用运算符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 ('财务部','市场部')); 
            
          3. 子查询结果是多行多列的,,作为虚拟表,进行连接查询

            案例:
            -- 查询入职日期是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';
            
  7. 约束
    • 非空约束:某一列不能为 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 列名称 数据类型;
      
    • 主键约束:用来唯一标识数据库中的每一条记录。

      1. 名称:
        PRIMARY KEY 主键的关键字
        AUTO_INCREMENT 自动增长的关键字(根据上一行的数据进行自动增长)

      2. 效果
        主键效果: 非空并且唯一,而且在一张表当中只能有一个主键
        自动增长: 在上一行的基础上,自动加上1

      3. 三种操作的方式
        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 自动增长的列名称 自动增长的数据类型;  -- 删除自动增长的效果
        
    • 外键约束:在从表中与主表主键对应的那一列。

      1. 名称:FOREIGN KEY
      2. 效果:让两个表之间产生关联,自己表的"外键"连上别人表的"主键"
      3. 三种操作的方式
        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 外键别名;
      
      1. 外键级联操作
        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 列名称;
      
  8. 多表关系

    • 一对多
      • 实现方式:在多的一方建立外键,指向一的一方的主键。
    • 多对多
      • 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
    • 一对一
      • 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
  9. 范式

    设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    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
        例如:学号–>系名,系名–>系主任
      • 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
        例如:该表中码为:(学号,课程名称)
      • 主属性:码属性组中的所有属性
      • 非主属性:除过码属性组的属性
  10. DCL:管理用户,授权
    1. 管理用户

      1. 创建用户:

        语法: CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';  -- 主机名 本机 localhost 任意主机 %
        
      2. 删除用户:

            语法: DROP USER '用户名'@'主机名';
        
      3. 修改用户密码:

            语法1: UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
            语法2: SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
        
      4. 查询用户:

            语法: USE mysql;  SELECT * FROM user;  -- 先要使用mysql自己的数据库,然后查询user表
        
      5. 忘记了超级管理员用户密码之后的解决方案

            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. 使用新密码登录。
        
    2. 权限管理:

      1. 查询权限:

        语法: SHOW GRANTS FOR '用户名'@'主机名';
        
      2. 授予权限:

         语法: GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';  -- 标准格式
                语法: GRANT ALL ON *.* TO 'zhangsan'@'localhost';  -- 给张三本机用户授予所有的权限
        
      3. 撤销权限:

        语法: REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
                案例: REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';  -- 撤销李四在所有机器上面的 UPDATE 权限
        

  11. 事务

    1. 事务的基本介绍

      1. 概念:

        • 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
      2. 操作:

        1. 开启事务: start transaction;
        2. 回滚(出问题了,需要回到开启事务之前) :rollback;
        3. 提交 (正常执行,将改变的数据提交结束事务) :commit;
      3. 查看和修改事务的提交方式:

        1.查看事务的提交方式

        SELECT @@autocommit;    
        

        2.修改事务的提交方式

        SET @@autocommit = 0;  -- 0表示手动提交,1表示自动提交 
        
      4. MySQL数据库中事务默认自动提交

    2. 事务的四大特征:

      1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
      2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
      3. 隔离性:多个事务之间。相互独立。
      4. 一致性:事务操作前后,数据总量不变
    3. 事务的隔离级别(了解)

      • 概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。

      • 存在问题:

        1. 脏读:一个事务,读取到另一个事务中没有提交的数据
        2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
        3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
      • 隔离级别:

        1. read uncommitted:读未提交
          • 产生的问题:脏读、不可重复读、幻读
        2. read committed:读已提交 (Oracle)
          • 产生的问题:不可重复读、幻读
        3. repeatable read:可重复读 (MySQL默认采用)
          • 产生的问题:幻读
        4. serializable:串行化
          • 可以解决所有的问题,效率低
        • 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
      • 设置和查看隔离级别

        • 数据库查询隔离级别:
          • select @@tx_isolation;
        • 数据库设置隔离级别:
          • set global transaction isolation level 级别字符串;
  12. 数据库的备份和还原

    • 命令行:

      • 备份

        mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
        
      • 还原:

        1. 登录数据库

        2. 创建数据库

        3. 使用数据库

        4. 执行文件.source 文件路径

          source d:/文件.sql;
          
  13. 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 退出程序
    
    

你可能感兴趣的:(中软Day12——数据库详解)