Mysql 数据库引擎:

    数据库引擎是用于存储、处理和保护数据的核心服务

    Mysql支持的引擎一般有这几种:

          MyISAM  Mysql 5.1版本之前默认的存储引擎,仅仅支持表锁,但查询速度较InnoDB更快

          CSV    早期数据的一种excel表格存储形式

          MEMORY  数据只在存储于系统内存中,并未写入硬盘,断电数据即丢失

          InnoDB  5.5以上版本的Mysql默认的存储引擎,支持行锁及表锁外键,事物,安全性更高

    查看当前Mysql支持的引擎 使用语句  show engines;  即查看当前Mysql所支持的引擎列表。

    可通过语句查看不同存储引擎存储表结构文件特点:

       例:

        create table test1(id int)engine=innodb;

    Mysql的数据类型:

        整型:默认情况下整形有符号(+或-)  需要用一个进制位存放符号。
                    微      小       中         大
                  tinyint    smallint    meduium int    bigint
           所占字节大小   1           2            3           4       8
             有符号: create table test1(id tinyint);
               insert into test1 value(255);  最后显示为127  为有符号的
               无符号: create table test2(id tinyint unsigned);
             insert into test3 value();   超出范围尽可能保存更多的值,负数保存为0
                         在无符号下保存最多256 其实存的是255
            以上特性为mysql的非严格模式。  有符号时最大值保存  2147483647
               如果值超出范围就报错,默认为严格模式。
          查看当前模式:  show variables like 'sql_mode';
        更改严格模式: 
           set global sql_mode='STRICT_TRANS_TABLES';  永久更改严格模式,
           set session sql_mode='STRICT_TRANS_TABLES';  临时更改为严格模式
          show variables like "%mode%";  # 查看数据库配置中变量名包含mode的配置参数
         约束条件:
             对于字符而言约束是字符串的长度
             对于整型而言约束是数字显示长度,如果数据超过显示宽度,可使用0补全 zerofill
        类型:限制字段必须以什么样的数据类型存储
        约束条件:约束条件是在类型之外添加一种额外的限制      
        浮点型:小数型
           float  float(m,d)  m表示浮点数整体长度,d表示小数的长度    例: float(5,3)  99.999
           double float 与double 最大长度都是255,小数位最大长度都是30
           decimal  整体长度最大为65,准确,不会丢失精度
           精度区别:  精度最高   decimal----->double------>float 精度最底
           存储限制
             float(255,30)       最大255位,小数30位
             double(255,30)       最大255位,小数30位
             decimal(255,30)       最大255位,小数30位
            精确度验证
             create table t9(x float(255,30));  最大255位,小数30位
             create table t10(x double(255,30));  最大255位,小数30位
             create table t11(x decimal(65,30));  最大65位,小数30位
       字符型:分为 char与vachar
           char() 定长字符 类型的长度固定,实际字符长度小于标的长度时,会以空格补齐并进行存储。
           varchar() 变长字符 类型的长度可以变化,以实际字符的长度进行存储
           char_lenth(name) 查询字符长度
           select char_length(a),char_length(b) from t10; 查看表中a与b的字符长度
          设置格式显示字符全部长度:
            set global sql_mode='PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES';
            运行命令---> 退出重新进入mysql
          mysql存储时会自动加上空格,但默认输出时不显示空格,只有加上上面的语句才显示
          当执行 select * from test where name='aib'  mysql会自动将参数末尾的空格去除
         char与varchar区别:  二者最大可存在65535字节
           char 存取效率高  浪费存储空间
           varchar 存取效率底,节省存储空间
        字符文本类型:
            TEXT系列  TINYTEXT    MEDIUMTEXT     LONGTEXT 
            BLOB系列  TINYBLOB   BLOB    MEDIUMBLOB    LONGBLOB
            Binary系列  Binary       VARBINARY
            text 数据类型用于保存变长的大字符串,
         模糊搜索:
           selece * from test where name like '%aib%'   %代表0个或任意个字符
           selece * from test where name like '%aib_'  _代表任意一个字符
    枚举   从给出的多个值中选取一个。并可设置默认类型
      例: create table student(id int,name char(10),gender enum('Male','Female') default 'Male‘);  新建一个表,基中gender字段中的数据类型给出枚举,只能从枚举中的数据选择一个,并设置默认                                              为'Male'
    集合   从给出的集合中选择一个或多个。
      例: create table user(id int,name char(10),gender enum('Male','Female') default 'Male‘,hobbies set('read','music','walk'));  设置多个爱好,可选择一个或多个。
 
    完整的sql语法:
        create table 表名(
          字段名1 类型[(宽度) 约束条件],
          字段名2 类型[(宽度) 约束条件],
          字段名3 类型[(宽度) 约束条件]
          );

      注意事项:
        1. 在同一张表中,字段名不能相同
        2. 宽度和约束条件可选,字段名和类型是必须的
        3. 最后一个字段后不能加逗号!

        约束分类:
        PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录
        FOREIGN KEY (FK)    标识该字段为该表的外键   设置表与表之间关联时使用
        NOT NULL          标识该字段不能为空  
        UNIQUE KEY (UK)     标识该字段的值是唯一的 表内其它字段不能出现相同类型的值
        AUTO_INCREMENT     标识该字段的值自动增长(整数类型,而且为主键)一般与PRIMARY KEY搭配使用 用来标识使用ID等。
        DEFAULT           为该字段设置默认值
        UNSIGNED        无符号
        ZEROFILL        使用0填充
       单列唯一约束:
          create table test1(id int(4) unique,name char(32) unique); 一语句中多个字段有唯一性约束
       多列唯一约束:
          create table test1(id int(4),name char(32),unique(id,name)); 联合约束
        只有当括号内的字段都相同时才会判定相同,并报错,
 
       多列联合主键:
          create table test1(id int,name char(32),primary key(id,name));  将id与name全部设置为主键
        同一表中可以有多个主键,但没有意义。
          auto_increment 自动增长记数 一般用来记录ID等数据时使用 通常搭配主键字段使用,可自动为数据分配从1开始记数
        添加一条自动记数加1。
        如需修改则为:
           alter table auto_increment=数字;  设置表中的数据从写入的数字开始加1.
       delete from tb1;
          强调:上面的这条命令确实可以将表里的所有记录都删掉,但不会将id重置为0,
          所以此该条命令根本不是用来清空表的,delete是用来删除表中某一些符合条件的记录
        delete from tb1 where id > 10;
       如果要清空表,使用truncate  作用:将整张表重置,id重新从0开始记录
        例: truncate student;    将student表中的数据清空,但保留原有结构
          
 
 
           为什么要进行分表操作 :
               1,数据冗余
                    2,效率底下
                       3,扩展性差
 
      表与表之间关系:
        一,多对多的关系,如下面例题,一个学生可以报多个课程,一个课程下也可以有多个学生报名,即多对多的关系。
 
      
        例:
        create table student(id int(2) not null primary key auto_increment,  新建一个表命名为student,并指定字段名id  类型为整型,不能为空,且带自增效果,并设置为主键
                name char(10),                      指定字段名name,类型为字符char类型,长度为10字节
                gender enum('Male','Female','HalfMan') default 'Male',     指定字段名gender ,类型为枚举选项,默认为'Male'
                age int(2),                         指定字段名age  数据类型为2字节的整型
                course_id int(2),                      指定字段名course_id 数据类型为2字节的整型
                hobbies set('read','music','walk'));              指定hobbies 字段名的类型为从给出的集合中选择一个或多个.
        create tab;e courses(id int(2) not null primary key auto_increment,  新建表名为courses,设置字段id类型为整型,不能为空,且为主键带数值自增效果。
                name char(10),                      定义字段name类型为char字符类型,且为10个字节长度
                cost int(6));                        定义字段cost 类型为整型,显示长度为6
        
        在已有的二个表的基础之上为二个表建立关联
        create table code(id int(2) not null primary key auto_increment,    新建另一个关联表,定义主键,且不能为空,并带数值自增加效果
                stu_id int,                        定义一个字段名stu_id 类型为整型 用于关联student表
                cou_id int,                        定义一个字段名cou_id 类型为整型 用于关联courses表
                foreign key(stu_id)  references student(id)          定义一个外键,将此表内的字段名stu_id与student的字段名id相关联
                on update cascade                    定义两个表内的级联功能,如果不定义级联功能,在进行相应的删除操作
                on delete cascade,                    时,只能先删除被关联表内容,再删除主表内容,否则报错
                foreign key(cou_id)  references courses(id)          定义另一个外键,此外键将此表内cou_id字段与courses字段的id相关联
                on update cascade                    两样要设置级联功能,避免后续操作时报错。
                on delete cascade
                );
      
       二,一对多的关系,如下例题,一个员工只属于一个部门,但一个部门下可以有多个员工,即一对多的关系。此时部门为被关联的对象,需要先创建部门表,再创建员工表
          
       例:
         create table department(id int not null primary key auto_increment,  新建一个部门表,定义部门id类型为整型,设置为主键,且不能为空,并带数值增加效果
                    name char(10),                     定义部门名称字段,类型为char字符类型,长度为10字节
                    dep_desc vachar(32));                  定义部门描述字段,类型为varchar变长字符类型。
 
         create table employee(id int not null primary key auto_increment,   新建一个员工表,并设置员工id字段为整型,设置为主键,且不能为空,自带数值增加效果
                     name char(10),                      定义员工姓名字段  类型为整型
                    gender enum('Male','Female') default 'Male',          定义员工性别,并限制只能输入枚举中的一个值
                    age int(2),                          定义员工年龄,类型为整型  
                    dep_id  int,                         同样定义员工所以部门的ID号
                   phone  chr(11),                      此处定义员工的电话字段,电话号码为11位,使用字符串存储更方便
                   foreign key(dep_id) references department(id)        定义外键将员工的部门ID字段与部门表的ID字段相关联
                   on update cascade                    同样定义级联功能。
                   on delete cascade
                    );
      三,一对一的关系  作者与作者介绍的关系,一个作者只有一个作者说明 ,一个作者说明上也只介绍一个作者,彼此是 一 一对应该的关系
        

        create table author(                        新建一个作者表
              id int primary key auto_increment,                定义作者id 类型为主键,并自带数值增加效果
              name char(20) not null,                     定义作者的姓名字段,且规定不能为空
              phone char(16) not null                    定义作者的电话字段,限制此字段不能为空
           );
        create table About_author(                     新建一个作者说明表                     
              id int primary key auto_increment,                定义表的字段id  为主键
              author_id int unique,                           设置一个作者字段,且此字段一定要是唯一的
              foreign key(author_id) references author(id)             使用外键将唯一的字段与作者的ID相关联
              on delete cascade                        同样设置级联功能。
              on update cascade    
           );
                   
        
      *********此处注意点********:
                使用外键关联的表与表之间的字段类型必须相同,其中包括类型中是否为有无符号标识,否则会报错!!
 

    

Mysql 简介二的更多相关文章

  1. mysql基础篇-----mysql简介

    2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...

  2. MySQL(一)之MySQL简介与安装

    大家可能都在用MySQL,其实我也是在用MySQL的,但是你知道吗?大部分人都是在windows中使用,这里将介绍一下在windows中的安装分为安装包安装与MSI包安装,以及在linux中的在线安装 ...

  3. MySQL简介及安装

    一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 04 MySQL发展 ...

  4. 6.MySQL简介

    MySQL简介 ·点击查看MySQL官方网站 ·MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于facle旗下 ...

  5. 【python】-- MySQL简介、安装、操作

    MySQL简介.安装.操作 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储 ...

  6. 32、MySQL简介

    一.MySQL简介 1.数据库管理软件分类 主要分为关系型和非关系型. 可以简单的理解为,关系型数据库需要有表结构,非关系型数据库是key-value存储的,没有表结构. 关系型:如sqllite,d ...

  7. MySQL高级学习笔记(一):mysql简介、mysq linux版的安装(mysql 5.5)

    文章目录 MySQL简介 概述 mysql高手是怎样炼成的 mysq linux版的安装(mysql 5.5) 下载地址 拷贝&解压缩 检查工作 检查当前系统是否安装过mysql 检查/tmp ...

  8. 数据库简介与MySQL简介

    MySQL简介 数据存取演变史 起源······文本文件 在最开始使用计算机都没有相应的规范我们的数据一般都是自己起一个名字然后就根据这个路径存储数据并且存储数据的格式也都五花八门就产生了很多奇奇怪怪 ...

  9. 第一章 Mysql 简介及安装和配置

    Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一. ...

随机推荐

  1. Xcode加入应用图标以及启动界面

    寻找了许久的资料,记录下Xcode加入应用图标以及启动界面的学习笔记: 很实用的网址: 1.(苹果官网)Designing for iOS 2.iOS 8 人机交互指南 图标和图片的尺寸參考: 更加具 ...

  2. 17. IntelliJ IDEA + Maven创建Java Web项目

    转自:https://www.cnblogs.com/Terry-Wu/p/8006475.html 1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里 ...

  3. Network Stack‎ : CookieMonster

    CookieMonster   The CookieMonster is the class in Chromium which handles in-browser storage, managem ...

  4. 如何查看 Linux 中所有正在运行的服务

    有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...

  5. RQNOJ PID496/[IOI1999]花店橱窗布置

    PID496 / [IOI1999]花店橱窗布置 ☆   题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序 编号 ...

  6. 洛谷 P1900 自我数

    P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...

  7. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...

  8. 第一个ASP.NET

    1.新建 2.发布 3.访问

  9. android 获取蓝牙已连接设备

    蓝牙如果手动配对并已连接,获取连接的设备: 1.检测连接状态: int a2dp = bluetoothAdapter.getProfileConnectionState(BluetoothProfi ...

  10. Markdown编辑器为什么好用以及好用的markdown编辑器

    Markdown编辑器为什么好用以及好用的markdown编辑器 一.总结 一句话总结:Markdown 是一种简单的.轻量级的标记语法.用户可以使用诸如 * # 等简单的标记符号以最小的输入代价生成 ...