博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL学习(四)
阅读量:6714 次
发布时间:2019-06-25

本文共 1798 字,大约阅读时间需要 5 分钟。

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 练习题

高端私密白领社交网站数据库
优化前
1327401-20181226164821864-1815927220.png

优化后

分析,这张表除了username/intro列之外,每一列都是定长的。我们不妨可以让所有列都定长,可以极大提高查询速度
username中把varchar改为char,虽然会造成存储空间上的浪费,但是提高了速度。但是把intro改为char(1500),就会造成空间的极大浪费。
空间和时间是一对矛盾,优化方法:时间换空间,空间换时间。
第一次优化后
1327401-20181226170205258-1279113079.png
又考虑到,当一个人注册后,个人简介不会频繁的改动,可以把intro单独拿出来成为一个表
在开发过程中,会员的信息优化往往是,把频繁用到的信息,优先考虑效率,存储到一张表中。不常用的信息和比较占据空间的信息,优先考虑空间占用。存储到辅表。
第二次优化
1327401-20181226171725173-1262715028.png
上次登录时间使用datetime类型,不容易计算,考虑使用时间戳
1327401-20181226171834314-618411976.png

建表语句

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;

1327401-20181226195130162-282613857.png

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

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

删除字段

mysql> alter table m1 drop location;

修改字段的排列位置

1327401-20181226195945623-844495393.png

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

修改后

1327401-20181226200241515-727594226.png

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

修改字段名

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

7 课后问题:如果列类型改变,导致数据存不下怎么办?

比如int改为smallint列,如果不匹配,数据会丢失,或者在mysql的strict_mode下无法修改。

转载于:https://www.cnblogs.com/Manual-Linux/p/10179827.html

你可能感兴趣的文章
ASCII表
查看>>
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
洛谷P1613 跑路
查看>>
python各种模块,迭代器,生成器
查看>>
微信小程序 watch监听数据变化 类似vue中的watch
查看>>
服务器端推送技术
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
修改SQL Server 的排序规则
查看>>
Windows 8部署系列PART2:部署先决条件准备
查看>>
微软私有云分享(R2)18Windows Azure Pack 命令行安装
查看>>
基于ArcGIS10.0和Oracle10g的空间数据管理平台十五(C#开发)-空间数据导出
查看>>
DB2 应用
查看>>
第十六章 为什么说张清“虎头蛇尾”
查看>>
ShiftOperators.cs
查看>>
C#中的预处理命令
查看>>
Assistance Required(打表)
查看>>
使用Ajax的Time实现倒计时功能
查看>>
Solr字段配置错误
查看>>
Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
查看>>