创建数据表

基本语法:

1 create  table  数据表名称(
2     字段名称  字段类型  字段约束,
3     ...
4 )[表选项];

字段类型

整数型

1 tinyint :占用1个字节的长度,无符号型,可以表示0-255,有符号型,可以表示-128-127
2 smallint :占用2个字节的长度,无符号型,可以表示0-65535,有符号型,可以表示-32768-32767
3 mediumint :占用3个字节的长度,无符号型,可以表示0-16777215,有符号型,可以表示-8388608-8388607
4 int :占用4个字节的长度,无符号型,可以表示0-4294967295,有符号型,可以表示-2147483648-2147483647
5 bigint :占用8个字节的长度

使用推荐

1 ①对于人的年龄,建议使用tinyint
2 ②对于动物的年龄,建议使用smallint
3 ③对于文章的数量,建议使用mediumint
4 ④对于商品的数量,建议使用int
5 ⑤对于大型的整型计数,建议使用bigint

插入科学计数法

1 insert into sh_int(id3) values (1.23e5);
2 结果:12300

小数型

1 ①浮点型
2 float(M,D):占用4个字节的存储空间,能表示的十进制有效位:8位
3 double(M,D):占用8个字节的存储空间,能表示的十进制有效位:16位
4 ②定点型
5 decimal(M,D):占用空间不是固定的,变长。
6 记住:M代表总长度(包括整数部分+小数部分),D小数点后面的位数。

如果decimal没有指定M与D,则默认返回整数,小数位会自动采用四舍五入

在小数类型中,其M值一定不能超过指定的M值,否则无法插入数据。

在小数类型中,如果D值超过了指定的D值,其是可以正常插入的,但是其结果会进行四舍五入

如果整数位+小数位超过了M,整数部分没有越界但是小数部分越界了,四舍五入,???从高位起,能存几位,存几位???

字符串型

char与varchar

1 char(M)类型:定长,M的最大值为255,对编码格式没有要求
2 varchar(M)类型:变长,M的理论值65535,但是还要特别注意,
3     其还需要1-2个字符存储长度信息,而且还需要1个字符左右存储额外的信息(如Null)。
4     所以实际上它真正能使用存储数据的大约只有65532。
5     另外M还与编码格式有关,如果GBK格式,还需要除2,如果是UTF8还要除3。

char与varchar区别

1 存储方式不同:
2     char固定长度,先开辟内存空间,然后在存储数据。如果数据没有填充满M长度,则会造成空间的浪费。
3     varchar变长,先开辟内存空间,根据存储的数据调整空间大小,避免空间的浪费
4 效率也不同:
5     char是固定长度,不需要额外的计算,所以其效率要高于varchar类型。
6 两者对于空格的处理方式不同:
7     char类型:会自动去除元素的首位空格
8     varchar类型:会自动保留元素的首位空格

text文本类型

使用text文本类型用于存储数据,例如存储文章的内容、产品的详细介绍...

创建文章表,基本语法:

1 create  table  sh_article(
2    id  mediumint,
3    title varchar(40),
4    description varchar(255),
5    content text
6 ) engine = myisam default charset=utf8;

blob二进制类型

1 blob可以保存二进制数据,
2 在实际应用中可以保存图片、附件等资源。
3 但是在实际应用中,此类型很少使用,
4 实际资源数据通常是以路径方式进行保存,而不会资源本身,对于空间过于浪费。

enum枚举类型(多选一,单选情况)

基本语法:

1 create  table  sh_user(
2    id  int,
3    username  varchar(10),
4    password  char(32),
5    age tinyint unsigned,
6    sex enum(‘男’,’女’,’保密’),
7    address varchar(255)
8 ) engine = myisam default charset=utf8;

在实际应用中,enum中的选项是由数量限制的,数量为65535。

set集合类型(复选情况)

复选框情况在实际保存时,通常是这样保存的:项1,项2,项3...

基本语法:

1 create  table  sh_user(
2    id  int,
3    username  varchar(10),
4    password  char(32),
5    age tinyint unsigned,
6    sex enum(‘男’,’女’,’保密’),
7    hobby set(‘吃饭’,’睡觉’,’打豆豆’),
8    address varchar(255)
9 ) engine = myisam default charset=utf8;

时间类型

基本语法:

1 create  table  sh_time(
2       dt  datetime,
3       ts  timestamp,
4       d   date,
5       t   time,
6       y   year
7 ) engine = myisam default charset=utf8;

相关细节

 1 ①datetime与timestamp类型的区别?
 2 第一:两者表示的范围不同,datetime范围更广
 3 第二:timestamp不能为空,其拥有默认值,默认值为当前服务器的时间,而且在当前记录更新时,其时间字段也会随之更新。
 4 
 5 ②在实际项目开发中,一般我们选择哪种时间类型呢?
 6 如果我们使用PHP编程语言,一般情况下在存储时间时,通常不会使用时间类型,而是使用int类型进行存储。
 7 在PHP中,可以使用time()获取当前时间的时间戳,其返回一个整数,存储比时间类型更加节省空间,而且PHP中的内置函数,提供了对时间的格式化函数date()函数。
 8 <?php
 9     $addtime = time();
10     echo ‘datetime:’.date(‘Y-m-d H:i:s’,$addtime);
11 ?>

探究varchar类型的最大值

1、gbk格式

2、utf8格式

 

 

字段约束

00、unsigned无符号型

基本语法:

1 ①创建时指定无符号型
2 create  table  数据表名称(
3     字段名称    整数类型    unsigned,
4    ...
5 ) [表选项];
6 
7 ②修改字段的类型
8 alter table 数据表名称 modify  字段名称    字段类型  unsigned;

0、zerofill零填充

基本语法:

1 ①使用desc查看数据表的表结构
2 desc sh_int;
3 ②zerofill零填充
4 在MySQL中,整数型数据后面的数字只和zerofill有关系,代表0填充,
5 如果当前字段为无符号型,默认长度为4,但是实际输入的数据只有2位,则系统会自动在前面添加两个0,形成00数据.

1、空值约束

基本语法:

1 create  table   sh_goods(
2    id int not null,
3    title varchar(40) not null,
4    description varchar(255),
5    price decimal(11,2) not null,
6    content text,
7    addtime int
8 ) engine = myisam default charset=utf8;

2、主键约束

主键约束:强调数据不能为空、强调数据不能重复。

基本语法:

 1 //第一种
 2 create table sh_goods(
 3   id int not null primary key,
 4 title varchar(40) not null,
 5    description varchar(255),
 6    price decimal(11,2) not null,
 7    content text,
 8    addtime int
 9     ) engine = myisam default charset=utf8;
10 
11 //第二种
12 create table sh_goods(
13   id int not null,
14  title varchar(40) not null,
15   description varchar(255),
16   price decimal(11,2) not null,
17   content text,
18   addtime int,
19  primary key(id)
20     ) engine = myisam default charset=utf8;
21 
22 //第三种
23 alter table  sh_goods  add  primary key(id);

自动增长

基本语法:

1 create  table  sh_goods(
2     id int not null auto_increment,
3     title varchar(40) not null,
4     description varchar(255),
5     price decimal(11,2) not null,
6     content text,
7     addtime int,
8     primary key(id)
9 ) engine=myisam default charset=utf8;

查看自动增长,其每次增长的步长,基本语法:

1 show variables like ‘auto_increment%’;

设置步长

1 set auto_increment_increment=5;

设置起始值

1 alter table sh_goods auto_increment=60;

默认值(default)

基本语法:

1 create  table  sh_user(
2    id  int,
3    username  varchar(10),
4    password  char(32),
5    age tinyint unsigned,
6    sex enum(‘男’,’女’,’保密’) default‘女’,
7    hobby set(‘吃饭’,’睡觉’,’打豆豆’),
8    address varchar(255)
9 ) engine = myisam default charset=utf8;

触发方式一共有两种形式:

①插入数据时,不插入默认值字段

②插入数据时,默认值字段使用default

字段备注(comment)

基本语法:

1 create  table  数据表名称(
2     字段名称    字段类型    字段约束   comment  ‘字段备注’
3 )[表选项];

唯一键约束(unique key)

主键强调:不能为空,不能重复。

唯一键强调:不能重复,但是可以为空。为空字段会自动忽略。

基本语法:unique [key]

 1 第一种创建方式:
 2 create  table  数据表名称(
 3    id  int   unique key
 4 )[数据表选项];
 5 
 6 第二种创建方式:
 7 create  table  数据表名称(
 8    id  int,
 9    unique key(id)
10 )[数据表选项];
11 
12 //第三种创建方式
13 alter table 数据表名称 add unique key(id);

唯一键删除

1 alter  table  数据表名称  drop  index  唯一键名称;

逐渐删除

1 alter  table  数据表名称  drop   primary key;

 

 

 

###################################################################

 

posted on 2018-04-16 15:35  &&||!  阅读(196)  评论(0编辑  收藏  举报