常用的sql语句整理 增删改查

这里写目录标题

    • 查询数据(SELECT)
      • 模糊查询(like)
      • 集合查询(in)
    • 修改数据(update)
    • 删除数据(delete和truncate) drop(删表)
      • delete、truncate、drop的区别
    • 增加数据(INSERT INTO)
    • 必须掌握的关键字查询
      • 1、BETWEEN(两个值之间的数据)
      • 2、AS(别名)
      • 3、Distinct(忽略重复值)
      • 4、SUM(求和)
      • 5、COUNT(计数)
      • 6、AVG(平均值)
      • 7、GROUP BY(分组)
      • 8、ORDER BY(排序)
      • 9、limit(查询结果的数目)
      • 10、having(聚合函数,又需要筛选条件时)
      • 11、max(最大值)
      • 11、min(最小值)
    • 左连接——LEFT JOIN(需掌握)
    • 右连接——RIGHT JOIN
    • 内连接——INNER JOIN(需掌握)
    • 复合条件连接查询——带where条件的连接查询(了解就行)
        • 逻辑运算符(and、or、not)
        • 比较运算符(=、)

查询数据(SELECT)

SELECT 字段名1,字段名2,... FROM 表名
select * from 表名 where 条件;

模糊查询(like)

  1. like
  2. _代表一个任意字符
  3. %代表多个任意字符

查询姓李的学生:SELECT * from student WHERE name like '李%';

集合查询(in)

in,代表是否在这个集合中

查询身高为165,170的学生:SELECT * from student WHERE height in (165,170);

修改数据(update)

update 表名 set 字段名=值

删除数据(delete和truncate) drop(删表)

delete

DELETE FROM 表名 WHERE 字段名 = 值

truncate

truncate 表名(删除所有班级数据,则可以这样写)

drop(删表)

drop 表1名,表2名,...;

delete、truncate、drop的区别

简单来说:
drop用于删表(表中数据会全部删除,无法回滚),
delete和truncate用于删除表中的数据(delete也可删表)。
通过delete删除的数据可以回滚,而truncate删除的则不能。

他们的级别为:drop>truncate>delete
delete操作不会减少表或索引所占用的空间,truncate会将占用的恢复至初始大小。
举个例子:如果设置了自增id,有id为1、2、3的三条数据,如果通过delete全部删除后,下次插入的数据如果没有指定id的话,那它的id会为4
如果通过truncate删除这三条数据的话,那它的id会为1

增加数据(INSERT INTO)

INSERT INTO 表名 (列名1 , … 列名n) VALUES ("值1",...) ;

必须掌握的关键字查询

1、BETWEEN(两个值之间的数据)

查询两个值之间的数据
语法:select * from 表名 where 字段名 between 值 and 值;
查询体重在65-70的学生:
select * FROM student WHERE weight BETWEEN 65 AND 70;

2、AS(别名)

为字段名指定别名
语法:select 字段名1 AS 别名,字段名2 AS 别名,.... from 表名
将字段名name改为别名学生名称显示:
select name AS '学生名称' FROM student

3、Distinct(忽略重复值)

查询时忽略重复值
语法:SELECT DISTINCT 字段名 FROM 表名
查询学生所在的班级有哪些:
select DISTINCT class_id FROM student

4、SUM(求和)

求和
语法:select SUM(字段名) from 表名;
查询学生总身高:
select SUM(height) AS '学生总身高' FROM student;

5、COUNT(计数)

count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加,最后返回累计值。

返回匹配指定条件的行数。
语法:select COUNT(字段名) from 表名;
查询有多少学生:
select count(*) FROM student;

6、AVG(平均值)

计算平均值
语法:select AVG(字段名) from 表名;
计算学生平均身高:
select AVG(height) AS '学生平均身高' FROM student;

7、GROUP BY(分组)

根据一或多个字段对查询结果集进行分组
语法: select 字段名 关键字(字段名) from 表名 group by 字段名;
查询男生、女生各有多少:
SELECT gender,count(id) FROM student GROUP BY gender

8、ORDER BY(排序)

对结果集进行排序
语法:select 字段名 from 表名 order by 字段名 升/降序关键字;

对学生身高降序排列(由高到矮): 倒叙 desc
SELECT * FROM student ORDER BY height desc;

对学生体重升序排列(由轻到重): 升序 asc
SELECT * FROM student ORDER BY weight asc;

9、limit(查询结果的数目)

返回查询结果的数目
语法:select 字段名 from 表名 limit 开始条数,结尾条数;
返回前三条学生信息:
SELECT * FROM student LIMIT 1,3;

10、having(聚合函数,又需要筛选条件时)

当我们用到聚合函数(sum、count等),又需要筛选条件时,having就派上用场了,因为WHERE是在聚合前筛选记录的,having和group by是组合一起再聚合后使用
语法:没有固定语法
查班级人数大于等于3的班级:

SELECT count(*) FROM student GROUP BY class_id HAVING COUNT(id)>=3;

11、max(最大值)

SELECT MAX(column_name) FROM table_name;
MAX() 函数返回指定列的最大值
column_name:列名
table_name:表名

11、min(最小值)

SELECT MIN(column_name) FROM table_name;
MIN() 函数返回指定列的最大值
column_name:列名
table_name:表名

左连接——LEFT JOIN(需掌握)

说明:返回左表中的所有记录和右表中与连接字段相等的记录,如果右表没有匹配的记录,那么就以空(Null)代替显示

语法:select 字段 from 左表表名 左表的变量名(自定义) LEFT JOIN 右表表名 右表的变量名(自定义)on 左表变量名.左表字段=右表变量名.右表字段

右连接——RIGHT JOIN

说明:与左连接相反:返回右表中的所有记录和左表中与连接字段相等的记录,如果左表没有匹配的记录,那么就以空(Null)代替显示。

内连接——INNER JOIN(需掌握)

说明:只返回两个表都与连接字段相等的记录

举例:
1)还是以查询学生及其所在的班级信息:
SELECT * FROM student a INNER JOIN class b on a.class_id=b.id;

复合条件连接查询——带where条件的连接查询(了解就行)

说明:连接查询还可以与where条件联用

举例:
1)查询性别为男的学生及其所在的班级信息:
SELECT * FROM student a LEFT JOIN class b on a.class_id=b.id WHERE a.gender='male';

逻辑运算符(and、or、not)

比较运算符(=、)

  1. 等于 =
  2. 小于 <
  3. 大于 >
  4. 大于等于 >=
  5. 小于等于 <=
  6. 不等于 !=或者<>

你可能感兴趣的:(sql,数据库,mysql,database)