sql的简单操作

这篇博客详细介绍了SQL的基础操作,包括数据操作顺序、WHERE条件、聚集函数、GROUP BY、HAVING、ANY/ALL、各种类型的连接(如简单连接、笛卡尔乘积、外连接)、EXISTS/NOT EXISTS以及合并结果表的方法。同时,还讲解了增删改查的基本语法,是学习SQL的入门教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • SELECT: 选择
  • INSERT: 插入
  • UPDATE: 更新
  • DELETE: 删除(只删除内容,不删除定义)
  • DROP: 删除(既删除内容,也删除定义)
  • DISTINC: 消除重复

1.数据操作顺序

SELECT *| 列名
FROM 表名
WHERE 条件
GROUP BY 属性(列名) 按属性分组
HAVING 过滤分组

ORDER BY 排序 (ASC 升序 DESC 降序)

询 -> 再分组 -> 聚集函数 -> HAVING 筛选分组 -> 排序

2. WHERE(行选择)

在这里插入图片描述
模式匹配的例子:

SELECT fName,adress
FROM PrivateOwner
WHERE adress LIKE ‘%Glasgow%’
此查询语句可以找出查询地址中包括字符串Glasgow的所有业主

3. 聚集函数

  • COUNT:返回行数,可对任意字段使用
  • SUM:返回总和,只对数值字段使用
  • AVG:求平均值,只对数值字段使用
  • MIN:求最小值,可对任意字段使用
  • MAX:求最大值,可对任意字段使用

ps:除了COUNT,每个函数在计算前要去掉空值,计算非空值
COUNT(DISTINCT)消除重复

	先查询才能用聚集函数,而且聚集函数只能用在SELECT 和 HAVING 中
	如果SELECT中运用了聚集函数,且接下来没有用GROUP BY,那么SELECT中不能有单独的列名存在,如果有列名,则要写在GROUP。

例如:
错误:staff 是单独的列名
SELECT stafffNo COUNT(salary)
FROM Staff

正确
SELECT stafffNo COUNT(salary)
FROM Staff
GROUP BY stafffNo
ORDER BY stafffNo

4. GROUP BY

5. having

分组约束,顾名思义就是过滤分组的,看例子

SELECT branchNo COUNT(stafffNo )
FROM Staff
GROUP BY branchNo
HAVING (stafffNo ) > 1 //员工数>1
ORDER BY branchNo

6. ANY / ALL

表示存在一个或者多个 / 所有都要满足 才能真

7. 连接

从多个表中得到结果,可用子查询也可以用连接。但当最终表要有多个表中数据只能用连接

7.1 简单连接

SELECT s.branchNo stafffNo
FROM Staff s, Branch b, PropertyForRent p
WHERE s.branchNo = b.branchNo AND s.staffNo= p.staffNo
(ps : 三表连接 用AND 连接)
另外三种方式:
FROM Staff s JOIN Branch b ON s.branchNo = b.branchNo (产生两个branchNo列)
FROM Staff s, Branch b USING branchNo (产生一个branchNo列)
FROM Staff NATURAL JOIN Branch (产生一个branchNo列)

7.3 笛卡尔乘积 CROSS JOIN

SELECT s.branchNo stafffNo
FROM Staff s CROSS JOIN Branch b

7. 4 外连接

  1. 左外连接: …LEFT JOIN…ON…(保留左边不匹配的行,用NULL填充右边)
  2. 右外连接: …RIGHTJOIN…ON…(保留右边不匹配的行,用NULL填充右边)
  3. 全外连接: …FULL JOIN…ON…(保留两个表中所有不匹配的行)

例子:
SELECT p.* , b.*
FROM PropertyForRent p LEFT JOIN Branch b ON b.bCity = p.pCity

7.5 EXISTS / NOT EXISTS

存在一个即为真

在子查询中,我们可以对查询的结果表进行再操作,但是并不能把多个表的数据放到我们需要的最终表中,连接可以是最终表拥有多个表的信息,但是他是对原始表进行操作,那么如果我要中间产生的结果表出现在最终表中怎么办呢?是的,大家肯定都知道,我们直接合并结果不就好了!(.= =)

7.5 合并结果表

可以用交并差来合并两个结果表
  • UNION (并)
  • INTERSECT(交)
  • EXCEPT(差)

以上都是从表中获取我们需要的信息,那么如果表要更新,获取出错了要进行修改我们该如何做呢?(永运不变的是需求的变化。莫名的想起了课上老师说的 = =)

7.6 增删改查

增删改查:INSERT, DELETE, UPDATE, SELECT

看例子:

  1. 增加(添加)
    INSERT INTO Staff (staffNo, salary)
    VLUES(‘SG16’, 81000);

PS:
一是如果按照建表的顺序插入数据,INSERT一行括号内可以不指定列名
二是除了数值数据,其余都要加单引号


  1. (1)
    DELETE FROM Staff
    WHERE staffNo = ‘SG16’; //删除指定行
    (2)
    DELETE FROM Staff; //删除所有行


  2. UPDATE Staff
    SET salary=9000; //删除指定行

今天天气很好,加油!

SQL操作全集(非常适合初学者) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运 ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值