sql基础学习
学习参考网站:http://www.runoob.com/sql/sql-tutorial.html
一、SQL命令
1、SELECT 语句
用于从数据库中选取数据。
select column_name,column_name from table_name; #数据库中选取某个表格某几列数据
select * from table_name; #数据库中选取某个表格所有列数据
2、SELECT DISTINCT 语句
用于返回唯一不同的值。
select distinct column_name from table_name; #返回某表中某列唯一不同的值
select distinct column_name,column_name from table_name; #返回某表中多列唯一不同的值
3、WHERE 子句
用于过滤记录。
select column_name,column_name from table_name where column_name operator value; #选取满足某个条件的数据
WHERE 子句中条件判断会使用的运算符:
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
AND | 同时满足多个条件 |
OR | 多条件满足其中某个条件值 |
1) is null (空值判断)
如查询 A 表中 a 列中为空的数据。
select * from A where a is null;
2)between and (在之间的值,包含临界值)
如查询 A 表中 a 列中大于 100 的小于 200的数据。
select * from A where a between 100 and 200;
3)In(某列多个可能值)
如查询 A 表 a 列中等于 100,200,300 的数据。
select * from A where a in (100,200,300);
4)like(模糊查询)
% 表示多个字值,_ 下划线表示一个字符;
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的;
%M% : 表示查询包含M的所有内容;
%M_ : 表示查询以M在倒数第二位的所有内容。
如查询 A 表中 a 列中有 M 的数据:
select * from A where a like '%M%';
5) and (多个条件同时满足查询)
如查询A表中a列等于100与b列等于200的数据:
select * from A where a=100 and b=200;
6)or (多个条件满足某个条件的查询)
如查询A表中a列等于100或b列等于100的数据:
select * from A where a=100 or b=200;
4、ORDER BY 关键字
用于对结果集进行排序,可以按照一个列或者多个列进行排序,默认按照升序对数据进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。
select column_name,column_name from table_name order by column_name,column_name asc|desc; #语法结构
如查询A表中按a列升序排序展示数据:
select * from A order by a; #默认asc升序排列
如查询A表中按a列降序排序展示数据:
select * from A order by a desc;
注:多列排序时,先按第一个列排序,然后按第二个列排序。如下A表
id | a | b |
1 | 200 | 10 |
2 | 100 | 30 |
3 | 100 | 20 |
如:
select * from A order by a,b;
多条件升序排序查找数据后:
id | a | b |
3 | 100 | 20 |
2 | 100 | 30 |
1 | 200 | 10 |
5、INSERT INTO 语句
用于向表中插入新数据。
insert into table_name values (value1,value2,value3,...); #无需指定列名,需要列出这一列的每个数据
insert into table_name (column1,column2,...) values (value1,value2,...); #指定列和被插入的值,一一对应
如向A表中a列中插入数据123,b列中插入111:
insert into A (a,b) values (123,111)
6、UPDATE 语句
用于更新表中已存在的数据。
update table_name set column1=value1,column2=value2,... where some_column=some_value;
如更新A表中a=100的数据改为a=666,b=888:
update A set a=666, b=888 where a=100; #不加where条件会把整个表格数据相应的数据都更新掉
注:MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决不带where的误操作,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。set sql_safe_updates=1; 表示开启该参数。
7、DELETE 语句
用于删除表中某行的数据。
delete from table_name where some_column=some_value; #不带where删除表中所以数据,但是不释放空间,需要注意
如删除A表中a=100的那行:
delete from A where a=100;
DROP:
drop test;
删除表test,并释放空间,将test删除的一干二净。
TRUNCATE:
truncate test;
删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。
8、GROUP BY 语句
用于结合聚合函数,根据一个或多个列对结果集进行分组。
select column_name, aggregate_function(column_name) from table_name where column_name operator value group by column_name;
如下面这个access_log表:
+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
+-----+---------+-------+------------+
对site_id字段进行分类统计count:
select site_id, sum(access_log.count) as nums from access_log group by site_id; #sum()是聚合函数
得到的结果是:
site_id | nums |
1 | 275 |
2 | 10 |
3 | 521 |
4 | 13 |
5 | 750 |
二、SQL函数
1、Aggregate 函数
1)AVG()
函数返回数值列的平均值。
select avg(column_name) from table_name
如查询A表中a列的平均值以a_average字段展示出来:
select avg(a) as a_average from A #如果不给出展示字段,就直接以avg为展示字段
也可以作为一种结果作为查询条件,如查询A表中a值大于平均值的数据:
select * from A where a > (select avg(a) from A);
2)COUNT()
函数返回匹配指定条件的行数。
select count(column_name) from table_name; #返回指定列的值的数目(不包括null值的数目)
select count(*) from table_name; #返回表中的记录数,也就是有多少条数据
如查看A表中a列有多少条数据:
select count(a) from A
如查看A表中a列有多少条不相同的数据:
select count(distinct a) from A;
3)FIRST()
返回指定的列中第一个记录的值。
select first(column_name) from table_name;
只有 MS Access 支持 FIRST() 函数,其他形式的first函数效果语法:
SQL Server 语法
select top 1 column_namefrom table_name order by column_name asc;
select column_name from table_name order by column_name asc limit 1;
select column_name from table_name order by column_name asc where rownum <=1;
4)LAST()
返回指定的列中最后一个记录的值。
select last(column_name) from table_name;
只有 MS Access 支持 LAST() 函数,其他形式的last函数效果语法:
SQL Server 语法
select top 1 column_namefrom table_name order by column_name desc;
select column_name from table_name order by column_name desc limit 1;
select column_name from table_name order by column_name desc where rownum <=1;
5)MAX()
函数返回指定列的最大值。
select max(column_name) from table_name;
如查询A表中a列的最大值:
select max(a) from A;
6)MIN()
函数返回指定列的最小值。
select min(column_name) from table_name;
如查询A表中a列的最小值:
select min(a) from A;
7)SUM()
函数返回数值列数值的总和,适合对数值列求和。
select sum(column_name) from table_name;
如查询A表中a列数值的总和:
select sum(a) from A;
2、Scalar 函数
1)UCASE()
函数把字段的值转换为大写,适合数值有字母的值转换。
select ucase(column_name) from table_name;
select upper(column_name) from table_name; #用于 SQL Server 的语法
如把A表中a列数值小写字母转换为大写字母:
select ucase(a) from A;
2)LCASE()
函数把字段的值转换为小写,适合数值有字母的值转换。
select lcase(column_name) from table_name;
select lower(column_name) from table_name; #用于 SQL Server 的语法
如把A表中a列数值大写字母转换为小写字母:
select lcase(a) from A;
3)MID()
函数用于从文本字段中提取字符。
select mid(column_name,start[,length]) from table_name;
参数 | 描述 |
---|---|
column_name | 必需。要提取字符的字段。 |
start | 必需。规定开始位置(起始值是 1)。 |
length | 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。 |
如把A表中取a列中前4位字符:
select mid(a,1,4) from A;
4)LEN()
函数返回文本字段中值的长度。
select len(column_name) from table_name;
select length(column_name) from table_name; #MySQL中使用length()函数
如回去A表中a列值的长度:
select len(a) from A;
5)ROUND()
函数用于把数值字段四舍五入为指定的小数位数。
select round(column_name,decimals) from table_name; #column_name需要舍入的字段,decimals返回的小数位数
如:
select round(1.298, 1); #结果是1.3
如把A表中a列的值按小数点后2位四舍五入处理:
select round(a, 2) from A;
6)NOW()
函数返回当前系统的日期和时间。
select now() from table_name;
7)FORMAT()
函数用于对字段的显示进行格式化。
select format(column_name,format) from table_name; #column_name需要格式化的字段,format规定格式
如把A表所处的当前日期和时间格式化:
select date_format(now(),'%Y-%m-%d') as date from A;
sql基础学习的更多相关文章
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...
- SQL基础学习_04_视图
视图 1. 视图的创建 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: 由于 ...
- SQL基础学习_05_函数、谓词、CASE表达式
函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...
- SQL基础学习_03_数据更新
数据的插入 1. 基本INSERT语句 INSERT的基本语法为: INSERT INTO <表名> (列1, 列2, 列3, -) VALUES (值1, 值2, 值 ...
- SQL基础学习_02_查询
SELECT语句 1. SELECT语句查询列(字段): SELECT <列名> FROM <表名>; 该语句使用了两个SQL子句,SELECT子句列举了 ...
- SQL基础学习_01_数据库和表
SQL语句及其种类 1. SQL语句分为三类: DDL(Data Definition Language): CREATE.DROP.ALTER; DML(Data Manipulat ...
- SQL基础学习篇--字符函数
字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择 SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择 SUBSTR ...
随机推荐
- CSS格式化---属性排序
一.背景 与同事合作开发一个项目,后面修改 CSS 时,发现属性顺序跟我写的不一样 我从事开发前端时,导师是有给我大概指定了一定的书写规范 现在开发时,看到的 CSS 属性排序不一样,看起来有点难受( ...
- 机器学习中python的有关使用技巧【创建虚拟环境、jupyter的kernel修改】
1.创建虚拟环境<在原来基础上建立> *注:(这里是python2.python3环境共存,我要创建一个python3的虚拟环境) 一.先安装虚拟环境变量: pip3 install -U ...
- Java-Class-FC:java.time.Duration
ylbtech-Java-Class-FC:java.time.Duration 1.返回顶部 2.返回顶部 3.返回顶部 1. /* * Copyright (c) 2012, 2015, ...
- Access数据库中自动编号字段重置为1
在清空一张ACESS数据库表后,在重添加数据之前,希望此表的自动编号能从1开始,怎么办呢? 下面的方法告诉我们,除了通过转存数据库表的方法外,还有几种更简单的方法: 方法一(前提:数据库表可带内容进行 ...
- pandas读取文件出现路径不存在的问题
我写的路径是绝对路径,其他的文件读写完全是没有问题的但是pandas就是不行,于是我改写为全路径:'E:/Python/KNN/iris.csv' 即可解决
- 【二】Jmeter接口自动化测试系列之函数使用及扩展
上一篇文章我们了解了Jmeter的参数化的集中方法,虽然方法不是很多,但已经足够使用! 本篇文章,介绍一下Jmeter自带函数的使用和 函数扩展,来满足测试工作中的各种需求! Jmeter自带函数 点 ...
- Zabbix监控搭建
目录 Zabbix概述 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 ( 基于 GPL V2 )zabbix由 2 部分构成,zabbix ...
- hdu 3123 2009 Asia Wuhan Regional Contest Online
以为有啥牛逼定理,没推出来,随便写写就A了----题非常水,可是wa了一次 n>=m 则n!==0 注意的一点,最后 看我的凝视 #include <cstdio> #includ ...
- Centos下的 docker安装
安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息:sudo yum-config ...
- Windows下Cython使用(VS2017)
收到公众号推送文章“利用Cython为Python代码加速”后尝试在Windows平台下使用Cython,环境为Python3.5 + VS2017. 1. 简单尝试 1)新建hello.pyx文件, ...