Mysql入门学习笔记03—DDL基础

DDL

很久很久以前学习mysql的笔记记录,很随意,但都是自己记录的,希望对需要的人有所帮助。

    本文使用word2013编辑并发布

    Postbird | There I am , in the world more exciting!

Postbird personal website .www.ptbird.cn

 

创建表table

    建表的过程就是声明列的过程

    列的类型 列的属性。(既能放下内容又不浪费空间,速度还要快)

列的类型及其属性:

    create table XXX(

    ->列1 类型 属性 值

    ->列2 类型 属性 值)charset utf8 engine myisam;

        数值型(整型 浮点型 定点型)

Mysql入门学习笔记03—DDL基础_第1张图片

        字符串型(char varchar text)

        日期时间型(2010-2-3 14:26:23)

数值-整型int(4字节)

    bigint int mediumint smallint tinyint

整型列的可选参数

    unsigned 默认是有符号的 可以设定为无符号

    zerofill M 适合用于学号编码等固定宽度的数字 可以从0填充到固定宽度M

    zerofill决定列为unsigned

    alter table t1 add sn tinyint(5) zerofill; (5)->(M)

    

数值-浮点型:

    float(M,D)

        M:精度总位数 D: 小数点后面的位数

    double

    有精度的损失

数值-定点型:

    decimal(M,D):

        没有精度的损失,更精确

 

字符-char varchar text blob enum set:

    char(M): 定长

        char(10); 就算是没有10个字符,也占10个字符的长度

            查找方便 每次查找,只需要向后查10长度,利用率可能达到100

    varcahr(M):变长

        varchar(10); 最长10的字符,

            前面有标志,通过标志(1-2个字节)查找,利用率不可能100%

    M比较短,用char,比较长用varchar             

char 不够M字符,存储的时候,向右不空格,取出时,去掉空格。varchar后面的空格不会丢掉

Mysql入门学习笔记03—DDL基础_第2张图片

    

    text(); 文本类型

    blob(); 是二进制类型,用来存储图像,音频等二进制信息;

        blob 不会考虑字符集,不会丢失信息。(不同的字符集可能过滤掉一个信息)    

    enum();枚举类型 定义好 值在某几个枚举范围内的一个

        例如 gender()性别 只能是 男 或者 女;

Mysql入门学习笔记03—DDL基础_第3张图片

    set();集合的意思 可以一次选几个(区别enum);

 

日期时间 Year Date Time datetime 时间戳:

    Year(1字节) 95/1995 (1901-2155)

    Date 日期 1995-12-31 (1000/01/01->9999/12/31)

        

    Time 时间 13:25:12 (-838:59:59->838:59:59)

    Datetime 日期时间 1995-12-31 13:25:12 (1000/01/01 00:00:00->9999/12/31 23:59:59)

    时间戳 timestamp:1970/01/01 00:00:00 到当前的秒数

        一般存注册时间或者发布时间用时间戳 因为datetime虽然直观,但是计算不方便。

列的默认值:

     null 查询不方便,索引效率低 实用中避免列的值是 null

     声明 列的值不是null not null default XXX;

主键与自增:

     primary key 主键:能够区分每一行,不重复        

auto_increment: 一张表上只能有一个自增列,自增列必须加索引 index/key;

    

建表案例:

Mysql入门学习笔记03—DDL基础_第4张图片

将定长不定长分离,将常用不常用分离。

列的删除,增加,修改:

    新增列:

        alter table 表名 add 列名 列类型 列属性 位置默认在最后;

        alter table 表名 add 列名 列类型 列属性 after 列名;

    删除列:

        alter table 表名 drop column 列名;

    修改列属性:

         alter table 表名 change 列名 新列名 新属性;

         alter table 表名 modify 列名 新属性;(不能改列名)

视图 View:

    视图 view:view又被称为虚拟表,view是sql的查询结果

    create view 名字 as select name from user3;

    select * from 名字;

Mysql入门学习笔记03—DDL基础_第5张图片

    作用:

        权限控制可以使用 某几个列允许查询,其他列不允许,通过视图开放其中的一列或几列

        简化复杂的查询

    如果 view虚拟表和物理表是相对应的,相当于一个坐标轴的(x,y)都是相对应的。

    可以 修改物理表 能够影响到view虚拟表,view虚拟视图可以修改,并且修改view会影响物理表

    如果 view虚拟表是物理表计算的结果

    那么 修改物理表 虚拟表会改变,修改虚拟表不会影响到物理表。

视图的algorithm:

Mysql入门学习笔记03—DDL基础_第6张图片

算法:merge(合并):

    对于简单查询形成的 view,再对view查询时

        建视图语句+查视图的语句----->查物理表的语句

        这种视图只是存一个语句

    create algorithm=merage view v1 as .........

算法:temptable:

    视图的语句本身比较复杂,很难和查询视图的语句合并,mysql可以先执行视图的创建语句

    把结果形成内存中的临时表,然后在对临时表进行查询形成新的view

    create algorithm=temptable view v1 as.......

针对表,视图的相关操作:

show tables; 查看当前数据库下有哪些表(view包括在其中)

desc 表名;    查看表,view的结构

drop table 表名; 删除表

drop view 视图名; 删除视图

show create table 表名; 查看表的创建过程(也可以查看view创建过程)

show create view 视图名; 产看 view创建过程

show table statu    s \G;查看表的详细信息(\G竖直显示)

    show table status where name='表名' \G;(查看某一张表的信息)

rename table 旧表名 to 新表名; 更改表名

delete from 表名; 删除表中的所有数据 (但是再次建立表的时候 自增长的信息不会丢失)

truncate 表名; 删除表同时初始化所有信息包括自增长;

你可能感兴趣的:(Mysql入门学习笔记03—DDL基础)