mysql基础之mariadb对表中数据的增删改查

复习:

查看表:show tables;   创建表:create table 表名(字符类型);   删除表:drop table 表名;

对表的结构进行增删改查:

查看表结构:desc 表名;  修改表-添加字段:alter table 表名;  

修改表-修改字段:不重命名版:alter table 表名 modify 列名 类型及约束;

修改表-修改字段:重命名版:alter table 表名 change 原名 新名 类型及约束;

修改表-删除字段:alter table 表名 drop 列名;

一、增加表中的数据(insert)

insert语句的语法:insert into tablename(字段1名称,字段2名称,...) values(字段1值,字段2值,...)

1、全列插入

--insert into 表名 values(..)
--主键字段 可以用0 null default 来站位
例子:向test表中插入一条信息(数据与字段要一一对应)
MariaDB [ren]> insert into test values ('谢霆锋',188,38,1);
Query OK, 1 row affected (0.01 sec)

MariaDB [ren]> select * from test;
+-----------+------+------+------+
| name      | high | age  | id   |
+-----------+------+------+------+
| 任彦忠    | NULL | 0    | NULL |
| 哈哈      | NULL | 66   | NULL |
| 胡歌      | NULL | 38   | NULL |
| 谢霆锋    |  188 | 38   |    1 |
+-----------+------+------+------+
4 rows in set (0.00 sec)

2、部分插入(主键不能为空)

MariaDB [ren]> insert into test (name,age) values ('张一山',26);
Query OK, 1 row affected (0.00 sec)
MariaDB [ren]> select * from test;
+-----------+------+------+------+
| name      | high | age  | id   |
+-----------+------+------+------+
| 任彦忠    | NULL | 0    | NULL |
| 哈哈      | NULL | 66   | NULL |
| 张一山    | NULL | 26   | NULL |
| 胡歌      | NULL | 38   | NULL |
| 谢霆锋    |  188 | 38   |    1 |
+-----------+------+------+------+
5 rows in set (0.00 sec)

3、部分插入多条记录

MariaDB [ren]> insert into test (name,age) values ('杨紫',20),('老毕',11);

4、另一种插入数据的语法

insert into tablename set 字段1名称=字段1值,字段2名称=字段值

MariaDB [ren]> insert into test set name='小磐',age=20,id=2;

使用set的方式插入数据时,insert语句中字段的顺序可以与表中的字段顺序不同,而第一种语法中,字段顺序必须与表中的字段顺序相同。

5、aql_mode的模式:

ANSI:宽松模式,对插入数据进行校验,如果不符合定义类型 或长度,对数值截断保存,报警告信息,默认模式;

STRICT_TRANS_TABLES:只在事务型表中进行严格限制;

STRICT_ALL_TABLES:对所有表进行严格限制;

TRADITIONAL:严格模式,当插入数据时,进行数据的严格校验,错误的数据将不能被插入,报error错误。用于事务时,会进行事务的回滚,官方提醒我们说,如果我们使用的存储引擎是非事务型的存储引擎(比如myisam),当我们使用这种模式时,如果执行非法的插入或更新数据操作时,可能会出现部分完成的情况。

二、删除表中的数据(delete)

删除数据需要通过where子句给定删除的范围

1、物理删除

delete from 表名 where 条件

MariaDB [ren]> delete from test where name='哈哈';

2、模糊删除(不建议使用)

MariaDB [ren]> delete from test where name rlike '.*彦*';

like:like的内容不是正则,而是通配符。eg:like "%12__";A like '%abc%' or A like '%cba%'

rlike:rlike的内容可以是正则。(需要转义)eg:rlike ".*12.*" ;A rlike '.*(abc|cba).*'

3、从test表中找出age>30的数据行,然后将这些行按照age进行降序排列,排列后删除第一个

delete from test where age > 30 order by age desc limit 1;

4、清空表数据

truncate 表名;         #无法恢复数据,并且清空自增
delete from 表名;    #在一定条件下可以恢复数据,不会清除自增

5、逻辑删除

用一条字段来表示这条信息是否已经不能再使用了

-- 给test表添加一个is_delete字段 bit 类型
    alter table test add is_delete bit default 0;

三、修改表中的数据(update)

修改数据也需要通过where子句给定修改的范围

update 表名 set 列1=值1, 列2=值2... where 条件;

1、如果不加where,则是修改的表中所有记录的该字段的数据

MariaDB [ren]> update test set age=30;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

MariaDB [ren]> select * from test;
+-----------+------+------+------+
| name      | high | age  | id   |
+-----------+------+------+------+
| 张柏芝    |  177 | 30   |    3 |
| 王菲      |  177 | 30   |    2 |
| 谢霆锋    |  188 | 30   |    1 |
+-----------+------+------+------+
3 rows in set (0.00 sec)

2、修改一个字段的值

MariaDB [ren]> update test set high=180 where id=3;

3、修改多个字段的值

MariaDB [ren]> update test set high=180,name='李晓丽' where id=3;

四、查询数据(select)(条件,排序,聚合函数,分组,分页)

猜你喜欢

转载自www.cnblogs.com/renyz/p/11438204.html