SQL(Structured Query Language,结构化查询语言)
它不区分大小写

1.DDL:(Database definition language)定义和管理数据对象
    create database 库名;
    如果使用了use 库名; 下面创建表的库名可以省略
    create table [if not exists] [库名].表名(
        字段名1 列数据类型 [索引] [属性],
        字段名2 列数据类型 [索引] [属性],
        ...
        字段名N 列数据类型 [索引] [属性]
    )[表类型] [default charset utf8(设置默认字符集)];
  表名称和字段名需要用户自己定义名称(但是不能用关键字的)
    SQL是不区分大小写的,但是表就是一个文件名,
    Windows不区分大小写,Linux区分大小写的,
    写项目的时候一定要注意.所以自己定义的名称,
    一般为小写;
 
2.DML:(Database Manipulation Language)用于对数据的操作
    insert into 表名(字段1,字段2..字段N) values(值1,值2..值N);
    updata 表名 set 字段1='值1'[,字段2='值2',...,字段N='值N'] where 条件1='值1' [and 条件2='值2' and ... and 条件N='值N'];
3.DQL:(Database Query Language)数据库查询语言
    select 字段名 from 表名;  如果为所有字段 字段名可以用 * 代替;
4.DCL:(Database Control Language)数据库控制语言
    \s 查看状态
    show databases 查询所有的库
    show tables 查询所有的表;
    desc 表名 看表结构;
    show variables 配置文件中的变量
1.执行SQL语句,连接到数据库服务器
命令:mysql[如果没有配置环境变量,要在MYSQL的bin目录下的命令] mysql -h loaclhost -u root -p 123

数据值和列类型
[细分都是按占内存空间大小区分的,如果数值超过所定义的数据类型,会按此数据类型所能支持的最大值插入]
    1.数值型;
        整型(整数)  注:unsigned可选 表示无符号.
            非常小的整型([unsigned]tinyint)                 [1个字节]    {有符号:[-128~127] 无符号:[0~255]}
            较小的整型([unsigned]smallint)                 [2个字节]    {有符号:[-32768~32767] 无符号:[0~65535]}
            中等大小的整型([unsigned]mediumint)        [3个字节]    {有符号:[-8388608~8388607] 无符号:[0~16777215]}
            标准的整型([unsigned]int)                            [4个字节]    {有符号:[-2147483648~2147483647] 无符号:[0~4294967295]}
            大整数型    ([unsigned]bigint)                        [8个字节]    {有符号:[-9223372036854775808~9223372036854775807] 无符号:[0~18446744073709551615]}
        浮点型(小数) 注:M为总共有多少位数,D表示小数点后位数,浮点数超出数值范围会四舍五入,存在误差!
            单精度[float(M,D)]                                            [4个字节]
            双精度[double(M,D)]                                        [8个字节]
        定点数[decimal(M,D)]                                        [M+2个字节] (实际是以字符串形式存放)       
    2.字符型;[可以表示任何类型] 注:m为指定的长度
        较小字符串:
            char(m)        [为固定长度字符串]                                                                                    [最大255个字节]                       
            varchar(m)[为可变长度字符串(根据实际长度判断,始终为实际长度+1个字节)]    [最大255个字节]
        [不常用,详细参考mysql官方手册]二进制字符串(包含字节字符串,而不是字符字符串,没有字符集)
        binary
        varbinary
        较大文本
            大文本数据[text]      (文章)   
                hediumtext
                longtext
            二进制大数据[blob]    (照片)
                hediumblob
                longblob
        枚举[enum]  [1或2个字节]             最多可以有65535个成员
        集合[set]        [1,2,3,4,8个字节]    最多可以有64个成员
            枚举一次只能用一个值插入,集合一次可以用多个集合中的值,中间使用 逗号','分开;
    3.日期型;
        日期型[DATA]                      格式[YYYY-MM-DD]
        时间型[TIME]                      格式[HH:MM:SS]
        日期时间[DATATIME]         格式[YYYY-MM-DD HH:MM:SS]
        时间邮戳[TIMESTAMP]         格式[YYYYMMDDHHMMSS]
        年[YEAR]                                格式[YYYY]
            时间格式创建表时最好不要作用这些中的时间格式;
            (PHP中的时间戳 从1970-1-1 0:0:0 到目前,是一个整数)
            所以最好用整型来保存时间,方便运算;
    4.NULL;
   
    数据字段属性
    1.unsigned 可以让空间增加一倍,不允许有负数出现.
        只能用在数值型字段.
       
    2.zerofill 不足位置补前导0,只有用在数值型字段
   
    3.auto_increment 自动增长,只能是整数,数据每增加一条,就会自动增加1,字段的值不允许重复的,
    就算字段已经被删除.
   
    4. NULL和 NOT NULL
       
    5.default 缺省值(默认值)   
   
创建索引
    1.主键索引(primary key)
        主要作用是确定数据库表里一条特定数据(唯一数据)记录的位置,
        最好为每一张数据表定义一个主键,一个表只能有一个主键,
        主键的值不能为空;
    2.唯一索引(unique)
        和主键索引一样,都可以防止创建重复的值,每个数据表中可以有多个唯一索引,
        一般创建唯一索引不是为了提高查询速度,而只是为了让它不重复;
    3.常规索引
        可以提升数据库的属性,在数据库的优化的时候,优先考虑;
        可以单独使用(和表一样是独立的数据对象),也可以在创建表的时候直接创建.
        index 关键字和  key 关键字是同义词.
         语法:    (1).单独给已经创建的表创建常规索引:
             create index 索引名 on 表名(字段名1[,字段名2,...,字段名N]);
                     (2).在创建表时创建索引
             create table 表名(
                 id int not null,
                 uid int not null,
                 sid int not null,
                 number int not null,
                 primarty key(id),
                 key 索引名1(uid),
                 index 索引名2(sid)
             )default charset utf8;
    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)
        )default charset utf8;
        使用:
        之前方法,效率很低:select * from books where bookname where like %php%;
        使用全局索引,高效率:select bookname,price from books where MATCH(detail) AGAINST('php');
        select match(detail) against('php) from books;