一. MySql常用数据类型

   数据类型:整数(tinyint smailint int bigint)

                 定点数 decimal(p,s) ------ 小数点位置固定的       ---》 数据精度得到保证

                 浮点数 float(p,s) 4字节  double(p,s) 8字节 ----- 小数点位置不固定    ---》 表示的范围更大

                 日期时间 date - 某年某月某日

                             time - 一天中的具体时间,或者两个时间的间隔。可能大于24, 也肯能为负.

                             datetime - 日期+时间

                 文本 char - 固定长度的文本

                        varchar 根据输入文本来分配字节

                        text  大文本数据

                 二进制 bit 将输入数据转换为二进制形式

二. 创建数据表

1. 数据库设计基本步骤

   需求分析阶段:分析客户的业务和数据处理需求

   概要设计阶段:设计数据库E-R模型图,确认需求信息的正确和完整

   详细设计阶段: 将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核

   代码编写阶段: 选择具体数据库进行物理实现,并编写代码实现前端应用

eg:模拟QQ游戏大厅项目

    需求分析:系统要记录哪些信息

    数据表:游戏表,玩家表,分数表

    每个表的字段:游戏表(编号,名称,类型,难度)

                        玩家表(QQ号,昵称,性别,生日,手机号)

                        分数表(游戏编号,玩家QQ,得分)

     E-R (Entity - Relationship) 实体关系图 

        长方形 - - 实体,一般是名词

        椭圆  - -  属性,一般是名词

        菱形 - - 关系,一般是动词

     

     什么是范式?

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

          Dr E.F.codd最初定义了规范化的几个级别,范式用以定义具有最小冗余的表结构。

           第一范式(1st NF):如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式。

                        eg: 地址- 中国北京 ------为了满足第一范式应该将属性地址分为:国家,城市

           第二范式(2nd NF): 如果一个关系满足1NF,并且除了主键以外的其他列都完全依赖于该主键,则满足第二范式。

                                        第二范式要求每个表只描述一件事情。

           第三范式(3rd NF): 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式。

                                       第三范式要求表中不存在冗余字段

     

    使用客户端数据创建数据表步骤:

          1. 打开链接,选择数据库

          2. 右键选择新建表

          3. 填写表各个字段的名称,数据类型,勾选是否允许空

          4. 保存表

 

    使用命令窗口创建数据库:

         1. 从命令窗口登录Mysql - use Test ------进入Test 数据库进行操作

         2. 使用CREATE TABLE语句创建表

             create table table_name

               (

                   col_name1 col_type [not null],

                   col_name2 col_type [not null],

                   .....

                 )

 三. 为列添加约束

    1. 主键约束 - primary key ( 不能出现重复值且不能为空)

     作用:保证实体完整性

    eg: 为玩家表的玩家QQ列添加主键约束

    create table users  (

     user_qq varchar(20) not null primary key,

     user_name varchar(50) not null,

     user_sex char(2) not null,

     user_birthday date not null,

     user_phone char(11) not null

    )

       

    2. 外键约束

      作用:保证引用完整性

     eg: 为分数表添加外键约束

        create table score(

            user_qq varchar(20) not null references users(user_qq),

            gno int not null references games(Gno),

            score int not null

           )

 

    3. 检查约束

     作用:保证域完整性。保证某个列的数据必须符合某种格式或范围

     eg: 为游戏表添加检查约束

          create table games(

               gno int not null check(gno>0),

               gname varchar(50) not null,

               gtype varchar(20) not null

              )

 

    4. 默认约束

       作用:保证域完整性(没有值的时候为默认值)

  create table users  (

     user_qq varchar(20) not null ,

     user_name varchar(50) not null,

     user_sex char(2) not null default '男',

     user_birthday date not null,

     user_phone char(11) not null

    )

 

    5. 自动增长列

   作用:保证实体完整性。自动排列编号

  

          create table games(

               gno int not null auto_increment,

               gname varchar(50) not null,

               gtype varchar(20) not null

              )