网站备案的服务器,一二三四免费观看高清视频,国外比较开放的浏览器,首页关键词排名优化目录
1. 空属性 NULL
2. 默认值 DEFAULT
3. 列描述comment
4. zerofill
5. 主键 PRIMARY KEY
6. 自增长AUTO_INCREMENT
7. 唯一键UNIQUE
8. 外键 真正约束字段的是数据类型#xff0c;但是数据类型约束很单一#xff0c;需要有一些额外的约束#xff0c;更好的保证数…目录
1. 空属性 NULL
2. 默认值 DEFAULT
3. 列描述comment
4. zerofill
5. 主键 PRIMARY KEY
6. 自增长AUTO_INCREMENT
7. 唯一键UNIQUE
8. 外键 真正约束字段的是数据类型但是数据类型约束很单一需要有一些额外的约束更好的保证数据的合法性从业务逻辑角度保证数据的正确性。比如有一个字段是email要求是唯一的。 表的约束很多这里主要介绍如下几个 null/not null,default, comment, zerofillprimary key auto_incrementunique key 。 1. 空属性 NULL
两个值null 和 not null - 为空或不为空
数据库默认字段基本都是字段为空但是实际开发时尽可能保证字段不为空因为数据为空没法参与运算。
create table student (name varchar(20) not null,class varchar(10) not null
);如果设置为null那么在插入数据的时候必须有数据插入。 2. 默认值 DEFAULT
默认值某一种数据可能会经常的出现某个具体的数据可以在一开始就制定好在需要真实数据的时候在进行修改用户可以选择性的使用默认值。
比如在女子学院里面可以将性别这一个属性默认设置为女。
create table test_default (name varchar(20) default 张三
); // 创建一个表insert into test_default values(); // 插入数据但是不指定任何值select * from test_default; // 查询表中的数据 默认值的生效数据插入的时候不给该字段赋值就使用默认值。
insert into test_default values(lisi);select * from test_default 只有设置了default的列才可以在插入值的时候对列进行省略 --注意not null和defalut一般不需要同时出现因为default本身有默认值不会为空
3. 列描述comment
列描述comment没有实际含义专门用来描述字段会根据表创建语句保存用来给程序员或DBA来进行了解。
create table test_comment (name varchar(20) not null comment 姓名,sex char(2) default 女 comment 性别
);
通过desc查看不到注释信息。
desc test_comment; 通过show可以看到
show create table test_comment 4. zerofill
刚开始学习数据库时很多人对数字类型后面的长度很迷茫。
create table test_zerofill (age int(10)
)show create table test_zerofill; 这里面的int(10)代表什么意思整形int不应该是4字节吗这个10代表什么其实没有zerofill这个属性括号内的数据时毫无意义的。
现在插入一条数据
insert into test_zerofill values(5);select * from test_zerofill; 现在将age列添加上zerofill字段。
alter table test_zerofill change age age int(5) zerofill;
select * from test_zerofill; 这次可以看到5变成了0……5这就是zerofill属性的作用如果宽度小于设定的宽度自动填充0.要注意的是这只是最后显示的结果在MySQL中实际存储的还是1。
5. 主键 PRIMARY KEY
主键PRIMARY KEY用来唯一的约束该字段里面的数据不能重复不能为空一张表中最多只能有一个主键主键所在的列通常是整数类型。
create table test_primary (id int not null primary key,name varchar(20) not null
);desc test_primary; 主键约束主键对应的字段中不能重复一旦重复操作失败。
insert into test_primary values(1, a), (1, b); 当表创建好以后但是没有主键的时候可以再次追加主键。
alter table table_name add primary key(字段列表) 删除主键
alter table table_name drop primary key; 复合主键
在创建表的时候在所有字段之后使用primary key(主键字段列表)来创建主键如果有多个字段作为主键可以使用复合主键。
create table test_1 (id int,name varchar(20),score tinyint,primary key(id, name)
);desc test_1; 6. 自增长AUTO_INCREMENT
AUTO_INCREMENT当对应的字段不给值会自动的被系统触发系统会从当前字段中已经有的最大值 1操作得到一个新的不同的值。通常和主键搭配使用作为逻辑主键。
自增长的特点
任何一个字段要做自增长前提是本身是一个索引(key一栏有值)自增长字段必须是整数一张表最多只能有一个自增长。
create table test_auto (id int unsigned primary key auto_increment,name varchar (10) not null default
);insert into test_auto(name) values(a);insert into test_auto(name) values(b);select * from test_auto; 。
索引 在关系数据库中索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录可以根据目录中的页码快速找到所需的内容。 索引提供指向存储在表的指定列中的数据值的指针然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快可快速访问数据库表中的特定信息。 7. 唯一键UNIQUE
一张表中有往往很多字段需要唯一性数据不能重复但是一张表中只有一个主键唯一键就可以解决表中有多个字段需要唯一性约束问题。
唯一键的本质和主键差不多唯一键允许为空而且可以多个为空空子段不做唯一性比较。
关于唯一键和主键的区别
主键更多的是标识唯一性唯一键更多的是保证在业务上不要和别的信息出现重复。
create table test_unique (id char(10) unique,name varchar(10)
);
插入第一条数据
insert into test_unique values(01, a);
插入第二条数据id的值和第一条数据的id值一样
insert into test_unique values(01, b); 插入第三条数据id值为空
insert into test_unique values(, b);
查询
select * from test_unique; 8. 外键
外键用于定义主表和从表之间的关系外键约束主要定义在从表上主表则必须是有主键约束或unique约束。当定义外键后要求外键列数据必须在主表的主键列存在或为null
foreign key (字段名) references 主表(列) create table myclass (id int primary key,name varchar(30) not null
);create table stu (id int primary key,name varchar(30) not null,class_id int,foreign key (class_id) references myclass(id)
);
正常插入数据
insert into myclass values(10, C大牛班),(20, java大神班);
插入一个班级号为15的学生因为没有这个班级是不会插入成功的。
insert into stu values(102, aa, 15);