建表:

SNS社交网站:

会员表:member

Mysql中没有布尔型,相当于tinyint类型 false 就是0 其他都是true

大小 字节

列名称

列类型

默认值

是否主键

4

编号id

int

Primary key

用户名:uesrname

varchar(20)  char(20)

‘’

1

性别:gender

char(1) tinyint

1

体重KG:weight

tinyint unsigned 0--255

3

生日:birthday

date

8

工资:salary

Decimal(8,2)

8

上次登录时间:lastlogin

Datetime  int

个人简介intro

Varchar(1500)

日志 blog

text

数据每一行的长度,都是固定的,查找的速度更快

浪费一定空间,从而加快速度值,但不能浪费过大

存储空间和时间时矛盾的的

时间换空间 空间换时间

所以intro 可以单独拿出来,另放到一张表里

大小 字节

列名称

列类型

默认值

是否主键

4

编号id

int

Primary key

用户名:uesrname

varchar(20)  char(20)

‘’

个人简介intro

Varchar(1500)

在开发中,会员的信息优化,把频繁用到的信息,优先考虑效率,存储到一张表中,

不常用的信息,或比较占据空间的信息,优先考虑空间占据,存储到辅表中

上次登录时间,从查询角度和计算来看,利用int时间戳进行计算

建表语法:所谓建表就是声明列的过程

create table 表名(

列1声明 列1参数,

列1声明 列1参数,

... ...

列n声明 列n参数

)engine myisam/innodb/bdb  charset utf8/gbk/latin1;

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,

birthday date not null default '0000-00-00',

salary decimal(8,2) not null default 0

)engine myisam charset utf8;

时间:2014年3月28日17:11:02表修改语法之列的增删改

mysql> #修改表的语法:

mysql> #一张表,创建完毕,有了N个列

mysql> #之后还有可能增加或者删除列

mysql> #使用语句:

mysql> #alter table 表名 add 列名 列类型 列参数

mysql> use test;

Database changed

mysql> create table m1(

-> id int unsigned auto_increment primary key

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.08 sec)

mysql> desc m1;

+-------+------------------+------+-----+---------+----------------+

| Field | Type             | Null | Key | Default | Extra          |

+-------+------------------+------+-----+---------+----------------+

| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

+-------+------------------+------+-----+---------+----------------+

1 row in set (0.05 sec)

mysql> alter table m1 add username char(20) not null default '';

Query OK, 0 rows affected (0.07 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+---------+----------------+

| Field    | Type             | Null | Key | Default | Extra          |

+----------+------------------+------+-----+---------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| username | char(20)         | NO   |     |         |                |

+----------+------------------+------+-----+---------+----------------+

2 rows in set (0.01 sec)

mysql> #关键熟悉列类型

mysql> alter table m1 birthday date not null default '0000-00-00';

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'birthday date not null default '0000-00-00'' at line 1

mysql> alter table m1 add birthday date not null default '0000-00-00';

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

3 rows in set (0.01 sec)

mysql> #发现gender性别列忘了加上,想加到username后,

mysql> alter table m1 add gender char(1) not null default '男' after username;

ERROR 1067 (42000): Invalid default value for 'gender'

mysql> set names gbk;

Query OK, 0 rows affected (0.02 sec)

mysql> alter table m1 add gender char(1) not null default '男' after username;

Query OK, 0 rows affected (0.08 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     | 男         |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.02 sec)

mysql> #在指定的列后,需要使用after

mysql> #如果想放到第一位,id前面

mysql> #用first

mysql> #alter table m1 add pid int not null default 0 first;

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     | 男         |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.01 sec)

mysql> alter table m1 add pid int not null default 0 first;

Query OK, 0 rows affected (0.06 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| pid      | int(11)          | NO   |     | 0          |                |

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     | 男         |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

5 rows in set (0.01 sec)

mysql> #把新列加到最前面,使用frist

mysql> #删除列,

mysql> alter table m1 drop pid;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     | 男         |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.01 sec)

mysql> #修改列

mysql> alter table m1 modify gender char(4) not null default '';

Query OK, 0 rows affected (0.03 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(4)          | NO   |     |            |                |

| birthday | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.01 sec)

mysql> #modify 不能修改列名,

mysql> #修改列名和列类型,需要使用change

mysql> alter table m1 change id uid int unsigned;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+-------+

| Field    | Type             | Null | Key | Default    | Extra |

+----------+------------------+------+-----+------------+-------+

| uid      | int(10) unsigned | NO   | PRI | 0          |       |

| username | char(20)         | NO   |     |            |       |

| gender   | char(4)          | NO   |     |            |       |

| birthday | date             | NO   |     | 0000-00-00 |       |

+----------+------------------+------+-----+------------+-------+

4 rows in set (0.01 sec)

mysql> #主键在,自增长丢失

mysql> 如果列类型改变,导致数据存不下怎么办?

-> #主键在,自增长丢失

->

-> exit

-> ;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '如果列类型改变,导致数据存不下怎么办?

exit' at line 1

mysql> #主键在,自增长丢失

mysql> #如果列类型改变,导致数据存不下怎么办?

mysql> #比如,int改为smallint ,如果不匹配,数据将会丢失

mysql> #或者在mysql的strict mode下,修改不了

mysql> alter table m1 modify gender char(1) not null default '';

Query OK, 0 rows affected (0.03 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+-------+

| Field    | Type             | Null | Key | Default    | Extra |

+----------+------------------+------+-----+------------+-------+

| uid      | int(10) unsigned | NO   | PRI | 0          |       |

| username | char(20)         | NO   |     |            |       |

| gender   | char(1)          | NO   |     |            |       |

| birthday | date             | NO   |     | 0000-00-00 |       |

+----------+------------------+------+-----+------------+-------+

4 rows in set (0.01 sec)

mysql> web操作的读写比是20:1

-> exit;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'web操作的读写比是20:1

exit' at line 1

转载于:https://blog.51cto.com/duguodong/1386397

时间:2014年3月27日20:08:01网站建表实战与优化意识相关推荐

  1. 千寻浏览器 1.0 Beta 1(524)(2014年5月27日)

    千寻浏览器--又一款新生浏览器今天进入各位浏览迷的视野.千寻浏览器基于IE内核,据传是由百度浏览器的上海团队操刀,在功能定位上,与目前的QQ浏览器有些相似. 千寻来自官方的解释:寻,追寻,探索,又是古 ...

  2. 文学 2014年2月23日 20:43:43

    文学 2014年2月23日 20:43:43 Kim (Barnes & Noble Classics Series) - Rudyard Kipling.epub: http://www.t ...

  3. 王晋康 - 替天行道 ▪ 王晋康科幻小说精选集2(2014年3月27日)

    <替天行道 ▪ 王晋康科幻小说精选集2> 作 者:王晋康 译 者: 系 列:王晋康科幻小说精选集 出 版:时代文艺出版社 字 数:212千字 阅读完成:2014年3月27日 转载于:htt ...

  4. 22年最后一次PMP考试时间定了-11月27日,进来了解相关内容信息

    2022年11月PMP具体考试时间定了:11月27日 考试分为[上午]和[下午]两场,上午是新报名考试考试,下午是之前6.7.8月申请缓考以及未通过乃至延期的考生考试. 这里是PMP相关发布的通知: ...

  5. 番茄时间--2018年1月27日

    上午10点醒,在宿舍逛淘宝买鞋,牛仔裤. 番茄时间:19点42到20点07 目标:完成第四章的符号匹配和延迟缓冲 完成情况:完成 番茄时间:23点06到23点31 目标:码完求值算法 完成情况:未完成 ...

  6. 时间:2014年3月27日文件和目录操作函数

    主要内容: 目录操作:打开.读取.关闭.创建.重命名.删除 文件操作:打开.读.写.关闭.重命名.删除 信息获取函数 filemtime() filesize() file_exists()  is_ ...

  7. 计科1111-1114班第三周讲义、课外作业(截止日期:2014年3月27日23点-周四晚,学委飞信通知同学)

    第三周,我们主要探讨了 哈希算法 与 分治法.分治法是一个通用的算法框架,很多我们日常生活中接触到的算法都可以归类到分治法中. 本周重点 1. 哈希算法及其应用--MD5.大家应该明白哈希算法的主要三 ...

  8. 2014年10月27日

    流行语抹杀我们的个人特质 网络.春晚.电影.电视等媒体,都是制造流行语言的工厂.那些石破天惊的句子或者词语,从一开始就注定被千万人重复使用的命运.它们和使用者一起,为平静的生活增添了不少的乐趣与色彩. ...

  9. 2014年04月27日

              据说是最高效的邻接表.... 别误会,小人只是个渣,这里不自量力下,昨天刚向老蔡学的,给出我的理解 先给出数据结构 struct EDGE{ int next; int to; i ...

最新文章

  1. Libzip 版本过低或提示reinstall解决方法
  2. 信号完整性(四):信号振铃是怎么产生的
  3. 2、Java Swing JFrame和JPanel:窗口容器和面板容器
  4. 用户注册模块详解(30)
  5. Android23版本以上删除HttpClient的解决办法
  6. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)
  7. 北信源管理网页卸载密码_Homebrew: 一行代码实现mac软件管理
  8. 按英语体育计算机创建透视表,数据透视表和数据透视图概述
  9. oracle 10g分区表,oracle10g--11gR2分区表汇总四
  10. iOS Runtime特性之关联对象
  11. 苹果又出新专利?全包围屏幕iPhone
  12. java工具类使用_Java工具类使用注意事项
  13. C++项目中编译部分C的代码
  14. 程序员笑话集锦:丈夫与妻子篇
  15. scp ssh: connect to host 192.168.6.129 port 22: Connection refused lost connection
  16. 迅雷老版本总是提示升级,怎样关闭?
  17. python:epub文件批量转TXT
  18. HDOJ 1002 A + B Problem II 高精度的A+B问题
  19. 微信开发工具取消域名检查_如何检查域名可用性(简易域名搜索工具)
  20. 努比亚Z5Smini刷机包 正式版时间锁屏 音量唤醒 精简优化 流畅稳定

热门文章

  1. mysql安装忘了root_MySQL - 安装:MySQL忘记root密码的解决办法
  2. 新版WebStorm安装详细流程
  3. mysql 修改表 引擎,mysql如何修改表类型(表引擎)
  4. PHP简单好看的表白墙网自适应源码+后台
  5. 高仿科学刀论坛源码 DZ模板
  6. java版苹果免签源码超级签名免签源码
  7. Spring Boot项目优雅的全局异常处理方式(全网最新)
  8. 】.NET使用NPOI组件将数据导出Excel
  9. 关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
  10. linux命令之grep 命令