1.数据类型(列类型):
1)所谓的数据类型:对数据进行统一的分类,从系统的角度出发为了能够使用统一的方式进行管理,更好的利用有限空间;
2)SQL中将数据类型分为三大类:数值类型,时间日期类型,字符串类型;
1、数值型:都是数值,系统将数值型分为整数型和小数型
1.整数型:存放整形数据:在SQL中因为更多考虑如何节省磁盘空间,所以系统将整数型又细分为5类 :
Tinyint :迷你整型1字节 Smallint:小整型2字节 Mediumint : 中整型3字节 Int :标准型 4字节 Bigint :大整型8字节
2.小数型:带有小数点或超出整数范围的数值类型;在SQL中又把小数型分为两种:浮点型和定点型
1.浮点型:小数点浮动,精度有限,而且会丢失精度
2.定点型:小数点固定,精度固定,不会丢失精度
浮点型的数据是一种精度型数据,因为超出指定范围后,会丢失精度(自动四舍五入)
浮点型:理论分为两种精度:
float: 单精度4字节
double:双精度8字节
插入数据时可以是小数,也可以使科学计数法
定点型:Decimal:绝对的保证整数部分不会被四舍五入;
2、时间日期类型:
1.datetime :时间日期,格式是yyyy-mm-dd HH:ii:ss ,表示的是1000到9999年,有0值:0000-00-00 00:00:00
2.date:日期,就是datetime种的date部分
3.time:时间(段),值某个区间之间,时间到+时间
4.timestamp:时间戳,并不是时间戳,只是从1970开始的YYYY-mm-dd HH:ii:ss 格式与datetime完全一致
5.year:年份,两种形式,year(2)和year(4):1901-2156
3、字符串类型:
1.在SQL中,将字符串分为6类:char ,varchar ,text ,blob ,enum ,set
1.定长字符串:char ,磁盘(二维表)在定义结构的时候,就已经确定了最终的数据的存储长度
2.char(L): L代表length ,可以存储长度,单位为字符,最大长度为255;
3.char(4): 在UTF8环境下,需要4*3=12字节;
4.变长字符串:varchar 在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体的数据来确定的;
5.varchar(L): L 表示字符长度, varchar(10)在UTF8环境下,10*3+1=31字节
6.如何选择定长或变长字符串呢?
定长的磁盘空间比较浪费,但是效率高,如果数据基本长度都一样,就用定长;例子:身份证,电话号码,电话号码
变长的磁盘空间比较节省,但是效率低,如果数据不能确定长度,例子:姓名,地址等;
7.文本字符串:
1.如果数据量非常大,通常说超过255个字符会使用文本字符串;
2.文本字符串根据存储的数据格式来分类:text, blob;
text:存储文字(二进制数据实际上都是存储路劲)
blob:存储二进制数据
8.枚举字符串:enum
1.事先将所有可能出现的结果都设计好了,实际上存储的数据必须是定好的数据中的一个
2.定义:enum 例如:(“男”“女” “不男不女”“保密”)
2.列属性:
1)列属性:真正的约束字段是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性
2)列属性有很多:NULL/NOT NULL ,default , Primary key , auto_increment ,comment
3.空属性:
1)两个值:NULL(默认的)和NOT NULL(不为空)
2)虽然默认的,数据库基本都是字段为空,但是实际上在真是开发的时候,尽可能的要保证所有数据都不应该为空:空数据没有意义,空数据没办法参加运算。
4.列描述:
1)列描述:comment ,描述,没有实际含义:是专门用来描述字段,会根据表创建语句保存:用来给程序员(数据库管理员)进行了解的;
5.默认值:
1)默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好:在需要真是数据的时候,用户可以选择性的使用默认值。
2)默认值关键字:default ,默认值得生效:使用,在数据进行插入的时候,不给改字段赋值,可以用关键字:default代替值;
6.字段属性:
1)主键,唯一键和自增长;
2)主键:primary key ,主要的键,一张表里只能有一个字段可以是用对应的键,用来唯一的约束该字段里面的数据,不能重复,这种键称为主键,一张表最多只能有一个主键;
1、SQL中操作有很多种方式可以给表增加主键,大体可以分为3种:
方案一:创建表的时候在字段后面直接跟primary key 关键字,主键本身不予许为空;优点:非常直接,缺点:只能使用一个字段作为主键
方案二:在创建表的时候,在所有的字段之后,使用primary key 来创建主键(如果有多个字段作为主键,可以是复合主键)
方案三:当表创建好了以后再额外的追加主键,可以通过修改表字段属性,也可以直接追加:
语法:alter table 表名 add primary key(字段列表);前提表中的字段对应的数据本身是独立的(不重复)