sql学习(要多使用)

编程入门 行业动态 更新时间:2024-10-27 00:29:42

sql学习(<a href=https://www.elefans.com/category/jswz/34/1762011.html style=要多使用)"/>

sql学习(要多使用)

sql简介

1、sql是用于访问和处理数据库的标准的计算机语言。
2、sql是用于管理关系数据库管理系统。sql的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

use RUNOOB; 命令用于选择数据库。
set names utf8; 命令用于设置使用的字符集。
SELECT * FROM Websites; 读取数据表的信息。

一些最重要的 SQL 命令

SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

select
例如有一个"Websites" 表
select * from Websites; 代表从这个表中选取所有的列
select name,country from Websites;代表从Websites表中选取name和country列

select distinct
DISTINCT 关键词用于返回唯一不同的值
select distinct country from websites; 代表从websites表中的country列中选取唯一不同的值,就是去掉country列重复值

where子句
用于提取那些满足指定条件的记录
下面的 SQL 语句从 “Websites” 表中选取国家为 “CN” 的所有网站
select * from websites where country = ‘CN’
sql使用单引号来环绕文本值,如果是数值字段,请不要使用引号

where子句中的运算符

<>不等于
= 等于
>大于
<小于
>=大于等于
<=小于等于
between 在某个范围内
like 搜索某种模式
in 指定针对某个列的多个可能值

逻辑运算
and or not

and:同时满足两个条件的值
select * from emp where sal >2000 and sal < 3000;
查询emp表中sql大于2000并且小于3000的值。

or:或满足其中一个条件的值
select * from emp where sal >2000 or comm>500;
查询emp表中sal大于2000或者comm大于500的值。
or 自带去重的效果

not:非 满足不包含该条件的值
select * from emp where not comm>500;
查询emp表中comm小于等于500的值。

特殊条件
1、空值判断:is null
select * from emp where comm is null
查询emp表中comm列中的空值。
过滤不为空的信息
select * from emp where comm is not null

2、between and(在 之间的值)
select * from emp where sal between 1500 and 3000;
查询emp表中sal列中大于1500小于1300的值。

3、in(在一个非连续的范围内)
select* from emp where sal in (5000,3000,1500);
查询emp表中sal列中等于5000,3000,1500的值。

4、like(%表示任意多个字符 _表示一个任意字符)
select* from emp where ename like ‘m%’;
查询emp表中ename列中有m的值,m为要查询内容中的模糊信息。

order by
关键字用于对结果集按照一个列或者多个列进行排序
关键字默认按照升序对记录进行排序,如果需要按照降序对记录进行排序,可以使用DESC关键字。
下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “alexa” 列排序:
SELECT * FROM Websites ORDER BY alexa;

下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “alexa” 列降序排序:
SELECT * FROM Websites ORDER BY alexa DESC;

下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “country” 和 “alexa” 列排序:
SELECT * FROM Websites ORDER BY country,alexa;

INSERT INTO语句
用于向表中插入新记录
1、第一种无需指定要插入的列名。只需提供被插入的值即可
insert into table_name values(value1,value2,value3)

2、第二种需要指定列名及要插入的值
insert into table_name (id,name)values(1,小小)

update语句
用于更新表中已经存在的记录

假设要把‘菜鸟教程中’的alexa排名更新为5000,country改为USA
update websites set alexa=5000,country=USA where name= ‘菜鸟教程’

delete语句
用于删除表中的行
delete from websites where name= ‘book’ and country = ‘USA’

select top,limit,rownum子句
top子句用于规定要返回的记录的数目。
top子句对于拥有数千条记录的大型表来说。是非常有用的。
但是并非所有的数据库系统都支持select top语句mysql支持limit语句来选取指定的条数数据。oracle可以使用rownum来选取。

mysql语法
select * from web limit 5;查看web表前五条。

oracle语法
select * from persons where runoob <=5;

like操作符
用于在where子句中搜索列中的指定模式。

选取name以字母g开始的所有客户
select * from websites where name like ‘G%’

选取name以字母k结尾的所有客户
select * from websites where name like ‘%k’

选取name包含模式00的所有客户
select * from websites where name like ‘%00%’

通过not关键字,选取不匹配模式的记录
select * from websites where name not like ‘%00%’

通配符
在sql中 通配符与sql like操作符一起使用
% 替代0或多个字符
_替代一个字符
[charlist] 字符列中的任何单一字符
[ ^charlist] 或[!charlist] 不在字符列中的任何单一字符

以字母‘https’开始的所有网站
select * from websites where like ‘https%’

SQL 语句选取 url 包含模式 “oo” 的所有网站:
select * from websites where like ‘%00%’

下面的 SQL 语句选取 name 以一个任意字符开始,然后是 “oogle” 的所有客户:
select * from websites where like ‘_oogle’

下面的 SQL 语句选取 name 以 “G” 开始,然后是一个任意字符,然后是 “o”,然后是一个任意字符,然后是 “le” 的所有网站:
select * from websites where like ‘G_o_le’

使用 SQL [charlist] 通配符
MySQL 中使用 REGEXPNOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name REGEXP ‘1’;

下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name REGEXP ‘[A-H]’;

sql语句 in
下面的 SQL 语句选取 name 为 “Google” 或 “菜鸟教程” 的所有网站:
SELECT * FROM Websites where name in ( “Google” , “菜鸟教程”)

sql between操作符
用于选取介于两个值之间的数据范围之内的值
下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:
SELECT * FROM Websites where alexa between 1 and 20;

sql别名
创建别名是为了让列名称的可读性更强

列的sql别名
select column_name AS alias_name from table_name;

表的sql别名语法
select column_name(s) from table_name AS alias_name;

SELECT NAME AS a,address AS b FROM threat_point 列别名

我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 “site_info” 的别名
SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites; 多个列名组合在一起
concat(将多个字段拼接为一个字段)

SELECT Websites.name, Websites.url, access_log.count, access_log.date FROM Websites, access_log
WHERE Websites.id=access_log.site_id and Websites.name=“菜鸟教程”; 多表多列

查找最大值用max函数
运营想要知道复旦大学学生gpa最高值是多少
select max(gpa) from user_profile where university =‘复旦大学’

最小值函数
min()

统计函数
count(*)

平均值函数
avg(*)

求和函数
sum()

分组group by
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
group_concat(字段名) 根据分组的结果,使用group_concat(字段名)来放置每一个分组中某字段的集合
select gender,GROUP_CONCAT(name) from students group by gender;

round()函数
用于把数值字段舍入为指定的小数位数
比如round(列名,2)

聚合函数作为筛选条件时,不能用where,而是用having语法
where 从记录中法过滤出某一条记录
having 可以从一组组记录中过滤掉其哪几组

-WHERE 用在group by前,having在group by之后

查找男生人数以及平均gpa,同时对列名进行别名
select count(gender) as male_num,avg(gpa) as avg_gpa from user_profile where gender=‘male’

join
用于把两个或多个表的行连接起来
当两张表连接起来,没有任何限制的情况下,就会出现笛卡尔积现象(这是一种数学现象)

inner join
在表中存在至少一个匹配时返回行

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录
where条件是在临时表生成好后,再对临时表进行过滤的条件,这时已经没有left join的含义,条件不为真的就全部过滤掉。

union和union all
UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

CASE函数
是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。
可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。
分为:
简单CASE函数
搜索CASE函数
现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量

--简单Case函数
CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 
--Case搜索函数
CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END

两者区别:这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。

select device_id,gender,CASE when age >= 25 THEN '25岁及以上'when age >= 20 THEN '20-24岁'when age < 20 THEN '20岁以下'else '其他'end as age_cut
from user_profile

year/month函数
year(date)=2021 and month(date)=8

selectday(date) as day,count(question_id) as question_cnt
from question_practice_detail
where month(date)=8 and year(date)=2021
group by date

day函数
DAY函数返回指定日期的日的部分


  1. A-H ↩︎

更多推荐

sql学习(要多使用)

本文发布于:2024-02-11 10:56:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1680619.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:要多   sql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!