mysql入门 — (2)
创建表
CREATE TABLE 表名称 [IF NOT EXISTS](
字段名1 列类型[属性] [索引]
字段名2 列类型[属性] [索引]
...
字段名n 列类型[属性] [索引]
)[表类型] [表字符集];
表名称和字段名需要自己定义名称
SQL是不区分大小写的,但是表就是一个文件名,windows不区分大小写,linux区分大小写。
1.名称和字段名要有意义,比如说用英文或英文的组合;
2.自己定义的名称最好都小写;
3.SQL语句需要大写。

数据值和列类型
数据库是按照空间大小区分的
1.数值型
整型(整数)
小的整型 1字节 -128-127 0-255 TINYINT
较小的整型 2字节 -32768-32767 0-65535 SMALLINT
中等的整型 3字节 MEDIUMINT
标准的整型 4字节 -2147483648-2147483647 INT
大整数型 8字节 BIGINT

指定了表中的数据的类型为tinyint,那么数值的范围为(-128-127),当存储的数据范围超过这个范围的话,会提示错误。
指定了数据类型为无符号数以后,如果数值为负,或者超出了范围,都会报错。

浮点型(小数)
float(M,D) 4字节
double(M,D) 8字节
定点数
decimal(M,D) M+2字节

数据总长度为M,小数点后面保留D位。如果超出了长度范围,会报错,如果长度不够,会自动补全到指定的长度。
浮点数是存在误差的,在小数点后边会存在四舍五入的情况。



如果位数够的话,会存在四舍五入的情况,如果位数不够的话,不会进行四舍五入的进位。

由于浮点数存在误差,所以在存储金额的时候,需要使用定点数来存储,定点数的存储精度高,但是因为是以字符串的形式存储的,所以比较耗时。
2.字符型
可以使用“”和''来存储。
char、varchar的长度都是255。

如果超出了指定的长度,就会保存失败。

char属于固定长度的字符串,varchar属于可变长度字符串。
char(4) varchar(4)
'' (4字节) '' (1字节)
'ab' (4字节) 'ab' (3字节)
'abcd' (4字节) 'abcd' (5字节)
'abcdefg' (4字节) 'abcdefg' (5字节)

如果是固定的数据长度,建议使用char,因为速度比varchar更快。但是缺点是浪费存储空间。
对于长度不大、对查询速度有较高要求可以考虑使用char类型数据,对于变化较大的可以考虑使用varchar类型的数据。
text 文本数据(文章)
MEDIUMTEXT
LONGTEXT
blob 二进制数据(相片)
MEDIUMBLOB
LONGBOLB
ENUM 枚举 1或2字节
SET 集合 1,2,3,4,8字节


指定了值的范围,因为插入的值为'w'和'w'的时候,不是在指定的范围中,所以有警告。
枚举ENUM一次只能插入一个数据,而集合SET一次可以插入多个数据值。
如果值是固定的,比如说:性别、星期几、月份......
3.日期型
DATE YYYY-MM-DD
TIME hh:mm:ss
DATETIME YYYY-MM-DD hh:mm:ss
TIMESTAMP YYYYMMDDhhmmss
YEAR





创建表的时候,最好不要使用这些中的时间格式。建议使用int保存时间,这样子方便进行计算。
数据字段属性
1.unsigned可以让空间增加一倍, -128-127, 0-255,只能用在数值型字段;
2.zerofill 零填充,前导0,自动用0填充。


加入zerofill会自动使用0在前边进行填充。
3.AUTO_INCREMENT
只能是整数,数据每增加一条,就会自动加1,而且这个字段上的值不允许重复。
NULL 0 留空都会再次字段上加上1。

每个表最好都有一个id字段设置为AUTO_INCREMENT。
4.NULL 和NOT NULL
如果不指定,则默认允许插入NULL。
在创建表的时候,每个字段都不要插入空值,可能后续不好处理,所以设置为NOT NULL。


5.缺省值


CREATE TABLE user(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL DEFAULT '',
height DOUBLE(10,2) NOT NULL DEFAULT '0.0',
age INT NOT NULL DEFAULT 0,
sex CHAR(4) NOT NULL DEFAULT '男'
)
创建索引
1.主键索引
最常见的索引,主要作用是确定数据库表中一条特定数据记录的位置。

两条id为1的记录。
2.唯一索引
3.常规索引
4.全文索引
mysql入门 — (2)的更多相关文章
- 21分钟 MySQL 入门教程(转载!!!)
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- MySQL入门02-MySQL二进制版本快速部署
在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- MySQL入门(三)
写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- MySQL入门转载
21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...
- mysql 入门 基本命令
MYSQL入门学习之一:基本操作 1.登录数据库 www.2cto.com 命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码) ...
- MySQL入门笔记(一)
一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...
- MySQL入门(上)
1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
随机推荐
- tornado用户指引(二)------------tornado协程实现原理和使用(一)
摘要:Tornado建议使用协程来实现异步调用.协程使用python的yield关键字来继续或者暂停执行,而不用编写大量的callback函数来实现.(在linux基于epoll的异步调用中,我们需要 ...
- Linux中JDK的安装步骤
1.下载jdk安装包rpm格式安装 http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa8 ...
- Hadoop1.0 与Hadoop2.0
Hadoop1.0的局限-MapReduce •扩展性 –集群最大节点数–4000 –最大并发任务数–40000 (当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增 ...
- Python中的封装,继承和多态
面向对象的三大特性:封装,继承和多态 封装:在类的内部定义属性和方法,通过对象或类名来访问属性和方法,隐藏功能的实现细节,也可以设置访问权限. 广义的封装:实例化一个对象,给对象空间封装一些属性:狭义 ...
- 转载:C语言指针使用的注意事项
相信大家对指针的用法已经很熟了,这里也不多说些定义性的东西了,只说一下指针使用中的注意事项吧. 一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int * a,b;这种声明是声明了一个指向 ...
- NUCLEO-L053R8 TIM定时器 PWM输出
TIM2 PWM输出测试 今天给大伙分享一个TIM2 PWM输出小实验. 实验开发板:Nucleo-L053R8,即STM32L053R8T6. 开发环境:MDK5 图1 - 工程界面 本次实验测试的 ...
- python--模块之基本
模块的概念: 在计算机程序开发过程中,随着程序代码越来越多,在一个文件里代码就会越来越长,不利于维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样每个文件包含的代码就相对较少. ...
- 北京Uber优步司机奖励政策(1月14日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比
第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好H ...
- 创龙DSP6748开发板上电测试-第一篇
1. 创龙DSP6748开发板测试.2980元的售价很高,我估计新的1200元比较合适,当然创龙定价是按照供需关系的.仿真器XDS100V2卖598元,真是狮子大张口. 2. 上电是5V-2A的电源. ...