设为首页 收藏本站
查看: 412|回复: 0

随笔十九 :SQL的约束条件

[复制链接]
累计签到:528 天
连续签到:1 天
发表于 2023-9-16 11:19:26 | 显示全部楼层 |阅读模式
9、约束条件(constraint)1、null   not null(不为空)
​                        create table t1(id int,name char not null);
​                        宽度和约束条件到底什么关系?
​                        宽度时用来限制数据的存储
​                        约束条件时在宽度基础之上增加额外约束
2、zerofill(零填充)3、unsigned(无符号)4、default 默认值
        ## 补充知识点 插入数据的时候可以指定顺序
            create table t1(
                id int,
                name varchar(16)
            );
            insert into t1(id,name) values(1,'egon');
            create table t2(
                id int,
                name varchar(16),
                gender enum('male','female','others') default 'male'
            );
            insert into t2(id,name) values(1,'egon');=>gender默认字段位male     
            insert into t2(id,name) values(1,'egon','female');
            5、unique唯一
        # 单列唯一
        create table t3(
                id int unique,
                name varchar(16)
            );
        insert into t3 values(1,'jason'),(1,'egon');
        insert into t3 values(1,'jason'),(2,'egon');
        # 联合唯一
        """
        ip和port
        """
        id  ip  port
        1   1   2
        2   1   2
        3   1   2
        create table t4(
                id int,
                ip char(16),
                port int,
                unique(ip,port) # 放到最后写辨识度高一点
            );
        insert into t4 values(1,'127.0.0.1',8080);
        insert into t4 values(2,'127.0.0.1',8081);
        insert into t4 values(3,'127.0.0.2',8081;
        insert into t4 values(3,'127.0.0.2',8080); =>错误6、primary key 主键
    """
    1、单单从约束效果来看primary key 等价于not null +unique
    非空且唯一!!!
    """
                    create table t5(id int primary key);
                    insert into t4 values(null); =》报错
                    insert into t4 values(1),(1); =》报错
                    insert into t4 values(1),(2);
    """
    2、他除了有约束效果之外 他还是Innodb存储引擎组织数据的依据
    Innodb存储引擎在创建表的时候必须有primary key
    因为他类似与书的目录 能够帮助提示查询效率并且也是建表的依据
    """
    # 1、一张表有且只有一个主键 如果你没有设置主键 那么会从上往下搜索,直到遇到一个非空且唯一的字段将他自动升级位主键
           create table t6(
               id int,
               name char(16),
               age not null unique,
               addr not null unique
               );
                                    
                                    
    # 2、如果表中没有主键也有其他任何非空且唯一字段 那么Innodb会采用自己内部提供的一个隐藏字段作为主键,隐藏以为这你无法使用他,也无法提升查询速度
    # 3、一张表中通常都应该有一个主键字段 通常以id字段作为主键
    create table t5(
        id int primary key
        name char(16)
        );
    #### 4、联合主键(多个字段联合起来作为表的主键 本质还是一个主键)
    create table t4(
                ip char(16),
                port int,
                primary key(ip,port) # 放到最后写辨识度高一点
            );   
     """
     也就以为这  以后我们在创建表的时候一定要添加primary key
     """7、auto_increment自增
# 当编号特别多的时候 人为的去维护太麻烦,完整语法如下
    create table t8(
                id int primary key auto_increment,
                name char(16),
            );
    insert into t8(name) values('jason'),('egon'),('kevin');
## 注意auto_increment 通常都是加载主键(序号、编号),不能给普通字段会报错
## 补充
delete from 在删除主键自增不会停止
如果主键的值被清除,下次在添加的时候还是会接着上一次的自增,因为内部维护了一个计数器
truncate 表
这个命令可以清除数据,并且充值主键8、结论
"""
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候
id int primary key auto_increment
"""



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-1004050-1-1.html 上篇帖子: 随笔十八:SQL的其他用法 下篇帖子: 随笔二十:SQL外键与表之间对应关系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表