创建数据库

所有关键字最好大写,虽然不区分大小写

二、创建数据表的SQL语句模型

    DDL

    CREATE TABLE [IF NOT EXISTS]表名称(

          字段名1 列类型[属性][索引]

          字段名2 列类型[属性][索引]

          ……

          字段名n 列类型[属性][索引]

)[表类型][表字符集];

表名称 和 字段名 需要我们自己定义名称

表名最好用复数

users

articles

SQL是不区分大小写的,但是表就是一个文件名,windows不区分大小写,Linux区分大小写

1、一定要有意义(英文或英文组合和多个单词的缩写)

2、自己定义的名称最好都小写

3、SQL语句都大写

三、数据值和列类型

      细分都是按空间大小来区分的

      可以存下就可以

       1、数值型

                              整型(整数)

             非常小的整型  1字节  -128--127            0---255(无符号)    TINYINT

             较小的整型   2字节      -32768---32767   0----65535(无符号)SMALLINT

             中等大小的整型 3字节                                0---16777215(无符号)MEDIUMINT

             标准的整数型  4字节      -2147483648-----2147483647     INT

             大整数型    8字节                                                       BIGINT

                              浮点型(小数)

                                    float(M,D)                 4字节

                                    double (M,D)         8字节

                                    定点数

                                   decimal(M,D)           M+2字节

                             浮点数有误差,最好不要用于等号比较,在涉及资金等重要数据时,应该用定点数; 定点数以字符串的形式保存,会自动转换,执行效率较低;

       2、字符型

                             'mysql' "mysql"  \(转义字符)

                              char(m)                                    255(最大存储空间)   超过255个字符会被节断     固定长度字符串

                              varchar(m)                                255                                                           可变长度字符串(内容长度+1)

                   char(4)              varchar(4)         

                   ''             4             ''                1字节

                   ab           4             ab               3

                  abc          4              abc              4

                   abcdef     4              abcdef          5

                  text文本数据(文章)   2 16次方-1

                         MEDIUMTEXT

                         LONGTEXT

                  blob二进制数据(相片)

                        MEDIUMBLOB

                        LONGBLOB

                   ENUM  枚举      1或2字节

                       ENUM("one","two","three","four")-------65535     一次只能用一个值

                   SET     集合      1,2,3,4,8字节        ------64         一次可以用多个集合中的值,中间使用“,”分开

       3、日期型

                    TIME               hh:mm:ss

                    DATE              YYYY-MM-DD

                    DATETIME       YY-MM-DD   hh:mm:ss

                    TIMESTAMP     YYYYMMDDhhmmss

                    YEAR               YYYY

                    创建表时最好不用使用这些中的时间格式(PHP中时间戳 1970-1-1 0:0:0)是一整数

                    用整数保存时间 time();

                    int

四、数据字段属性

1、unsigned 可以让空间增加一倍

    只能用在数值型字段

2、zerofill

     只能用在数值型字段,前导0

     该字段自动应用 unsigned

3、auto_increment

    只能是整数,数据每增加一条就会自动增加1,字段值不允许重复

    null 0 留空 会在字段自动加1

   每个表都最好有一个ID字段,设置为自动增涨,auto_increment

4、NULL 和 NOT NULL

    默认是空

    NULL   是一个值

    将这个表的数据转为PHP程序的数据时,整数列有NULL,能转成0吗

   建议:在创建表时每个字段都不要插入NULL

   not null

5、default

   CREATE TABLE USRES(

           id INT UNSIGNED NOT NULL AUTO_ INCREMWENT  PRIMARY KEY,

           name  VARCHAR(30) NOT NULL DEFAULT '',

           height DOUBLE(10,2) NOT NULL DEFAULT 0.00,

           age INT NOT NULL DEFAULT '男'

);

五、创建索引

   1、主键索引

            主要作用确定数据库表里一条特定数据的位置

            最好为每一张数据表定义一个主键

            一个表只能指定一个主键

            主键的值不能为空

   2、唯一索引

           (与主键索引一样)都可以防止创建重复的值

           每一个表可以有多个唯一索引

           unique

   3、常规索引

           最重要的技术

           提升数据库的性能

           1111111111

           22222

            ……  

           索引顺序      5层       软件开发   PHP    《细说PHP》

           可以提高查找的速度,减慢数据列上插入,删除,修改的速度  

           和表一样是独立的数据对象          

           可以单独使用

           也可心以在创建表时创建

           index 与 key 是同义词

           多列都可以指定索引

   4、全文索引

           fulltext类型索引,MyISAM表类型使用,只有在varchar char text 文本字符串上使用

           也可以多个数据列使用

           create table books(

               id int,

               bookname varchar(30),

               price double,

               detail text not null,

               fulltext(detail,bookname),

               index ind(price),

               primary key(id)

);         

           如果没有全文索引,则

           select * from books where bookname like '%php%';

           如果有全文索引,则

           select bookname,price from books where MATCH(detail) AGAINST('php');

           在detail这个字段中查询包含php的字段

六、数据表类型及其存储位置

       MySQL和大多数数据库不同,MySQL有一个存储引擎概念

       MySQL可以针对不同的存储引擎需要可以选择最优的存储引擎

       引擎也叫做数据表类型

       我们只学12种中的MyISAM和InnoDB两种(show engines)

       create table() type InnoDB

       create table() engine InnoDB

      type和engine是同义词

  MyISAM表类型是默认的

     注意:在一个MySQL库(创建表时)中可以指定不同的表类型   MyISAM表类型

      OPTIMIZE TABLE 表名 (恢复浪费的空间)

      优点:强调可以快速读取操作

      缺点:有一些功能不支持

 InnoDB表类型

      优点:支持一些MyISAM所不支持的功能

      缺点:占用空间大

        功能                          MyISAM                               InnoDB

      事务处理                          不支持            支持

  数据行锁定        不支持            支持

  外键约束         不支持            支持

  表空间占用        相对小            相对大,最大2倍

  全文索引         支持             不支持

七、MySQL默认字符集

     ACSII

     IS0-8859-1/latin1

     gb2312-80  不推荐使用

     gb13000     不推荐使用

     GBK            可以用

     GB18030     数据支持比较少

     UTF -32

     USC -2

     UTF -16

     UTF -8  1----4个字节的编码,强烈推荐

     GBK 2字节   UTF8  3字节汉字

     name varchar(12)    6个汉字  GBK

     name varchar(12)    4个汉字  UTF-8

 MySQL服务器,数据库,数据表,字段

     查看支持的字符集   show character set;

     数据库中的UTF-8  是   utf8

     MySQL的字符集包括

                字符集:是用来定义MySQL存储字符的方式   36个

                校对规则:是对规则定义了比较字符串的方式   70个

                一对多的关系:1个字符集可以对应多个校对规则

     客户端与服务器交互时

      character_set_client

      character_set_connection

      character_set_results

      set names 字符集,同时修改以上三个的值

八、修改表

    Alter table

posted @ 2013-03-29 09:55  达也.  阅读(153)  评论(0)    收藏  举报