mysql(四)-增删改查

INSERT

一次插入一行或多行数据

语法:
INSERT into [(字段1,字段2...)] VALUES (字段1值,字段2值...), (val21,...)
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

如果有自动递增属性auto_increment,会以新插入的自动递增项最后以起始。
http://dev.mysql.com/doc/refman/5.5/en/insert.html
inser into test1 (id,name,sex) values (1,‘zhangshan‘,‘M‘);
字段与值要一一对应

向表tb1中插入多条数据,具体含义同上,只不过是插入多条语句
insert into tb1 (name,age) values(‘jerry‘,22),(‘naruto‘,28);

也可以不指定字段,表示对应每个字段都会有插入的数据。
insert into tb1 values (4,‘Sasuke‘,28),(5,‘hinata‘,25);

UPDATE

修改行数据

注意:一定要有限制条件,否则将修改所有行的指定字段,会出生产事故的。

但是也有方法规避

mysql 客户端启动时 增加参数 --safe-updates 或 -U ,当然,也可以写到[client]
使用限制条件
WHERE
LIMIT
update test1 set sex=‘F‘ where sex=‘M‘;

全表更新

update test1 set sex=‘M‘;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

加入limit的更新

update test1 set sex=‘M‘ limit 1;
Query OK, 1 row affected (0.52 sec)

加入where的更新

update test1 set sex=‘M‘ where id=2;
Query OK, 1 row affected (0.01 sec)

DELETE

可先排序再指定删除的行数

ORDER BY ...

限制行数

LIMIT
delete from test1 where id =1;

从tb1表中找出age>30的数据行,然后将这些行按照age进行降序排列,排列后删除第一个
delete from tb1 where age > 30 order by age desc limit 1;

?注意:一定要有限制条件,否则将清空表中的所有数据

SELECT

使用别名

字段 as 字段别名

WHERE子句:指明过滤条件以实现“选择”的功能:

过滤条件:布尔型表达式
算术操作符:+, -, *, /, %
比较操作符:=, !=, <>, <=>, >, >=, <, <=
BETWEEN min_num AND max_num
IN (列表)
    从tb1表中查找出age等于22、23、24或25中的任意一个的行的所有数据
    select * from tb1 where age in (22,23,24,25);
NOT IN
IS NULL
IS NOT NULL

LIKE 与 RLIKE:

%: 任意长度的任意字符
_:任意单个字符
RLIKE:正则表达式,索引无效,不建议使用
    select * from tb1 where name rlike ‘^t.*‘;
REGEXP:匹配字符串可用正则表达式书写模式,同上

逻辑操作符

NOT
AND
OR
XOR

order by 根据指定的字段对查询结果进行排序

升序:ASC   默认
降序:DESC

select name,code2,indepyear from country where indepyear NOT in (1990,1800,1993) order by indepyear asc;

如果多行之间的age字段的值相同时,这些行再根据name字段进行升序排序
select * from tb1 order by age desc,name asc;

把NULL排序到最后,在字段名前用-,排序方法desc
order by -indepyear desc

DISTINCT 去重查询

查询某字段的时候去重,使用DISTINCT关键字表示去重查询

select distinct indepyear from country order by indepyear desc;
+-----------+
| indepyear |
+-----------+
|      1994 |
|      1993 |
|      1992 |
|      1991 |
|      1990 |

查询city表中的所有数据,如果表中的数据量巨大,一般不要这样对数据进行查询

select * from city;

从city表中查询出所有数据,但是只显示前3行

select * from city limit 3;
+----+----------+-------------+----------+------------+
| ID | Name     | CountryCode | District | Population |
+----+----------+-------------+----------+------------+
|  1 | Kabul    | AFG         | Kabol    |    1780000 |
|  2 | Qandahar | AFG         | Qandahar |     237500 |
|  3 | Herat    | AFG         | Herat    |     186800 |
+----+----------+-------------+----------+------------+

从city表中查询出数据,只显示字段name,district,countrycode数据,查询匹配的条件为countrycode=‘AFG‘

select name,district,countrycode from city where countrycode=‘AFG‘;
+----------------+----------+-------------+
| name           | district | countrycode |
+----------------+----------+-------------+
| Kabul          | Kabol    | AFG         |
| Qandahar       | Qandahar | AFG         |
| Herat          | Herat    | AFG         |
| Mazar-e-Sharif | Balkh    | AFG         |
+----------------+----------+-------------+

从country表中查询出数据,只显示字name,code2,indepyear数据,查询匹配的条件为indepyear > ‘1992‘

select name,code2,indepyear from country where indepyear > ‘1992‘;
+----------------+-------+-----------+
| name           | code2 | indepyear |
+----------------+-------+-----------+
| Czech Republic | CZ    |      1993 |
| Eritrea        | ER    |      1993 |
| Palau          | PW    |      1994 |
| Slovakia       | SK    |      1993 |
+----------------+-------+-----------+

分组与聚合

GROUP 分组的目的往往是对分组后的数据进行"聚合操作"

avg()   返回指定列的平均值
max()   返回指定列的最大值
min()   返回指定列的最小值
count() 返回指定列中非null值的个数
sum()   返回指定列的所有值之和

select count(Language) from countrylanguage group by CountryCode limit 10;
+-----------------+
| count(Language) |
+-----------------+
|               4 |
|               5 |
|               9 |
|               1 |
|               3 |
|               4 |

HAVING: 对分组聚合运算后的结果指定过滤条件

select count(Language) from countrylanguage group by CountryCode having count(Language) > 5 limit 10;
+-----------------+
| count(Language) |
+-----------------+
|               9 |
|               8 |
|               8 |
|               6 |
|               7 |
|               6 |
|               7 |
|               6 |
|              12 |
|              12 |
+-----------------+

查询students表,以性别为分组,求出分组后的年龄之和。
select gender,sum(age) from students group by gender;

查询students表,以classid分组,显示平均年龄大于25的classid。
select classid,avg(age) as avgage from students group by classid having avgage > 25;

查询students表,以性别字段gender分组,显示各组中年龄大于19的学员的年龄的总和。
select sum(age) from students where age > 19 group by gender;

原文地址:http://blog.51cto.com/191226139/2092003

时间: 2024-10-18 02:40:52

mysql(四)-增删改查的相关文章

MySQL---数据库从入门走上大神系列(二)-用Java对MySQL进行增删改查

上节已经学会对MySQL进行简单的增删改查了,那么,我们如何实现用Java来对数据库操作增删改呢. 本节将用Java演示对MySQL进行增删改查. 简单的来说,分为4个步骤: 1.加载连接器(驱动)   通过Driver类 (最好用类反射来加载,更加灵活) 2.建立与数据库的连接 3.获取语句对象 4.对数据库进行操作(增删改查) 其实第一步现在可以不用写了,高版本的MySQL已经在内部帮我们写好了第一步,但是,为了兼容性更好(兼容低版本的MySQL)我们最好还是写上第一步. 我们先看一下原数据

Java连接MySQL数据库增删改查通用方法

Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了  数据库--MySQL-->Java篇 接下来我给大家讲讲如何将

mysql数据库增删改查

mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname charset gbk; 改名:如下查:show databases;(show databases like '%name';)查:查看数据库定义:show create database 库名; (改名)百度了下大概就这三种方法: 1. RENAME DATABASE db_name TO new_

Mysql 常用增删改查命令集合教程

创建:create      插入:insert 更新:update  查询:select 删除:delete 修改:alter     销毁:drop 创建一个数据库: create database 数据库名 [其他选项]; create database `samp_db`;创建数据库表: create table 表名称(列声明); create table `students` ( `id` int unsigned not null auto_increment primary ke

MySQL之增删改查之

MySQL之增删改查 前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. 前提:在进行“增删改查”的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1.“增”——添加数据 1.1 为表中所有字段添加数据 1.1.1 INSERT 语句中指定所有字段名 语法:INSERT INTO 表名(字段名1,字段名2,…)   VALUE

Django之入门 CMDB系统 (四) 增删改查

Django之入门 CMDB系统 (四) 增删改查 前言 作者: 何全,github地址: https://github.com/hequan2017 QQ交流群: 620176501 通过此教程完成从零入门,能够独立编写一个简单的CMDB系统. 目前主流的方法开发方式,分为2种:mvc 和 mvvc方式.本教程为 mvc 方式,即 django负责渲染html.后面会推出 mvvc(前后端分离)的入门教程. 教程项目地址: https://github.com/hequan2017/husky

使用MySQL练习增删改查时出现连接错误

使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/springbootdata?useUnicode=true&useSSL=false&characterE

安卓端通过http对Mysql进行增删改查

各类it学习视频,大家都可以看看哦!我自己本人都是通过这些来学习it只知识的! 下面是视频链接转自:http://www.cnblogs.com/wangying222/p/5492935.html https://shop61408405.taobao.com/?spm=a1z10.5-c.0.0.cAfZMN&qq-pf-to=pcqq.group Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端) 时间 2015-08-22 11:31:00 博客园-原创精

安卓版php服务器的mysql数据库增删改查简单案例

index.php文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html