其他分享
首页 > 其他分享> > mariadb(二)超详细的增删改

mariadb(二)超详细的增删改

作者:互联网

一.表的结构的增删改
添加数据类型
alter table 表名 add 字段 数据类型;
#修改数据类型
alter table 表名  modify 字段 数据类型;
#更改字段名甚至数据类型。
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        #添加的数据个数与字段个数不匹配

部分插入

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的字段内插入值,不能重复

插入指定字段(列)的多行信息
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限定会删除所有表内的数据,慎用

删除后添加数据

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)

标签:NULL,zz,23,保密,详细,增删,mariadb,id,1901
来源: https://www.cnblogs.com/zzzynx/p/10846346.html