mysql数据库表复用_MySQL 数据库之表操作

一、创建表的完整语法

create table 表(

字段名1 类型 [(宽度) 约束条件],

字段名2 类型 [(宽度) 约束条件],

字段名3 类型 [(宽度) 约束条件]

);

1.类型:使用限制字段必须以什么样的数据类型传值

约束条件:约束条件是在类型之外添加一种额外的限制

2.注意点

1.在同一张表中,字段名不能相同

2.宽度和约束条件可选,字段名和类型是必须的

3.最后一个字段后不用加逗号

二、基本的数据类型:

1、整型

1、作用:id号,各种号码,年龄,等级

2、分类: tinyint,int,bigint

3、注意:强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制

所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,

默认的显示宽度,足够显示完整当初存放的数据

73d3070f9979245c0f7dadd460e817f6.png

int的存储宽度是4个Bytes,即32个bit,即2**32

无符号最大值为:4294967296-1

有符号最大值:2147483648-1

有符号和无符号的最大数字需要的显示宽度均为10,而针对有符号的最小值则需要11位才能显示完全,所以int类型默认的显示宽度为11是非常合理的

最后:整形类型,其实没有必要指定显示宽度,使用默认的就ok

2、浮点型

1.作用:存储身高、体重、薪资

2.分类:float、double、decimal

create table t3(x,float(255,30));

create table t4(x,double(255,30));

create table t5(x,decimal(65,30));

insert into t3 values(1.111111111111111111111111111111)

insert into t4 values(1.111111111111111111111111111111)

insert into t5 values(1.111111111111111111111111111111)

cmd运行

mysql> select * fromt9;+----------------------------------+

| x |

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

| 1.111111164093017600000000000000 |

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

1 row in set (0.00sec)

mysql> select * fromt10;+----------------------------------+

| x |

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

| 1.111111111111111200000000000000 |

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

1 row in set (0.00sec)

mysql> select * fromt11;+----------------------------------+

| x |

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

| 1.111111111111111111111111111111 |

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

1 row in set (0.00 sec)

3.相同点:

1.对于三者来说,都能存放30位小数,

4.不同点:

1.精度的排序从低到高:float、double、decimal

2.float与double类型能存放的整数位比becimal更多

3、字符类型

1.作用:姓名,地址,描述性的信息

2.分类:

char :  定长,简单粗暴,浪费空间,存取速度快

字符长度范围:0-255(一个中文是一个字符,是utf8编码的3字节)

例如:指定长度为10,存>10个字符则报错,存<10个字符则用空格填充直到凑够10个字符存储

varchar :变长,精确,节省空间,存取速度慢

字符长度范围:0-65535(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-8

强调:varchar类型会在真实数据前加1-2Bytes的前缀,该前缀用来表示真实数据的bytes字节数(1-2Bytes最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够使用)

存储:varchar类型存储数据的真实内容,不会用空格填充,如果'ab ',尾部的空格也会被存起来

create table t12(x char(4)); #超出4个字符则报错,不够4个字符则用空格补全成4个字符

create table t13(y varchar(4));#超出4个字符则报错,不够4个字符那么字符有几个就存几个

insert into t12 values('hello');

insert into t13 values('hello');

insert into t12 values('a'); #'a '

insert into t13 values('a'); #'a'

setglobal sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

select char_length(x)from t12; #4

select char_length(y) from t13; #1

注意:

针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中

但会在读出结果时自动去掉末尾的空格,因为末尾的空格在字段明确地等于一个值的场景中是无用

4、日期类型

分类:

date:1999-01-27

time:11:11:11

datetime:1999-01-27  11:11:11

year: 1999

create table student(->id int,-> name varchar(20),->born_year year,->birth date,->class_time time,->reg_time datetime);insert into student values-> (1,'alex',"1995","1995-11-11","11:11:11","2017-11-11 11:11:11"),-> (2,'egon',"1997","1997-12-12","12:12:12","2017-12-12 12:12:12"),-> (3,'wsb',"1998","1998-01-01","13:13:13","2017-01-01 13:13:13");

MariaDB [db1]> select * fromstudent;+------+------+-----------+------------+------------+---------------------+

| id | name | born_year | birth | class_time | reg_time |

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

| 1 | alex | 1995 | 1995-11-11 | 11:11:11 | 2017-11-11 11:11:11 |

| 2 | egon | 1997 | 1997-12-12 | 12:12:12 | 2017-12-12 12:12:12 |

| 3 | wsb | 1998 | 1998-01-01 | 13:13:13 | 2017-01-01 13:13:13 |

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

5、枚举与集合类型

作用与分类:

枚举enum,多选一个

集合set,多选多

create table consumer(

name char(16),

sex enum('male','female'),

level enum('vip1','vip2','vip3','vip4','vip5',)

hobby set ('play','music',read','study'));

insert into consumer values

('egon','male','vip5','read,study'),

('alex','female','vip1','girl');

cmd 运行

select* fromconsumer;+------+--------+-------+------------+

| name | sex | level | hobby |

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

| egon | male | vip5 | read,study |

| alex | female | vip1 | |

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

三、约束条件

1、not null 与default

是否可空,null表示空,非字符串

not null   不可空

null    可空

默认值,创建列表可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

create table t15(

id int,

name char(16) notnull,

sex enum('male','female','other') not null default "male");

insert into t15(id,name) values

(1,'egon1'),

(2,'egon2'),

(3,'egon3');

cmd 运行

mysql>desc t15;+-------+-------------------------------+------+-----+---------+-------+

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

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

| id | int(11) | YES | | NULL | |

| name | char(16) | NO | | NULL | |

| sex | enum('male','female','other') | NO | | male | |

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

3 rows in set (0.04 sec)

2、unique:限制字段的值唯一(就是独一无二)

#单列唯一

create table t16(

id int unique,

name char(16)

);#联合唯一

create table server(

id int unique,

ip char(15),

port int,

unique(ip,port)

);

3、primary key:单单从约束角度去看,primary key 就等同于not null unique

1.强调

1.一张表中必须有,并且只能有一个主键

2.一张表中都应该有一个id字段,而且应该把id字段做成主键

单列做主键

create table t11(

id int primary key,

name char(16),

age int,

sex char(6)

);

联合主键

create table t12(

ip char(15),

port int,

primary key(ip,port)

);

单列cmd查看:

mysql>desc t11;+-------+----------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | char(16) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

| sex | char(6) | YES | | NULL | |

+-------+----------+------+-----+---------+-------+联合cmd查看:

mysql>desc t12;+-------+----------+------+-----+---------+-------+

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

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

| ip | char(15) | NO | PRI | | |

| port | int(11) | NO | PRI | 0 | |

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

4、auto_increment

约束字段为自动增长,被约束的字段必须同时被key约束

create table t13(

id int primary key auto_increment,

name char(16)

);

mysql> insert into t13(name) values('egon'),('alex');

cmd 运行:

mysql> select * fromt13;+----+------+

| id | name |

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

| 1 | egon |

| 2 | alex |

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

2 rows in set (0.02 sec)

1.注意点:

1.通常与primary key连用,而且通常是给id字段加

2.auto_incremnt只能给被定义成key(unique key,primary key)的字段加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值