SQL语句汇总——数据修改、数据查询

摘要:
WHERE表示过滤条件。TRUNCATE不记录日志,删除的数据无法恢复,但它很有效。示例:SELECT*FROMt_ studentLIMITT3;选择*FROMt_ studentLIMIT2,3;*注意:极限非常重要。这是以后进行数据表分页的关键。模糊查询-为了更好地解释模糊查询,LIKE在这里重建了一张表:王姓兄弟躺在这里,拿着枪,你不介意吗?ASC代表正序,DESC代表逆序。基本查询SQL的执行顺序:1。执行FROM2。WHERE条件筛选3。选择投影4。ORDER BY排序

首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述。

SQL语句汇总——数据修改、数据查询第1张

添加新数据:

INSERT INTO <表名> (<列名列表>) VALUES (<值列表>) 

如:

INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男');

SQL语句汇总——数据修改、数据查询第2张

其中列名可以省略,省略之后要求插入的值必须与列一一对应:

INSERT INTO t_student VALUES (2,'王二',20,'男');

SQL语句汇总——数据修改、数据查询第3张

多行数据添加:

INSERT INTO t_student VALUES (3,'张三',22,'男'),
                 (4,'李四',17,'女'),
                 (5,'王五',23,'男');

SQL语句汇总——数据修改、数据查询第4张

更改数据:

UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 过滤条件

假如要修改李四的年龄为21岁

UPDATE t_student SET student_age=21 WHERE student_name='李四';

SQL语句汇总——数据修改、数据查询第5张

注:修改多个列的值时用逗号隔开。要想设置某一列的值为空,只需让<列名>=NULL 即可。WHERE表示过滤条件。

删除数据(行): 

DELETE FROM 表名 WHERE 过滤条件

现要删除20到22岁的学生信息:

DELETE FROM t_student WHERE student_age BETWEEN 20 AND 22;

SQL语句汇总——数据修改、数据查询第6张

WHERE的判断条件之后会更详细的介绍。

删除除了DELETE还有一种方法TRUNCATE,写法:

TRUNCATE TABLE 表名

二者区别在于:

DELETE会记录日志,意味着删除后的数据还可以恢复,但是效率低。TRUNCATE不会记录日志,删除后的数据不能恢复,但是效率高。需要注意的是,TRUNCATE不能用于有外键约束引用的表。

查询操作

分类:

–投影操作
  指定查询结果中能显示哪些列
–选择操作
  指定哪些行出现在结果中
–排序操作
  指定查询的结果以什么样的顺序显示
 
投影操作:
SELECT 列1,列2 FROM 表名

多个列中间用逗号隔开,如果选择所有列可以用*号简写。

还是此表:

SQL语句汇总——数据修改、数据查询第5张

现在只想要查看姓名和年龄列:

SELECT student_name,student_age FROM t_student;

SQL语句汇总——数据修改、数据查询第8张

注意这里不是把其他列删除了,而是只显示我们想看见的部分。

SELECT CONCAT(student_name,'——',student_age) '组合值' FROM t_student;

CONCAT,可以将列与列之间用想要的符号连接起来:

SQL语句汇总——数据修改、数据查询第9张

排除重复——DISTINCT

现给原表加入一班级列:

SQL语句汇总——数据修改、数据查询第10张

按照之前方法查询班级列得到:

SQL语句汇总——数据修改、数据查询第11张

但是我们只想查看具体有哪些班级,这里就需要用到去重,也就是DISTINCT。

SELECT DISTINCT student_class FROM t_student;

SQL语句汇总——数据修改、数据查询第12张

返回限定行数的查询——LIMIT

LIMIT后面参数为1或2个:

LIMIT N 表示从第一行开始返回N行结果,LIMIT i,N 表示从第i+1行开始返回N行结果。

例:

SELECT * FROM t_student LIMIT 3;

SQL语句汇总——数据修改、数据查询第13张

SELECT * FROM t_student LIMIT 2,3;

SQL语句汇总——数据修改、数据查询第14张

*注:LIMIT很重要,它是之后做数据表格分页的关键。

选择操作——WHERE:

分为单条件选择与多条件选择

单条件选择标准结构:

SELECT 列1, 列2 FROM 表名 WHERE 列3 = 值 

关系运算符包括:>  >=  <  <=  =  !=

多条件选择标准结构:

SELECT 列A, 列B FROM 表 WHERE 条件1 (AND或者OR) 条件2

其中AND表示并且,OR表示或者。

选择范围——BETWEEN

如:

SELECT * FROM t_student WHERE student_age BETWEEN 20 AND 23;

SQL语句汇总——数据修改、数据查询第15张

BETWEEN后的值为从下限到上限。

定义集合——IN或NOT IN

现在想查看年龄为17、20、23的学生信息: 

SELECT * FROM t_student WHERE student_age IN (17,20,23);

SQL语句汇总——数据修改、数据查询第16张

反之NOT IN就是选择不包括在集合里的学生信息。

模糊查询——LIKE

为了更好的解释模糊查询,这里重新建张表:

SQL语句汇总——数据修改、数据查询第17张

这里姓王的兄弟们躺枪...别介意。

首先先说下占位符与通配符:

占位符 "_",表示任何单个字符。

通配符 "%",表示包含零或多个字符。

下面就来用模糊查询逐一选中我们想要的行。

名字只有两个字的:

SELECT * FROM t_student WHERE student_name LIKE '__';

这里可能看不清,引号里实际是两个占位符。

SQL语句汇总——数据修改、数据查询第18张

所有姓王的:

SELECT * FROM t_student WHERE student_name LIKE '王%';

SQL语句汇总——数据修改、数据查询第19张

最后一个字是“王”的:

SELECT * FROM t_student WHERE student_name LIKE '%王';

SQL语句汇总——数据修改、数据查询第20张

只要是名字中有“王”字的:

SELECT * FROM t_student WHERE student_name LIKE '%王%';

SQL语句汇总——数据修改、数据查询第21张

这下模糊查询就很明白了吧,当然还有其他组合,大家可以自己尝试。

处理空值数据:

判断条件不能用列名=NULL,而是要用IS NULL或IS NOT NULL。

标准写法:

SELECT * FROM t_student WHERE 性别 IS NULL

排序操作——ORDER BY:

使用ORDER BY时,列名上指定ASC或DESC。ASC表示正序,DESC表示倒序。如果不指定则默认为正序。

按年龄排:

SELECT * FROM t_student ORDER BY student_age ASC;

SQL语句汇总——数据修改、数据查询第22张

SELECT * FROM t_student ORDER BY student_age DESC;

SQL语句汇总——数据修改、数据查询第23张

最后一定要注意!

基本查询SQL的执行顺序:

1.执行FROM 2.WHERE条件过滤 3.SELECT投影 4.ORDER BY排序

免责声明:文章转载自《SQL语句汇总——数据修改、数据查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于Safe DOG的文件上传bypassHTTP方式播放FLV/mp4 :nginx+Yamdi/MP4BOX下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql进制之间的转换

1.十进制转换成二进制 select bin(5); 2.十进制转换成八进制 select oct(5); 3.十进制转换成十六进制 select hex(5); 4.二进制转换成十进制 select conv('101',2,10); 5.十进制转换成十六进制 select conv('20',10,16);...

mysql和Oracle在对clob和blob字段的处理

一、MySQL与Oracle数据库如何处理Clob,Blob数据类型 (1)不通数据库中对应clob,blob的类型如下: MySQL中:clob对应text,blob对应blob DB2/Oracle中:clob对应clob,blob对应blob (2)domain中对应的类型: clob对应String,blob对应byte[] clob对应ja...

获取SQLSERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY

     插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。       个人感觉最快的方式就是,在插入数据后直接获取主键的值,然后返回过来。方法如下:sql语句如下:INSERT INTO table...

Mysql 合并结果接横向拼接字段

近日在做一个报表功能里面有一个这样的需求是统计各部门在某一月入职和离职的人数 我的步骤是这样先查出入职的人数关键sql如下: SELECT dept ,COUNT(1) rcNumber FROM 员工表 WHERE ( 入职时间 != '' OR 入职时间 IS NOT NULL) and DATE_FORMAT(入职时间...

数据库(二)

修改表格   如果SQL server 2008中无法修改表结构,提示错误为:不允许保存修改,…… 解决方案:工具→选项→左侧的Designers→表设计器和数据库设计器 去掉“阻止保存要求重新创建表的更改”前面的钩,重新启动系统。 --修改数据库的名字将student的名字修改成xueshengsp_renamedb student,xuesheng 增...

时序数据库InfluxDB使用详解

InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。在我们的容器资源监控系统中,就采用了InfluxDB存储cadvisor的监控数据。本文对InfluxDB的基本概念和一些特色功能...