zoukankan      html  css  js  c++  java
  • MySQL学习(四)

    1 MySQL日期和时间类型
    创建一个包含DATE类型的表

    mysql> create table test3(
        -> star varchar(20) not null default '',
        -> birth date
        -> )engine myisam charset utf8;
    

    向表中插入数据

    mysql> insert into test3
        -> values
        -> ('张国荣','2010-10-10');  
    Query OK, 1 row affected (0.38 sec)
    

    2010-10-10两边的单引号不要忘记。
    date能存1000-01-01到9999-12-31

    2 time类型

    3 datetime类型

    4 year类型只占1个字节,只能代表1901-2155年,若果范围出错,则为0000。

    5 练习题
    高端私密白领社交网站数据库
    优化前

    优化后
    分析,这张表除了username/intro列之外,每一列都是定长的。我们不妨可以让所有列都定长,可以极大提高查询速度
    username中把varchar改为char,虽然会造成存储空间上的浪费,但是提高了速度。但是把intro改为char(1500),就会造成空间的极大浪费。
    空间和时间是一对矛盾,优化方法:时间换空间,空间换时间。
    第一次优化后

    又考虑到,当一个人注册后,个人简介不会频繁的改动,可以把intro单独拿出来成为一个表
    在开发过程中,会员的信息优化往往是,把频繁用到的信息,优先考虑效率,存储到一张表中。不常用的信息和比较占据空间的信息,优先考虑空间占用。存储到辅表。
    第二次优化

    上次登录时间使用datetime类型,不容易计算,考虑使用时间戳

    建表语句

    mysql> create table member(
        -> id int unsigned auto_increment primary key,
        -> username char(20) not null default '',
        -> gender char(1) not null default '',
        -> weight tinyint unsigned not null default 0,
        -> birth date,
        -> salary decimal(8,2) not null default 0.00,
        -> lastlogin int unsigned not null default 0
        -> )engine myisam charset utf8;
    Query OK, 0 rows affected, 1 warning (0.67 sec)
    

    6 一张表创建完毕后,有了N列,之后还有可能增加或删除或修改列。
    添加无完整约束条件的字段
    创建一个表

    mysql> create table m1(
        -> id int
        -> )engine myisam charset utf8;
    

    添加字段

    mysql> alter table m1 add name varchar(30);
    

    在表的指定列之后添加一个字段

    mysql> alter table m1 add location varchar(30) after id;
    

    在表的第一列添加一个字段

    mysql> alter table m1 add managerid int(10) first;
    

    删除字段

    mysql> alter table m1 drop location;
    

    修改字段的排列位置

    mysql> alter table m1 modify name varchar(5);
    

    修改后

    注意 modify不能改列名,修改列类型用change

    修改字段名

    mysql> alter table m1 change location loc varchar(5);
    

    7 课后问题:如果列类型改变,导致数据存不下怎么办?
    比如int改为smallint列,如果不匹配,数据会丢失,或者在mysql的strict_mode下无法修改。

  • 相关阅读:
    EditText被输入法覆盖的解决方法
    计算屏幕大小
    [转]在adt-bundle-linux建立工程找不到ADB & R文件
    3.18 迷茫的方向
    安卓笔记:Fragment
    安卓学习笔记:转Android LayoutInflater详解
    Android布局大全(转)
    第二章 Android基本应用开发与解析
    Datetime中offset-naive与offset-aware时间的计算
    Python日期操作datetime
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/10179827.html
Copyright © 2011-2022 走看看