MySQL学习(四)
1 MySQL日期和時間類型
創建一個包含DATE類型的表
向表中插入數據
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> 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;修改字段的排列位置
修改后
注意 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
總結
以上是生活随笔為你收集整理的MySQL学习(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 应用短连接导致连接风暴
- 下一篇: 【Spring Boot】1.基础知识