MySQL创建数据表 建索引

时间:2022-11-10 14:34:16
show
databases;
//查看数据库
create
database test;
//创建数据库
use
test;
//选择数据库
\s
//查看数据库状态
?
create table;
//创建表的帮助
show
tables;
//查看表
desc
test;
//查看表结构
\c
//退出创建表
一、创建表的基本模型([]为可选的):CREATE
TABLE [IF NOT EXISTS]表名称(
    字段名1 列类型 [属性] [索引],    字段名2 列类型 [属性] [索引],    ...    字段名n 列类型 [属性] [索引])[表类型]
[表字符集];
表名称和字段名需要我们自己定义名称。二、数据值和列类型:    细分都是按空间大小来区分的。    1、数值型        整形(整数)            非常小的整型 1字节 TINYINT            较小的整型 2字节 SMALLINT            中等大小的整型 3字节 MEDIUMINT            标准的整型 4字节 INT            大整型 8字节 BIGINT        浮点型(小数)M为位数,D为小数点保留几位            float(M,D) 4字节            double(M,D) 8字节            定点数decimal(M,D) M+2字节    2、字符型            char(M) 255 属于固定长度字符串            varchar(M) 255 可变长度字符串    3、日期型            DATE   
YYYY-MM-DD
            TIME    hh:mm:ss            DATETIME    YYYY-MM-DD hh:mm:ss            TIMESTAMP   YYYYMMDDhhmmss            YEAR    YYYY            时间保存最好采用INT类型,因为它可以参与运算。

除非注明,文章均为易水寒原创,版权属于易水寒博客,转载请注明出处,谢谢。

三、数据字段属性:
    1、unsigned 可以让空间增加一倍,如果不希望在字段中插入负值就使用此属性,另外只能用在数值型字段。
    2、zerofill 只能用在数值型字段,前导0(例如id int(5) zerofill,如果插入数据为11,会自动存储为00011),该字段自动应用unsigned。
    3、AUTO_INCREMENT 只能是整数,数据每增加一条就会自动增1,字段的值不允许重复。
    4、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种方法:
        (1)
        CREATE TABLE users(
            id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
        );
        (2)
        CREATE TABLE users(
            id INT UNSIGNED NOT NULL AUTO_INCREMENT,
            PRIMARY KEY(id)
        );
    2、唯一索引
        unique
        它和主键索引一样,都可以防止创建重复的值,不同的是,每个表可以有多个唯一索引。
    3、常规索引
        最重要的技术,提高数据库性能,索引优化首先考虑常规索引。
        查询提高了,增删改减慢了。
        key和index是同义词,用哪个都可以。
        创建方法:
            单独创建常规索引:
                CREATE index 索引名称 on 表名(字段名,多个用逗号分隔);
                删除:
                drop index 索引名称 on 表名;
            创建表时创建常规索引:
                CREATE TABLE users(
                    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    uid INT NOT NULL,
                    index 索引名称(uid)
                );
    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');
        以上两种查询来比,全文索引查询效率比较高。

http://www.yishuihan.net/index.php/2011/07/06/mysql%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E8%A1%A82/