php编程之mysql数据库

来源:互联网 发布:网络主播经常唱的歌 编辑:程序博客网 时间:2024/06/13 05:06

 创建数据表

 *
 *   一、什么是数据表
 *
 *   二、创建数据表的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  固定长度
 * varchar(m)           255  可变长度
 *
 * char(4)           varchar(4)
 * ''       4           ''       1字节
 * 'ab'     4           'ab'     3字节
 * 'abcd'   4           'abcd'   5字节
 * 'abcdefg'4           'abcdefg'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、日期型
 *
 * DATE          YYYY-MM-DD
 * TIME          hh:mm:ss
 * DATETIME      YYYY-MM-DD hh:mm:ss
 * TIMESTAMP     YYYYMMDDhhmmss  
 *
 * YEAR          YYYY
 *
 * 创建表时最好不要使用这些中的时间格式(PHP中时间戳 1970-1-1 0:0:0)是一整数
 *
 * 用整数保存时间  time();
 *
 * int
 *
 *   四、数据字段属性
 *   1. unsigned 可以让空间增加一倍  -128-127   0-255
 *
 *     只能用在数值型字段
 *
 *   2. zerofill 
 *
 *     只能用在数值型字段, 前导0 
 *
 *     该字段自动应用UNSIGNED
 *
 *   3. AUTO_INCREMENT
 *     只能是整数, 数据每增加一条就会自动增1, 字段的值是不充许重复
 *
 *     NULL 0 留空
 *
 *     每个表都最好有一个ID字段,设置为自动增涨, auto_increment
 *
 *   4. NULL 和 NOT NULL
 *
 *   默认是空
 *
 *   NULL 值 
 *
 *   将来将这个表的数据转为PHP程序的数据时, 整数列有NULL  转成0吗  字符串NULL PHP ''  0.00
 *
 *   建议: 在创建表时每个字段都不要插入NULL
 *
 *
 * not null
 *
 * 5 default
 *
CREATE TABLE users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
height DOUBLE(10,2) NOT NULL DEFAULT 0.00,
age INT NOT NULL DEFAULT 0,
sex CHAR(4) NOT NULL DEFAULT '男'


);
 
 *
 *
 *   五、创建索引
 *
 *   1. 主键索引
 *   主要作用是确定数据库表里一条特定数据记录的位置
 *
 *   最好为每一张数据表定义一个主键
 *
 *   一个表只能指定一个主键
 *
 *   主键的值不能为空
 *
 *
 *   2. 唯一索引
 *   都可以防止创建重复的值
 *  
 *   每个一表都可以有多个唯一索引
 *
 *   unique
 *
 *   3. 常规索引
 *
 *   最重要的技术
 *
 *   提升数据库的性能
 *
 *   11111111111
 *   22222222222
 *   3333333333333
 *   44444444444444
 *   55555555555
 *   .。。。
 *   101010100101011
 *
 *   索引顺序  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),
 * primay key(id));
 *
 * select * from books where bookname like '%php%';
 *
 * select bookname, price from books where MATCH(detail) AGAINST('php');
 *
 * select match(detail) against('php') from books;
 *
 *
 *
 *
 * );
 *
 *   六、数据表类型及存储位置
 *
 *   MySQL和大多数数据库不同, MySQL有一个存储引擎概念。
 *
 *   MySQL可以针对不同的存储引擎需求可以选择最优的存储引擎
 *
 *   引擎 数据表类型
 *
 *   我们只学12中的MyISAM 和 InnoDB两个
 *
 * create table () type InnoDB;
 * create table () engine InnoDB;
 *
 * MyISAM 表类型是默认的
 *
 * 选择MyISAM还是选择InnoDB
 *
 * 注意: 在一个MySQL库中可以(创建表时)指定不同表类型
 *
 * MyISAM 表类型
 *
 * OPTIMIZE TABLE 表名
 *
 * 强调快速读取操作
 *
 * 也有缺点:有一些功能不支持
 *
 * InnoDB 表类型
 *
 * 支一些MyISAM所不支技功能
 *
 * 也有缺点:占用空间大
 *
 * 功能 MyISAM               InnoDB
 * 
 * 事务处理        不支持            支持
 * 数据行锁定      不支持               支持
 * 外键约束        不支持               支持
 * 表空间占用 相对小               相对大 最大2倍
 * 全文索引        支持                 不支持
 *
 *   七、MySQL默认字符集
 *   ACSII
 *   ISO-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服务器, 数据库, 数据表, 字段
 *
 *
 * 数据库中的UTF-8   utf8
 *
 * MySQL的字符集包括
 *
 *
 * 字符集: 是用来定义MySQL存储字符串的方式   36
 *
 * 校对规则:是对规则是定义了比较字符串的方式 70
 *
 * 一对多的关系: 1 个字集可以对应多个校对规则 
 *
 *
 *
 * 客户端与服务器交互时
 *
 * character_set_client
 * character_set_connection
 * character_set_results
 *
 * set names 字符集  同时修改以上三个的值
 *
 *
 *
 *   八、修改表
 *   Alter table 
 *


原创粉丝点击