首页 > 数据库技术 > 详细

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

时间:2019-08-31 13:10:28      阅读:107      评论:0      收藏:0      [点我收藏+]

复习:

查看表: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)(条件,排序,聚合函数,分组,分页)

 创建表并写入数据:

--创建学生表
create table students (
    id int unsigned not null auto_increment primary key,
    name varchar(20) default ‘‘,
    age tinyint unsigned default 0,
    high decimal(5,2),
    gender enum(, , 中性, 保密) default 保密,
    cls_id int unsigned default 0,
    is_delete bit default 0
);
--创建班级表
create table classes(
    id int unsigned auto_increment primary key not null,
    name varchar(20) not null
);
--往students表里插入数据
insert into students values
(0,小明,18,180.00,1,1,0),
(0,小月月,19,180.00,1,2,0),
(0,彭于晏,28,185.00,1,1,0),
(0,刘德华,58,175.00,1,2,0),
(0,黄蓉,108,160.00,2,1,0),
(0,凤姐,44,150.00,4,2,1),
(0,王祖贤,52,170.00,2,1,1),
(0,周杰伦儿,34,null,1,1,0),
(0,程坤,44,181.00,1,2,0),
(0,和珅,55,166.00,1,2,0),
(0,刘亦菲,29,162.00,2,3,0),
(0,金星,45,180.00,3,4,0),
(0,静香,18,170.00,2,4,0),
(0,郭靖,22,167.00,1,5,0),
(0,周杰,33,178.00,1,1,0),
(0,钱小豪,56,178.00,1,1,0),
(0,谢霆锋,38,175.00,1,1,0),
(0,陈冠希,38,175.00,1,1,0);
--向classes表里插入数据
insert into classes values (0, 云唯_01期),(0, 云唯_02期);

(一)简单查询

1、查询所有列

--select * from 表名;
select * from students;

2、查询制定列

select id,name from students;

3、使用as给字段起别名

select id,name as 姓名, age, high, gender from students;

4、通过表名字段查询

select students.name from students;

5、给表起别名

select s.id,s.name,s.age from students as s;

6、消除重复行

-- distinct(/d?‘st??kt/)有区别的,独特的,明显的
select distinct age from students;

(二)条件查询

1、一定条件查询

select * from where id=5;
select * from where age !=38;

2、比较运算符

-- 查询年纪大于18岁的信息
select * from students where age > 18;
--18岁到28岁之间(and)
select * from students where age >= 18 and age =< 28;
select * from students where age between 18 and 28
--不在18岁到28岁之间(and)
select * from students where age < 18 or age > 28;
select * from students where age not between 18 and 28;
--在18岁以上或者身高180以上的人(or)
select * from students where age > 18 or high > 180;

(三)模糊查询

-- like(rlike)
-- % 替代1个或者多个甚至是没有
--_表示一个字符
-- 查询姓名中有‘小’的所有名字
select * from students where name like %小%;
-- 查询两个字人的名字
select * from students where name like __;
-- 查询至少有2个字的名字
select * from students where name like %__%;
--查询name字段以t开头的所有数据
select * from students where name rlike ^t.*;

(四)范围查询

-- in (1,3,8)表示在一个非连续的范围内
-- 查询 年纪为18和34的人
select * from students where age in (18, 34);
--查询 年龄在17岁到34岁之间的信息
select * from students where age between 17 and 34;
--查询 年纪不在18到34岁的信息
select * from students where age not between 17 and 34;

(五)空判断

-- 判断is null
-- 查询身高为空的信息
select * from students where high is null;
-- 判断非空is not null
select * from students where high is not null;

(六)排序

-- order by 字段
-- asc从小到大排列,即升序(ascend,上升,升入,追溯)
-- desc从大到小排序,即降序(descend,下降,下去,下来)
-- 查询年纪在18到34岁之间的男性,按照年纪从小到大
select * from students where gender=1 and age between 18 and 34 order by age;
-- 查询年纪在18到34岁之间的女性,身高从高到矮
select * from students where gender=2 and age between 18 and 34 order by high desc;
-- order by 多字段
-- 查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序
select * from students where age between 18 and 34 and gender=2 order by high desc;
-- 查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
select * from students where age between 18 and 34 and gender=1 order by high desc, age, id desc;

(七)聚合函数

 

(八)分组

 

(九)分页

 

(十)关联查询(连接查询)(多表查询)

 

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

原文:https://www.cnblogs.com/renyz/p/11438204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!