40 (OC)* 数据库常见sql语句
1:增加
INSERT INTO t_student (name, age) VALUES ('liwx', 18);
2:删除
DELETE FROM t_student WHERE name = 'liwx';
3:修改
UPDATE t_student SET age = 19 WHERE name = 'liwx';
4:查找
SELECT name, age FROM t_student where name = 'liwx';
5:统计查询
SELECT count(age) FROM t_student;
6:排序查询
SELECT * FROM t_student ORDER BY age ASC;
SELECT * FROM t_student ORDER BY age DESC;
SELECT * FROM t_student ORDER BY age ASC, score DESC;
7:limit分页查询SELECT * FROM t_student LIMIT 4, 8;
: 跳过最前面4条语句,然后取8条记录.
8:SELECT DISTINCT 语句 去重复
SELECTDISTINCT
Company FROM Orders
9:AND和OR
SELECT * FROM Persons WHERE(
FirstName='Thomas'OR
FirstName='William')
AND
LastName='Carter'
10:模糊搜索
SELECT * FROM Persons WHERE City LIKE '%g'
11:在
数据库操作操作(增删改查)
插入数据(insert)
- 1.插入数据格式
注意
: 数据库中的字符串内容应该用单引号 ’ 括住;
格式:
insert into 表名 (字段1, 字段2, …) values (字段1的值, 字段2的值, …) ;
- 2.插入数据示例
插入数据示例:
INSERT INTO t_student (name, age) VALUES ('liwx', 18);
更新数据(update)
- 1.更新数据格式
格式:
update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值 where 条件;
- 2.更新数据示例
注意
: WHERE 条件是=
号,不是==号.
更新数据示例:
UPDATE t_student SET age = 19 WHERE name = 'liwx';
删除数据(delete)
- 1.删除数据格式
格式:
delete from 表名 where 条件;
- 2.更新数据示例
更新数据示例:
DELETE FROM t_student WHERE name = 'liwx';
DQL数据库查询语句(查询)
- 1.查询数据格式
格式1:
select * from 表名;
,*
:通配符,表示所有字段.
格式2:select 字段1, 字段2, … from 表名;
格式3:select 字段1, 字段2, … from 表名 where 条件;
- 2.查询数据示例
更新数据示例1:
SELECT * FROM t_student;
更新数据示例2:SELECT name, age FROM t_student;
更新数据示例3:SELECT name, age FROM t_student where name = 'liwx';
4.查询相关语句
统计查询
- 1.
count(X)
计算记录个数
计算所有记录个数:
SELECT count(*) FROM t_student;
计算age有值的记录个数(Null不计算在内):
SELECT count(age) FROM t_student;
- 2.
avg(X)
计算某个字段的平均值 - 3.
sum(X)
计算某个字段的总和 - 4.
max(X)
计算某个字段的最大值 - 5.
min(X)
计算某个字段的最小值
排序查询
- 1.升序ASC
格式:
SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 ASC;
示例:
SELECT * FROM t_student ORDER BY age ASC;
- 2.降序
格式:
SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 DESC;
示例:
SELECT * FROM t_student ORDER BY age DESC;
- 3.多个字段排序
格式:
SELECT * FROM 表名 ORDER BY 字段名1 排序类型, 字段名2 排序类型;
示例:
SELECT * FROM t_student ORDER BY age ASC, score DESC;
limit分页查询
- 1.limit分页查询
格式:
select * from 表名 limit 数值1, 数值2 ;
示例:
SELECT * FROM t_student LIMIT 4, 8;
: 跳过最前面4条语句,然后取8条记录.
- 2.查询第n页的数据
- 假设一页显示5条数据.
示例:
SELECT * FROM t_student LIMIT 5*(n-1), 5;
- 3.特殊案例
示例:
select * from t_student limit 7;
相当于:select * from t_student limit 0, 7;
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
很多时候用 exists 代替 in 是一个好的选择:
select num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)
6.下面的模糊查询也将导致全表扫描:
select id from t where name like ‘%abc%’
select id from t where name like ‘%abc’
但是下面的这种模糊查询依然可以使用索引
select id from t where name like ‘abc%’
7.应尽量避免在 where 子句中对字段的“=”左边进行函数、算术运算或其他表达式运算,这将导致引擎放弃使用索引而进行全表扫描。
如:
select id from t where num/2=100
应改为:
select id from t where num=100*2
又如查找name以abc开头的id:
select id from t where substring(name,1,3)=’abc’
应改为:
select id from t where name like ‘abc%’
8.不要使用 select * from table ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
40 (OC)* 数据库常见sql语句的更多相关文章
- SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句
附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- mysql(数据库,sql语句,普通查询)
第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...
- 《大话数据库》-SQL语句执行时,底层究竟做了什么小动作?
<大话数据库>-SQL语句执行时,底层究竟做了什么小动作? 前言 大家好,我是Taoye,试图用玩世不恭过的态度对待生活的Coder. 现如今我们已然进入了大数据时代,无论是业内还是业外的 ...
- 解决死锁之路3 - 常见 SQL 语句的加锁分析 (转)
出处:https://www.aneasystone.com/archives/2017/12/solving-dead-locks-three.html 这篇博客将对一些常见的 SQL 语句进行加锁 ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- 在线数据库表(sql语句)生成java实体类工具
相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...
- GP数据库 常用SQL语句
GP数据库 常用SQL语句 --1,查看列名以及类型 select upper(column_name) ,data_type from information_schema.columns wher ...
- Oracle数据库 基础SQL语句练习
一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...
随机推荐
- Go_ go mod 命令解决墙的问题
简介 由于众所周知的原因,在下载一些库的时候会下载不了,比如 golang.org/x/... 相关的库.为此,网上出现了很多解决方案. 从 Go1.11 开始,Go 引入了 module,对包进行管 ...
- Go类型别名与类型定义区别
类型别名和自定义类型区别 自定义类型 //自定义类型是定义了一个全新的类型 //将MyInt定义为int类型 type MyInt int 类型别名 //类型别名规定:TypeAlias只是Type的 ...
- 在vps上安装 kali linux
在渗透测试过程中,很多时候我们需要反弹一个shell回来.使用empire也好,MSF也好,其他工具也好,都避不开公网IP的问题.这时候我们就需要一个VPS来进一步进行渗透测试. 建立通道连接的方式有 ...
- Springboot + Stopping service [Tomcat]+ Process finished with exit code 0
在Springboot 的版本为: <version>1.5.10.RELEASE</version> 原因:代码中有非法格式的结构,及代码写错啦,例如: <result ...
- 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》
<Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...
- 纯 Python 实现的 Google 批量翻译
测试通过时间:2019-8-20 参阅:C#实现谷歌翻译API.Python之Google翻译爬虫 首先声明,没有什么不良动机,因为经常会用 translate.google.cn,就想着用 Pyth ...
- 用Canvas实现Photoshop的钢笔工具(贝塞尔曲线)
前两天在用Canvas实现一个绘制路径的小功能.做完之后发现加以完善可以“复刻”一下PS里面的钢笔工具. PS里的钢笔工具对我来说是PS中最好用的工具! 所以本文主要介绍如何用Canvas来实现Pho ...
- 计时器(CocosCreator)
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 在游戏中,经常会涉及到计时的功能,主要是倒计时.倒计时通常用在某项活动距离结束的剩余时间以及距离开始某项活动开始的时 ...
- Java网络编程之InetAddress浅析
Java网络编程之InetAddress浅析 一.InetAddress综述 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetA ...
- 微信小程序室内地图导航开发-微信小程序JS加载esmap地图
一.在微信小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-view组件,想要通过 web-view 调用ESMap室内地图需要满足以下 2 个条件: 1. 小 ...