我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql初学者笔记 语法基础

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql初学者笔记 语法基础

sql初学者笔记 语法基础

  • -- 很少支持
  • 段落注释

SELECT

检索数据

语法 作用 例子 释义
select 查找列,并返回行 select prod_name from products;
#可使用,分隔列名来查找多个列。
查找prod_name列,并返回其下的所有行,在products表中。
* 通配符 select * from products; 查找所有列并返回所有行,在products表中。
distinct 返回不重复的值 select distinct vend_id from products;
#不可配合通配符使用除非所有列完全相同
查找vend_id列并返回其下所有行中不重复的值,在products表中。
limit 限制 select prod_name from products limit 5,5; 查找prod_name列并返回其下第5行起5行的值,在products表中。

排序检索数据

语法 作用 例子 释义
order by 排序 select prod_id,prod_price,prod_name
from Products
order by 2;
#默认升序(ASC)排列
#指定按多个列排列时:仅当指定的第一列中有重复元素时,才对其(存在重复值的)按指定的下一列进行排序。
即按照查找的第二个列进行排序,也可指定列名(prod_price)
desc 降序 select prod_id,prod_price,prod_name
from Products
order by 2 DESC,3 desc;
即按照查找的第二个列进行降序排序,desc仅对其前的列有效;

过滤数据

语法 作用 例子 释义
where 在客户端过滤数据 select *
from Products
where prod_price >= 5.99
order by prod_price desc;
#同排序操作一同使用时,不得位于排序操作之前#支持<>=!=等操作,其中<>操作等同于!=
例:
select *
from Products
where prod_id <>"fc"
order by prod_price desc;
#过滤字符串不区分大小写
1.查找所有列,在Products表中,并返回prod_price >=5.99的所有行
2.查找所有列,在Products表中,并返回除prod_id = "fc"之外的所有行
between 值的范围过滤 select prod_name,prod_price
from Products
where prod_price between 4 and 10
查找prod_name,prod_price两列在Products表中,并返回prod_price值为4-10范围内的的的所有行
is 可用来检查null(空值) select prod_name,prod_price
from Products
where prod_price is null
返回所有没有价格的商品
and,or 逻辑操作符
and且
or与,这里是短路的
select *
from Products
where vend_vend_id ="1001" and prod_price <=4;
#and的优先级比or要高,and,or共同使用时为避免错误应用()明确分组,
#也可使用in代替or,例:
select prod_name,prod_price from products where vend_id in("1001","1002")
order by prod_name
等同于:
select prod_name,prod_price from products where vend_id = "1001" or vend_id = "1002"
order by prod_name
返回所有vend_vend_id ="1001" 且 prod_price <=4;的行
not 否定其后的条件 select prod_name,prod_price from products where not vend_id in("1001","1002")
order by prod_name
可与in连用,返回vend_id=1001 vend_id=1002外的所有行

通配符搜索

语法 作用 例子
% 匹配0、1或多个字符包含空格。不会匹配到null select prod_name
from products
where prod_name like "f%%"
_ 匹配单个字符,包含空格 select prod_name
from products
where prod_name like "fuse_"
rtrim()ltrim() 去除右边、左边空格

创建计算字段

select prod_id ,quantity,item_price,quantity*item_price as expanded_price
from orderitems
where order_num = 20008;
#如上创建了一个expanded_price字段(quantity*item_price的结果的别名),其仅在此时有效而不会存放到表中。

使用函数

select vend_name, upper(vend_name) as vend_name_upcase
from vendors
#将vend_name列下的所有行以大写形式返回
select avg(prod_price) as avg_peice from products where vend_id ="1001"
#返回平均值
select count(*) as num_cust from customers
#返回长度(数目),也可对列表中特定值进行计数

分组

select  vend_id,count(*) as num_prods from  products #对vend_id每行进行计数
group by vend_id;#按照vend_id排序并分组

select cust_id,count(*) as orders
from orders 
group by cust_id 
having count(*)>=2#过滤分组中>=2的,having支持where的所有操作

select order_num,count(*) as items
from orderitems group by order_num
having count(*) >=3
order by items,order_num desc#对分组依照选定的列进行排序

子句查询

select cust_name,cust_contact from customers where cust_id =(select cust_id 
from orders
where order_num = (select order_num from orderitems where prod_id = "jp2000"));
#由内而外,哈哈
等效于:
select order_num 
from orderitems
where prod_id = "jp2000";
select cust_id 
from orders
where order_num =20006
select cust_name,cust_contact from customers where cust_id =10003

联结(返回不在同一个表中的行)


select vend_name, prod_name,prod_price
from vendors,products
where vendors.vend_id=products.vend_id;#此处过滤联结条件。
#如没有联结条件过滤,将检索出“笛卡尔积”:表1行数*表2行数

select vend_name, prod_name,prod_price
from vendors inner join products
on vendors.vend_id=products.vend_id
自联结(比子查询更快)

select cust_id, cust_name, cust_contact
from customers
where cust_name = (select cust_name from customers where cust_contact ="jim jones");

select c1.cust_id, c1.cust_name,c1.cust_contact
from customers as c1,customers as c2#不以别名进行会引发错误
where c1.cust_name=c2.cust_name and c2.cust_contact="jim jones"#联结cust_name与c2.cust_name ,并过滤cust_contact="jim jones"的行

组合查询

select cust_name,cust_contact,cust_email,cust_state
from customers
where cust_state in("il","in","mi")
union  #组合上下select多个select之间需要多个union分隔,union默认排除重复,union all则不排除
select cust_name,cust_contact,cust_email,cust_state#union中每个查询必须包含相同的列、表达式、或聚集函数
from customers
where cust_name ="wascals"
order by cust_name;#不能分别对每条union指定不同的排序

INSERT

依赖于次序的插入


insert into customers
values("1000000006","toy land","123 any street","new york","ny", "11111","usa",null, null);
#依赖于次序的插入,必须为每一列提供一个值,如某列无添加则应写上null

提供列名的插入

insert into customers(cust_id,cust_contact,cust_email,cust_name,cust_address,cust_city,cust_state,cust_zip)
#必须为提供了列名的列给出一个值
values(null, null,"1000000006","toy land","123 any street","new york","ny", "11111");

从另一个表插入

insert into 表名(列名)
select 列名
from 表名
where 过滤

复制一个表


select * 
into custcopy 
from customers;

create table custcopy as
select * 
from customers;

UPDATE

更新单个列

update customers
set cust_email = "kim@@thetoystore.com"
where cust_id = "100000000005"#如不指定,将更新customers表cust_email列下的所有行

更新多个列

update customers
set cust_email = "kim@@thetoystore.com",cust_contact="sam roberts"
where cust_id = "100000000006"

DELLETE

delete from customers
where cust_id = "1000000006"#删除此行,不过滤则删除所有行
#update删除列
#truncate删除表

添加删除列&&表

添加表


create table orderitems
(order_num integer not null,
order_item integer not null,
prod_id char(10) not null,
quantity integer not null default 1,#设置quantity列下的行默认值为1
item_price decimal(8,2) not null);#not null即不允许填入null,默认可填入null,只有为 not null的列方可为主键及唯一标识

alter table vendors
add vend_phone char (20);

alter table vendors
drop column vend_phone;#此操作不可逆

drop table custcopy;#此操作不可逆

视图

create view#创建视图
drop view 视图名#删除视图

create view productcustomers as
select cust_name , cust_contact,prod_id
from customers,orders,orderitems
where customers.cust_id=orders.cust_id
and orderitems.order_num=orders.order_num;

select *
from productcustomers;

create view customeremaillist as
select cust_id, cust_name,cust_email
from customers
where cust_email is not null;#返回查询中所有cust_email不为空的,并将其添加到视图中

create view orderitemsexpanded as 
select order_num,prod_id,quantity,item_price,quantity*item_price,quantity*item_price as
expanded_price
from orderitems

事务管理


start transaction ;
-- 标识事务处理块,块中内容未执行完则整体撤销

savepoint delete1;#标识
rollback to delete1;返回标识delete1

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql初学者笔记 语法基础

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql初学者笔记 语法基础

常见注释-- 很少支持行内注释段落注释基础语法SELECT检索数据语法作用例子释义select查找列,并返回行select prod_name from products;#可使用,分隔列名来查找多个列。查找prod_name列,并返回其下的所有行,在
sql初学者笔记 语法基础
2018-10-06

Scala语言入门:初学者的基础语法指南

本文将带领大家逐步了解Scala的基础知识,无论你是编程新手还是想要扩展技能集的专业开发者,都可以在这篇文章中找到有用的信息。
Scala编程2024-11-30

PHP学习笔记:基础语法及变量定义

在如今的互联网时代,PHP(Hypertext Preprocessor)作为一种广泛使用的服务器脚本语言,被越来越多的开发者所青睐。本篇文章将为大家介绍PHP的基础语法和变量的定义,并提供具体的代码示例,帮助初学者更好地理解和掌握。一、P
2023-10-21

Python基础语言学习笔记总结(精华)

以下是Python基础学习内容的学习笔记的全部内容,非常的详细,如果你对Python语言感兴趣,并且针对性的系统学习一下基础语言知识,下面的内容能够很好的满足你的需求,如果感觉不错,就收藏以后慢慢跟着学习吧。 一、变量赋值及命名规则 ① 声
2022-06-04

SQL Server基础:TOP、OFFSET-FETCH、SET ROWCOUNT用法笔记

今天给大家介绍一下TOP、OFFSET-FETCH、SET ROWCOUNT用法笔记,希望对大家能有所帮助!

[学习笔记] Oracle基础增删改查用法

查询select *|列名|表达式 from 表名 where 条件 order by 列名select t.* from STUDENT.STUINFO t where t.stuname = '李四';select t.stuid,t.classno,t.
[学习笔记] Oracle基础增删改查用法
2021-04-06

Python初学者必学:掌握lambda函数的基础用法

初学者必备:掌握Python中lambda函数的基本使用方法,需要具体代码示例概述:Python是一种简单易学的编程语言,它以其简洁、灵活的语法吸引了众多程序员的喜爱。在Python中,lambda函数是一种特殊的匿名函数,它可以在需要函
Python初学者必学:掌握lambda函数的基础用法
2024-02-02

Python中的异常处理相关语句基础学习笔记

异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件,解释器(也可以是程序员引发异常)会引发一个异常通知前段控制流有错误发生,对异常的处理发生在第二阶段,异常引
2022-06-04

编程热搜

目录