• 定义列属性:null,default,PK,auto_increment


    *定义列属性*

    1、列属性NULL:
      是否为空,规定一个字段的值是否可以是null;
      null|not null

    2、默认值属性:default value 

      默认值,在没有为该字段设置值时启用;而且默认值的设置需要使用“固定值”。
      常见的是:一个字段不能为空,而且存在默认值。

      例子:CREATE TABLE s_2 ( a int not null default 10, b int not null default 20 );
      解析:当插入某值时,有某字段没有插入值,则会采用默认值自动插入。default value

      例子:CREATE TABLE s_3 ( a int not null default 10, b int default 20 );
      解析:此时b可以为空(null),虽然设置了默认值,只有当b没有插入相关值才会使用默认值。
      INSERT INTO s_3 ( 10,null );#此时的b值为null

    3、主键和唯一索引:

    3.1:主键:PK (primary key) 可以唯一标识,某条记录的字段或者是字段的集合,就是主键。

      【注意】主键可以是 真实实体的属性。但是常用的好的解决方案是:利用一个与实体信息不相关的属性,作为唯一标识。
    主键与业务逻辑不发生关系,只用来标识记录。一个表只能有一个 主键 。

    3.1.1:设置主键语法:primary key
    (1)在字段上设置:
        例子:CREATE TABLE s_3 (id int primary key,name varchar(10),class_name varchar(15));
        解析:此时字段id的值必须是唯一的,不能重复,否则报错。


    (2)在定义完字段后,可以定义:可以定义多列主键(组合主键)
        例子:CREATE TABLE s_4 (id int,name varchar(10),class_name varchar(15),primary key (id));
        多列主键:CREATE TABLE s_4 (name varchar(10),class_name varchar(15),primary key (name,class_name));
        解析:定义完字段后,在定义主键和多列主键(组合主键)

    【注意】组合主键的意义:一个主键内包含多个字段,而不是多个字段都是主键。只需要一个标识即可。mysql规定一个表只能有一个 主键 。

    【要求】
        常见的设计,每个表都应该存在一个可以唯一标识的 主键字段 ,最好与实体没有联系,不是实体属性。


    4、自动增长:
      为每条记录提供一个唯一的标识;每次插入记录时,将某个字段的值自动增加1,使用auto_increment标识。
      需要是整型,还需要索引;插入数据时,可以选择插入null或者不插入。

      例子:CREATE TABLE s_5 (id int primary key auto_increment,name varchar(10),class_name varchar(15));
      解析:插入数据:INSERT INTO s_5 VALUES(1,'alex','3301');
      INSERT INTO s_5 (name,class_name) VALUES('alex','3302');
      ......
      此时可以不用指定id字段的值,它会自动在初始值的基础上加1填充。

    【注意】自动增长的初始值,是可以设置的,默认是1;通过表的选项:auto_increment n #n为初始值
        例子:ALTER TABLE s_5 auto_increment 10;
        解析:修改auto_increment初始值

    【严重注意】如果n的值小于已经存在的主键的值:系统默认从大的那个主键的值开始加1。

      *-->问题1:是否可以手动插入某列的值?

      答:可以,但是如果是插入一个已经存在的主键,则失败,因为一个表中主键不可重复。
      例子:INSERT INTO s_5 VALUES(5,'bob','3306');
      解析:此时就可以插到从第1行开始的第5行。

      *-->问题2:某列是否可以更新?

      答:可以更新,前提是主键不发生冲突,既主键不重复。
      例子: UPDATE s_5 set id=6 where name='bob';
      解析:将满足条件name=bob的id改为6。

      *-->问题3:自动增长设置为20,数据库已经存在大于20的记录,删除所有的大于20的记录。
      问:插入数据时,id(主键)为多少?
      答:id(主键)仍然会从删除前设置的最后一个主键加1开始计算。删除命令:DELETE FROM s_6 WHERE id>=20;
    详细数据参考如下:

    1)删除前:
    MariaDB [test]> SELECT *FROM s_6;
    +----+-------+---------+
    | id | name | hobby |
    +----+-------+---------+
    | 1 | alex1 | tennis |
    | 2 | alex2 | tennis2 |
    | 3 | alex3 | tennis3 |
    | 20 | alex4 | tennis4 |
    | 21 | alex5 | tennis5 |
    | 22 | alex6 | tennis6 |
    | 23 | alex7 | tennis7 |
    | 24 | alex8 | tennis8 |
    +----+-------+---------+
    2)删除后:
    MariaDB [test]> SELECT *FROM s_6;
    +----+-------+------------+
    | id | name | hobby |
    +----+-------+------------+
    | 1 | alex1 | tennis |
    | 2 | alex2 | tennis2 |
    | 3 | alex3 | tennis3 |
    | 25 | alex4 | basketball |
    | 26 | alex5 | basketball |
    +----+-------+------------+

  • 相关阅读:
    GIF文件转换为头文件工具
    深夜杂想
    swift项目第十天:网络请求工具类的封装
    swift项目第九天:正则表达式的学习
    swift项目第八天:自定义转场动画以及设置titleView的状态
    swift项目第七天:构建访客界面以及监听按钮点击
    swift项目第六天:中间发布按钮的封装以及监听点击事件
    swift项目第五天:swift中storyBoard Reference搭建主界面
    swift项目第四天:动态加载控制器
    swift项目第三天:手写代码搭建主框架
  • 原文地址:https://www.cnblogs.com/python-wen/p/10013094.html
Copyright © 2020-2023  润新知