zoukankan      html  css  js  c++  java
  • mariadb(二)增删改

    一.表的结构的增删改
    添加数据类型
    alter table 表名 add 字段 数据类型;    #如果字段存在则会报错 Duplicate column name '字段'
    #修改数据类型
    alter table 表名  modify 字段 数据类型;   #如果出现Truncated incorrect INTEGER value: '小明'的报错则是因为字段与数据类型不符
    #更改字段名甚至数据类型。
    alter table 表名 change 老字段 新字段 新数据类型;   #数据类型可改可不改,注意数据类型的更改要符合本身规则。
    #删除字段
    alter table 表名 drop 字段;

    查看表结构(字符,数据类型,约束)

    MariaDB [mysql]> desc s;
    +--------+-------------------------------------+------+-----+---------+----------------+
    | Field  | Type                                | Null | Key | Default | Extra          |
    +--------+-------------------------------------+------+-----+---------+----------------+
    | id     | int(10) unsigned                    | NO   | PRI | NULL    | auto_increment |
    | name   | varchar(20)                         | YES  |     | NULL    |                |
    | age    | tinyint(3) unsigned                 | YES  |     | 0       |                |
    | high   | decimal(5,2)                        | YES  |     | NULL    |                |
    | gender | enum('','','中性','保密')       | NO   |     | 保密    |                |
    | cls_id | int(10) unsigned                    | YES  |     | NULL    |

    插入字段的内容 (insert into 表 values (赋值))

    insert into s values(0,'酱爆',23,192.555,‘男’,1901)   
    #格局字段顺序赋予value值,id赋值0但是因为设置了auto_increment的主键,会自动增加为1; # 甚至可以赋值为default或者null,因为默认自增,综上来说,设置了主键自增的字段,添加数据的时候可以用0,
    null,default来做占位符。 # 另外往gender的字段内添加数据,可以根据索引来插入。即1为男,2为女.. #不管数据插入是否成功,自增都会生效

    查看表内数据

    select * from  表名;
    MariaDB [mysql]> select * from s;
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | high   | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  1 | 酱爆   |   23 | 192.56 | 男     |   1901 |
    |  2 | 酱爆   |   23 | 192.56 | 男     |   1901 |
    +----+--------+------+--------+--------+--------+

    几个报错分析:

    1.MariaDB [mysql]> insert into s values(null,'酱爆',23,192.455,null,1901);
    ERROR 1048 (23000): Column 'gender' cannot be null    #此报错是因为设置gender的null约束为NO,如果不设置的话,就将null默认为一个
    字符串插入。另外往gender的字段内添加数据,可以根据索引来插入。即1为男,2为女...
    1.Invalid default value for 'gender'   #此报错是因为前方null字段设置为空,而默认值设置不为空冲突
    2.column 'gender' has duplicate dvalue'?' in ENUMigned   #编码格式改为utf8
    Column count doesn't match value count at row 1        #添加的数据个数与字段个数不匹配
    3. Field 'id' doesn't have a default value #这是因为id的约束设置为非空值,并且没有默认值和主键自增

    部分插入

    insert into s (name,age) values('酱爆',23)
        -> ;
    Query OK, 1 row affected (0.002 sec)
    # 然后查看
    MariaDB [mysql]> select * from s;        #*代表所有
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | high   | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  1 | 酱爆   |   23 | 192.56 | 男     |   1901 |
    |  2 | 酱爆   |   23 | 192.56 | 男     |   1901 |
    |  3 | 酱爆   |   23 | 192.46 | 女     |   1901 |
    |  4 | 酱爆   |   23 |   NULL | 保密   |   NULL |
    +----+--------+------+--------+--------+--------+
    这里有两个需要注意的地方:
    1)id自增和gender为保密,这是因为设置了主键自增和设置了默认值为‘保密’
    2)high和cls_id为null,因为插入时没有赋值,会默认为null,但是这是建立在null的约束为YES的前提下,不然会报错。

    3)如果在id的字段内插入值,不能重复
    4)插入的汉字数据变成 ?,这是因为数据库字符集格式没改,试着改为utf8.
    5)如果没有改变字符集是无法将汉字当作默认值设置表结构的。

    插入指定字段(列)的多行信息
    insert into 表名 (字段,字段) values(赋值,赋值),(赋值,赋值)
    insert into baba (name,age) values('酱爆'23),(’熊大‘,23);
    | 5 | 酱爆   |   23 |   NULL | 保密   |   NULL |
    |  6 | 熊大   |  23 |  NULL  | 保密   |   NULL  |

    修改字段内数据(限定范围多用where)

    update s set name='zz' where name='酱爆';
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | high   | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  1 | zz     |   23 | 192.56 | 男     |   1901 |
    |  2 | zz     |   23 | 192.56 | 男     |   1901 |
    |  3 | zz     |   23 | 192.46 | 女     |   1901 |
    |  4 | zz     |   23 |   NULL | 保密   |   NULL |
    |  5 | zz     |   23 |   NULL | 保密   |   NULL |
    |  6 | 熊大   |   23 |   NULL | 保密   |   NULL |
    |  7 | zz     |   23 |   NULL | 保密   |   NULL |
    |  8 | 熊大   |   23 |   NULL | 保密   |   NULL |

    修改多个字段的内容(update 表 set ...)

    update s set name='baba' ,age=12 where id=1;
    MariaDB [mysql]> select * from s;
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | high   | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  1 | baba   |   12 | 192.56 | 男     |   1901 |
    |  2 | zz     |   23 | 192.56 | 男     |   1901 |
    |  3 | zz     |   23 | 192.46 | 女     |   1901 |
    |  4 | zz     |   23 |   NULL | 保密   |   NULL |
    |  5 | zz     |   23 |   NULL | 保密   |   NULL |
    |  6 | 熊大   |   23 |   NULL | 保密   |   NULL |
    |  7 | zz     |   23 |   NULL | 保密   |   NULL |
    |  8 | 熊大   |   23 |   NULL | 保密   |   NULL |
    +----+--------+------+--------+--------+--------+

    删除数据 (delete from 表  + 限定条件)

    delete from s where id =8;          
    #如果不用where限定会删除所有表内的数据,慎用

    删除用户:delete from user where user='' 

    删除后添加数据

    insert into s (name,age) values('酱爆',22);
    #查看字段信息(发现id为8的数据删除后,下条增加的数据id为9,这是因为id自增的属性在起作用,有一定的保护作用)
    MariaDB [mysql]> select * from s;
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | high   | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  1 | baba   |   12 | 192.56 | 男     |   1901 |
    |  2 | zz     |   23 | 192.56 | 男     |   1901 |
    |  3 | zz     |   23 | 192.46 | 女     |   1901 |
    |  4 | zz     |   23 |   NULL | 保密   |   NULL |
    |  5 | zz     |   23 |   NULL | 保密   |   NULL |
    |  6 | 熊大   |   23 |   NULL | 保密   |   NULL |
    |  7 | zz     |   23 |   NULL | 保密   |   NULL |
    |  9 | 酱爆   |   22 |   NULL | 保密   |   NULL |
    +----+--------+------+--------+--------+--------+

    查看表内数据:select * from 表名;

    查看表结构:desc 表名;

    查看表结构信息 :show create table 表名;

    逻辑删除

    1)增加字段并设置默认值为0

    alter table s add is_delete bit(1) default 0;

    2)插入新信息

    insert into s ('name','age') values('baba',13),('mama',14);

    3)查看(发现is_delete字段内容依然空白,这是因为默认为0的数据太小,不能查看到)

    MariaDB [mysql]> select * from s;
    +----+--------+------+--------+--------+--------+-----------+
    | id | name   | age  | high   | gender | cls_id | is_delete |
    +----+--------+------+--------+--------+--------+-----------+
    |  1 | baba   |   12 | 192.56 | 男     |   1901 |           |
    |  2 | zz     |   23 | 192.56 | 男     |   1901 |           |
    |  3 | zz     |   23 | 192.46 | 女     |   1901 |           |
    |  4 | zz     |   23 |   NULL | 保密   |   NULL |           |
    |  5 | zz     |   23 |   NULL | 保密   |   NULL |           |
    |  6 | 熊大   |   23 |   NULL | 保密   |   NULL |           |
    |  7 | zz     |   23 |   NULL | 保密   |   NULL |           |
    |  9 | 酱爆   |   22 |   NULL | 保密   |   NULL |           |
    | 10 | hauhua |   13 |   NULL | 保密   |   NULL |           |
    | 11 | baba   |   13 |   NULL | 保密   |   NULL |           |
    +----+--------+------+--------+--------+--------+-----------+
    此操作作用在于给逻辑删除的用户标记,0为正常用户,1为逻辑删除用户。
    MariaDB [mysql]> insert into s values(null,'酱爆',23,192.455,null,1901)
  • 相关阅读:
    SEO(搜索引擎优化)已死
    C#与Java的详细比较(全)
    回眸·预言:Google媒体,称霸在2014 (转载)& 2015 update
    转载:Google calendar预览
    一个开源的ESB(企业服务总线) Celtix
    未来网虫生活图景
    今年圣诞节google标的意思
    我的生活质量
    Google Reader的午夜维护信息
    SNS网站应该更加自然
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10846346.html
Copyright © 2011-2022 走看看