MySql数据库服务器的理解

                                       MySql数据库服务器

一。服务器:

          1.服务器是一种软件,不是硬件,不是计算机。
      2.不同服务器负责调用不同的文件类型


二。表文件,数据库,数据库服务器

          1.表文件:

               1) 表文件是以".frm"结尾一种文件
           2) 存在于服务端计算机硬盘上
           3) 以数据行形式进行数据存储的文件

          2.表文件结构:
                               student.frm

                  标题行   sid      sname     sex    age   home

          数据行   10       mike      男     23    河南
                   
               20       allen     女     22    河北


          3.数据库:

              开发人员将用于存放表文件的文件夹称为【数据库】

          4.数据库服务器

              一种专门对表文件进行调用和管理的软件

三。SQL命令:

           1.全称,Struct  Query  Language, 结构化查询编程语言

       2.作用,用户通过SQL命令向数据库服务器发送请求,用于对
               表文件进行调用管理
           3.特点,SQL语法结构与中国人日常用语结构非常相似,包含主谓宾

四。数据库服务器分类:

            1.关系型数据库服务器
               管理的表文件彼此之间往往具有隶属关系特征,可以完整
           描述一段数据,但是在查询时由于涉及数据较多,因此查询
           速度并不理想
         

        2.非关系数据库服务器【HashMap(key-value)】
             
           管理表文件都是独立,无法描述一段完整的数据
           但是由于每次查询的大数据较少,因此查询速度非常快

五。关系型数据库服务器分类:

            1. 甲骨文公司: Oracle , MySql
        
        2. 微软公司  : SqlServer pk MySql

 六。MySql服务器启动与关闭:

             1.通过windows系统帮助启动与关闭MySql服务器

           [开始]--->输入命令【services.msc】进入到windows系统服务器管理窗口

             2.以【管理员身份】通过DOS窗口输入命令,要求MySql服务器启动与关闭

           ***如果需要在DOS窗口中向mysql服务器发送命令,必须配置path环境变量
             path= C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin
 
               ***配置完毕后
               DOS窗口:  net start mysql           启动mysql服务器
                      net stop  mysql           关闭mysql服务器
               ****如果不是以管理员身份来输入上述命令,此时得到【错误5】提示

  七。登录MySql服务器命令

               1.命令格式:  mysql -u用户名  -p密码

  八。数据库管理:

               1.MySql服务器管理数据库位置:C:\ProgramData\MySQL\MySQL Server 5.5\data

           2.查看所有的数据库名   show databases;

           3.创建一个数据库       create database 数据库名;

           4.删除一个数据库       drop database 数据库名;

 九。表文件管理:

               1. 查看指定的数据库下所有的表文件名
                                     USE  数据库名;
                     show tables;

               2.在指定的数据库下创建表文件
                                     use  数据库;
                     create table 表文件名(
                         字段名  数据类型名,
                         字段名  数据类型名  #最后一个字段不要以","
                     
                     )

               3.删除一个表文件
                                    drop table 表文件名;

               4.查看表文件字段信息
                                    show  create table 表文件名;

               5.为表文件添加字段
                                    alter table 表文件名  add  新字段名  数据类型名;

               6.删除表文件字段
                                    alter table 表文件名  drop 字段名;


十。表文件数据行管理:

               1.插入命令: 负责要求MySql服务器向指定的表文件添加数据行

                         insert into 表文件名(字段名1,字段名2,字段名3)
                 values(值1,值2,'值3');

               2.查询命令: 负责要求MySql服务器将指定的表文件数据行展示

                         select  *  from 表文件名;

               3.删除命令:负责要求MySql服务器将指定的表文件数据行删除

                         delete  from 表文件名; #删除表文件中所有的数据行

                 delete  from 表文件名  where 判断条件; #将满足条件的数据行进行删除

               4.更新命令:负责要求MySql服务器将指定的表文件数据行更新

                          update 表文件名 set 字段名=值,字段名2=值 ;将所有数据行指定字段的值赋值新值

                  update 表文件名 set 字段名=值,字段名2=值 where 判断条件; 将满足条件的数据行字段信息更新


十一。高级插入命令:

               1.一次性向表文件插入多行数据
                      INSERT INTO 表文件名(字段1,字段2,字段3)
              values
              (值1,值2,值3),
              (值10,值20,值30);

               2.简化版插入命令。如果插入数据时每一个字段都能赋值,此时插入命令不需要指定
             字段名,插入值顺序此时需要与表文件字段顺序保持一致

                  insert into 表文件名 values(值1,值2,值3)

               3.数据行备份命令:可以将表A中数据行复制到表B,(表A与表B字段结构完全一致)

                      insert into B  select  * from A

十二。表文件备份命令: 将表文件A进行一份备份,备份生成的表文件B

                         create table B select * from A


十三。mysql服务器字符串类型:

      1.分类: varchar  与   char

      2.区别:【面试】

               varchar(m): 定长可变字符串

                       定长: 当前字段可以存储的字符个数是固定的

                       ename  varchar(3)  # 3表示ename字段可以存储3个英文字符或则3个中文
                           可变: ename字段在硬盘上存储字符空间可以根据实际情况进行【缩小】
                        ename varchar(3)
                    insert into test1 values('abc')  #硬盘  【a】【b】【c】
                    insert into test1 values('ef')   #硬盘  【e】【f】

              char(m):    定长不可变字符串

                      定长: 当前字段可以存储的字符个数是固定的
                     sex char(1)    #1表示sex字段可以存储1个英文字母或则1个中文
                          不可变:
                      sex字段在硬盘上存储字符空间是固定的

                  sex char(3)
                  insert into test1 values('abc')   【a】 【b】 【c】
                  insert into test1 values('ef')    【e】 【f】 【空格】

                  针对char类型字段进行数据读取时,MySql服务器自动将字符串中【结尾处
                  空格去掉】

                           如果插入字符串以空格结尾,不要添加到由char类型修饰的字段

十四: 约束:

           1.非空约束: 要求管理的字段不能存储null值

       2.唯一性约束:要求管理的字段存储值不能有重复,但是可以存储null值

       3.主键约束:  管理主键字段,要求主键字段内容不能为null同时也不能出现重复值

       4.外键约束:   管理外键字段,要求外键字段的值应该来自于关联的一方表中主键字段的值
                                    但是可以存储null值

                          ALTER TABLE 多方表
              ADD CONSTRAINT  外键约束对象名  foreign key(外键字段名)
              REFERENCES  一方表(主键字段)

十五。索引(index)

          1.查询速度问题:
                     由于表文件存放数据行会随着时间推移,会越来越多。
             where命令在执行时需要对表文件所有数据行进行遍历
             所以时间越久,数据行越大,where命令执行时消耗时间就会不断增加

          2.索引作用:
                     在表文件数据行增加时候,不会大幅度降低查询语句执行效率
             

          3.索引工作原理:
                      数据1 【100,80,45,50,90,200,17】  17
              数据2 【17,45,50,80,90,100,200】  17
              分别从两组数据得到最小值,通过实验发现
              从【数据2】得到最小值消耗时间相对较少
              从【数据1】进行判断判断时
              首先,将数据进行一次排序
              然后,根据排序顺序定位最小值
              由于【数据2】事先排好了顺序。因此直接
              从第一位抓取数据,避免排序过程,因此执行效率高

              索引工作原理,事先将字段中内容进行排序,在WHERE
              命令进行定位时,避免对表中所有的数据行进行遍历
              将会提升查询速度

          4.索引管理:

                     1)将字段内容交给某个索引进行管理

               create index 索引名  on 表名(字段)

                         2)查询表文件关联的索引

                show index from 表名
                ***在为表文件绑定【主键约束】,【唯一性约束】,【外键约束】时
                   mysql服务器自动将当前字段数据进行排序并交给指定索引管理

                         3)删除表文件指定索引
                DROP INDEX 索引名 ON 表名
十六。执行计划(explain)

             1.命令格式:   explian  查询语句

         2.命令作用:  展示当前查询得到结果是否通过索引来进行定位
                        DBA通过执行计划了解在本次查询过程,是否使用预先创建好的索引

             3.执行计划对于查询语句执行效率判断

                         1)在执行计划中,通过type属性展示查询语句执行效率
                 2)执行效率分类:[慢----快]

                     ALL:WHERE对表文件所有数据行进行遍历,才得到了查询结果
                      这种级别查询语句,随着数据行增加导致执行速度大幅度
                      降低(DBA来说,极力避免这种级别查询)

                                 type:WHERE对表文件所有数据行进行遍历,只不过在SELECT
                      抓取字段内容时,从索引中抓取。
                      这种级别虽然在抓取数据速度有所提升,但是依然面对
                      随着数据行增加导致执行速度大幅度(DBA来说,极力避免这种级别查询)

                      select * from emp ;   # all
                      create index ename_index on emp(ename)
                      select ename from emp; #type,此时对于查询速度提升是非常微小

                                 range:WHERE不会对表文件数据行进行遍历,而是直接从索引得到
                       定位的数据行行数,将大幅度提升查询效率。
                       这是DBA进行SQL优化时要保证最低级别。但是这种级别存在[不稳定性]
                       当字段内容发生变化时,导致索引失效
                        explain select * from emp where sal<=1000  # all         14

                    create index sal_index on emp(sal)

                    explain select * from emp where sal<=1000 # range        2

                    ****mysql服务器如果发现从索引得到数据行行数达到了表文件总行数
                        1/3时,此时考虑运行成本问题此时放弃使用索引
                        explain select * from emp where sal<=1250 # all      14
                       
                                  ref:   WHERE不会对表文件数据行进行遍历,而是直接从索引得到
                         定位的数据行行数,同时在这种情况根据定位条件一次只能
                     得到一个数据行,属于比较稳定执行效率.DBA努力达到的优化
                     程度

                                  const: 根据主键字段上索引进行定位,是执行效率最快的。但是
                         在实际使用过程中,几乎不会被用到的。

十七:视图

       1.定义:
                是MySql服务器中一个对象,用于存储查询语句。
        目的提供查询语句使用效率,避免在多处地方
        重复性开发相同查询语句

       2.命令:

                1)将查询语句交给一个视图对象管理

           CREATE VIEW  视图对象名  AS  查询语句

                2)通过视图对象调用管理查询语句

           select *  from 视图对象名
        3.额外功能:
              视图对象存储一个查询语句,同时视图对象拥有对
          当前查询语句关联的表文件操作能力

         1)通过视图对象对关联表文件数据行进行插入
         2)通过视图对象对关联表文件数据行进行删除
         3)通过视图对象对关联表文件数据行进行更新

        4.视图作用:【面试】

              1)提高了查询语句复用性,避免了在多处地方重复进行查询语句开发行为

          2)隐藏业务中涉及表关系,开发人员通过视图进行操作时是不会知道其具体
             操作的表

十八。存储引擎:

        1.定义:
             是MySql服务器对应表文件内容管理方式。目前MySql服务器主要采用
         INNODB,MyIsam

        2.管理命令:


              1)查看MySql服务器支持存储引擎种类

             show engines;

                  2)修改MySql服务器默认存储引擎

           C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini下
           default-storage-engine=INNODB  进行修改 myIsam

                  3)设置表文件依赖存储引擎

            show create table 表名;

            alter table 表名  engine=存储引擎

         3.MyIsam存储引擎特征:


              1.在对表文件内容进行修改时,不会进行备份操作。
            提高操作执行效率,但是在操作完毕后无法取消本次操作

                  2.MyIsam存储引擎 使用三个文件存储表文件信息

             test1.frm : 存储表文件字段信息
             test1.myd : 存储表文件数据行信息
             test1.myi : 存储表文件字段关联的索引信息

         4.INNODB存储引擎:

              1.在对表文件内容进行修改时,首先进行一次备份。
            在进行操作,因此执行效率相对较慢。
            但是在执行完毕后,由于有备份存在,可以使用
            备份取消当前操作,增加数据安全性

                  2.INNODB存储引擎,使用一个文件存储表文件信息

             test1.frm: 存储表文件字段信息
                        存储表文件数据行信息
                存储表文件字段关联的索引信息 


十九:事务(transaction)

        1.介绍:
            事务是MySql服务器提供一个管理对象,用于对当前表文件备份进行管理


        2.使用:

            start transaction; #通知MySql服务器提供一个事务对象,这个事务对象对接下来操作产生所有备份进行管理

        delete from emp where deptno=30 # 生成emp.bak

        delete from dept where deptno=30 #声明dept.bak

        rollback;   #通知mysql服务器将本次操作中所有备份信息覆盖到表文件,来取消本次操作

        commit;     #通知mysql服务器将本次操作中生成所有备份信息进行删除,称之为提交操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值