sql数据管理语句

Posted 丁昆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据管理语句相关的知识,希望对你有一定的参考价值。

一、数据管理

1、增加数据

INSERT INTO student VALUES(1,\'张三\',\'男\',20);
-- 插入所有字段。一定依次按顺序插入
-- 注意不能少或多字段值

如只需要插入部分字段

INSERT INTO student(id,NAME) VALUES(2,\'李四\');
--只添加id 和NAME两列内容,也要依此按顺序

2、修改数据

UPDATE student SET gender=\'男\' WHERE id=1; 
-- 修改id为1的学生,修改性别为男

修改多个字段

UPDATE student SET gender=\'男\',age=30 WHERE id=2;
-- 修改多个字段,注意: SET  字段名=值,字段名=值

3、删除数据

DELETE FROM student WHERE id=2;
-- 带条件的删除,删除id=2的行
DELETE FROM student;
--不带条件,删除student所有数据

另一种方式

-- delete from: 可以全表删除     

1)可以带条件删除  

2)只能删除表的数据,不能删除表的约束     

3)使用delete from删除的数据可以回滚(事务)

-- truncate table: 可以全表删除  

1)不能带条件删除

2)即可以删除表的数据,也可以删除表的约束

3)使用truncate table删除的数据不能回滚

4、查询数据

1>查询所有列

SELECT * FROM student;

2>查询指定列

SELECT id,NAME,gender FROM student;

 3>查询时添加常量

给查询字段添加常量方便观看,对原表格没有影响

SELECT pro_name AS \'产品名称\',price FROM product;
--原显示pro_name 和price,现在换成:产品名称 和 price

 

 4>查询时合并列

合并列只能合并相同类型且是数值类型的字段

SELECT sname,(servlet+jsp+html) AS \'总成绩\'FROM student;

5>查询时去除重复记录

-- 需求: 查询学生的性别     男 女
SELECT DISTINCT sex FROM student;
-- 另一种语法(是否有括号没有区别)
SELECT DISTINCT(sex) FROM student;

 

 6>条件查询

1逻辑条件: and()     or()

 

SELECT * FROM student WHERE id=2 AND NAME=\'李四\'; -- 交集
SELECT * FROM student WHERE id=2 OR NAME=\'张三\'; -- 并集

 

2、比较条件: >   <   >=  <=  =  <>(不等于)  between and (等价于>=  <=)

 

SELECT * FROM student WHERE jsp>=75 AND jsp<=90;
--等同于between and
SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后)

--查询不等于男的学生
SELECT * FROM student WHERE gender<>\'\';

 

3、判空条件

null,是空,里面没有内容

\'\' 是空字符串,里面有内容,内容是空字符串

 is null   是空

is not null  不是空

=\'\'    是空字符串

<>\'\'       不是空字符串

-- 判断null
SELECT * FROM student WHERE address IS NULL ;
SELECT * FROM student WHERE address IS NOT NULL ;
-- 判断空字符串
SELECT * FROM student WHERE address=\'\';
--查询不等于空的学生
SELECT * FROM student WHERE address<>\'\';

查询有地址的学生(不包括null和空字符串)

SELECT * FROM student WHERE address IS NOT NULL AND address<>\'\';

4、模糊条件:like

-- % : 表示任意个字符

--%在前表示前面可以有字符,%在后表示后面可以有字符

 

--查询含有\'索尼\'字符的数据
SELECT * FROM product WHERE pro_name LIKE \'%索尼%\';

-- _ : 表示一个字符

-- 需求: 查询姓‘李’,且姓名只有两个字的学生
SELECT * FROM student WHERE NAME LIKE \'李_\';

7、聚合查询

-- 常用的聚合函数: sum() 总和,   avg()  平均分, max() 最大值,  min()最小值,   count()统计数量

-- 需求: 查询学生的servlet的平均分
SELECT AVG(servlet) AS \'servlet的平均分\' FROM student;
SELECT COUNT(*) FROM student;
--查询共有多少学生

-- 注意:count()函数统计的数量不包含null的数据

-- 使用count统计表的记录数,要使用不包含null值的字段

 8、分页查询

语法:limit 起始行,查询几行,起始行从0开始

 

SELECT * FROM student LIMIT 0,2;
-- 从第一行开始,显示两行

 

9、查询排序

 

 

语法 order by 字段 asc/desc,默认顺序

 

 

-- asc: 顺序,正序。数值:递增,字母:自然顺序(a-z

 

-- desc: 倒序,反序。数值:递减,字母:自然反序(z-a)

 

 

SELECT * FROM student ORDER BY id; -- 默认正序123

SELECT * FROM student ORDER BY id DESC;-- 反序321

 

多个排序条件

 

 

SELECT * FROM student ORDER BY servlet ASC,jsp DESC
-- 按照servlet为主顺序,正序排列,当servlet数值相同时,后面的jsp倒序排列其他的JSP不按照倒序排列

 

10、分组查询  (group by)

SELECT gender,COUNT(*) FROM student GROUP BY gender
--查询男女的人数

分组查询后筛选

-- 需求: 查询总人数大于2的性别
SELECT gender,COUNT(*) FROM student GROUP BY gender HAVING COUNT(*)>2;
-- 注意: 分组之前条件使用where关键字,分组之后条件使用having关键字

 

以上是关于sql数据管理语句的主要内容,如果未能解决你的问题,请参考以下文章

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

使用 with as 优化SQL

MyBatis如何防止SQL注入

MyBatis怎么防止SQL注入

动态SQL基础概念复习(Javaweb作业5)

Mybatis超强大的动态SQL大全