SQL列属性
来源:互联网 发布:windows视频放大缩小 编辑:程序博客网 时间:2024/06/06 07:27
列属性:
真正的约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来保证数据的合法性。
列属性有很多:NULL / NOT NULL,default,primary key,unique key,auto_increment,comment
空属性
虽然数据库基本都是字段为空,但是开发的时候,尽量保证所有的数据都不应该为空,空数据没有意义,空数据也没有办法参与运算。
创建一个实际案例表:班级表(名字,教室)
列描述
列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存。用来给数据管理员来进行了解的。
默认值
默认值:某一种数据会经常性的出现某个具体的值。可以在一开始就制定好,在需要的时候,用户可以选择性的使用。
默认值的生效:在数据进行插入的时候,不给数据赋值就是默认值。
主键
主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据。不能重复。这种称之为主键。
一张表中只能有最多一个主键。
增加主键:
SQL操作中有多种方式可以给表增加主键,大体分为三种:
方案1. 在创建表的时候,直接字段之后跟primary key 关键字(主键本身不能为空)
优点:非常直接
缺点:只能使用一个字段作为主键
方案2. 在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键
如果有多个字段作为主键,可以是复合主键
方案3:当表已经创建好之后,再次追加主键,可以通过修改表字段属性,也可以直接追加
Alter table 表名 add primary key(字段列表);
前提:表中字段对应的数据本身是独立的(不是重复的)
主键约束
主键对应的字段中的数据不允许重复。
更新主键 & 删除主键
没有办法更新主键,主键必须先删除,才能增加
alter table 表名 drop primary key;
主键分类
在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如学号,课程号),大部分的时候是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系)
create table my_student(id int primary key auto_increment comment '逻辑主键',number char(10) primary key comment '学号'name varchar(20) not null comment '姓名',)charset utf8;
自动增长
自增长:当对应的字段,不给值或者给默认值,或自动被系统触发,系统会从当前字段中已有的最大值再进行 +1操作,得到一个新的在不同的字段。
自增长通常是跟主键搭配。
新增自增长
自增长的特点:
1. 任何一个字段要做自增长,必须前提是本身是一个索引(key 一栏有值)
2. 自增长字段必须是数字(整型)
3. 一张表最多只能有一个自增长
自增长的使用
当自动增长被给定的值为NULL,或者默认值,会触发自增长
自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能正确的自增长(最大值+1)
如何确定下一次是什么自增长呢?可以通过查看表创建语句。
修改自增长
自增长如果涉及到字段改变,必须先删除自增长,后增加。
修改当前自增长已经存在的值。(只能比当前已有的自增长的最大值大)
alter table 表名 auto_increment = 值;
思考:为什么自增长是从1开始?为什么每次都是自增1呢?
所有系统的表现 (字符集、校对集…)都是由系统内部的变量进行控制的
可以修改变量实现不同的效果:修改是对整个数据库修改,而不是单张表,(修改是会话级别)
set auto_increment_increment = 5; – 一次自增5
删除自增长
自增长是字段的一个属性,可以通过modify来进行修改(保证字段没有auto_increment即可)
alter table 表名 modify 字段 类型;
唯一键
一张表汪汪有很多字段需要具有唯一性。唯一键(unique key)就可以解决该问题
唯一键的本质与主键差不多,唯一键默认的允许自动为空,而且可以多个为空。
增加唯一键
与主键差不多,三种方案
方案1:在创建表的时候,字段之后直接跟unique 或unique key。
方案2:在所有的字段之后增加unique。– 复合唯一键
方案3:在创建表之后,增加唯一键
唯一键约束
如果唯一键也不允许为空,与主键的约束作用是一样的
更新唯一键 & 删除唯一键
更新唯一键:先删除后新增(可以不删除,唯一键可以有多个)
删除唯一键
alter table 表名 drop unique key; – 错误
alter table 表名 drop index 索引名字; – 唯一键默认使用字段名作为索引
- SQL列属性
- sql server2008修改列属性
- sql中的modify语句,修改列属性
- 修改Sql Server列属性时报错
- sql server 修改列属性为非必填项
- sql查询表名、列名、列属性
- SQL查询表名、列名、列属性
- SQL查询表名、列名、列属性
- 数据库sql 查询列属性 增加列 修改列长度 建表 自增
- mysql/sql多行 转 多列,行属性转列属性
- Sql Server 中如何删除列的identity属性
- SQL Update 批次更改同列属性值
- SQL Server——列属性:默认值或绑定
- SQL SERVER中利用IDENTITY属性创建自动ID列
- mysql:sql alter table 修改列属性的字符集
- mysql:sql alter (增加表的列属性)
- SQL server2008获取创建表里各列的属性
- SQL之列名属性为关键字时如何查询
- (学习)yum命令:安装、更新rpm包
- Html元素的Id终不能包含点
- Linux系统下的/dev目录
- LCA(最近公共祖先算法)之在线st表法
- tomcat连接器加密基础
- SQL列属性
- github学习(2)--版本间修改
- 324. Wiggle Sort II(难)
- 在阿里云Centos 7上安装mosquitto
- java中的集合
- 自定义控件入门1-paint与canvas常用的方法介绍
- JSON字符串转换为Map
- 迷宫求解(栈实现)
- 136. Single Number