IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库——简单的sql语句介绍 -> 正文阅读

[大数据]数据库——简单的sql语句介绍


前言

本文主要记录一些数据库常规的语法


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据库

1、创建数据库

语法:

create database 数据库名    //后面可接多个数据库名
on(<文件格式>...)          //可不写
log on(<文件格式>...)      //可不写

示例:创建一个名为Sales的数据库

create database Sales
on         //后面接数据库的参数信息
(name = Sales_dat,    //数据库逻辑文件名
filename =' ' ,         //数据库存放路径
size = 10,           //数据库初始化大小
maxsize = 50,        //数据库最大大小,默认为mb,也可加上kb或者%
filegrowth = 5)      //数据库文件的增加量
log on               //后面接数据库日志文件的信息
(name = 'Sales_log',
filename = '',
size = 5mb,
maxsize = 25mb,
filegrowth = 5mb)

2、删除数据库

语法:

drop database 数据库名     //后面可接多个数据库名

示例:删除一个名为Sales的数据库

drop database Sales

二、表

1.创建表

语法:

create table <表名>(
<列名1> <数据类型> [列级完整性约束定义]
<列名2> <数据类型> [列级完整性约束定义]
...

约束:

not null       非空约束,限定某列的值不允许为空
unique         限定某一列的取值唯一
primary key    主键
check          限定取值范围
default        设定某一列的默认值
foreign key    外键

示例:创建book表

create table book(
book_ID  char(10)  primary key,     //主键
name  varchar(30)   not null,       //非空约束
author  varchar(10),
publish  varchar(20),
price  decimal(6,2)  check(price>0),     //check约束,price大于0
classify  varchar(20)
)

2.删除表

语法:

drop table <表名>      //后面可接多个表名

示例:删除book表

drop table book

3.修改表结构

表中列的修改
语法:

alter table <表名>                //后面可接多条下面语句
alter column <列名> <新数据类型>     //修改列定义
add <列名> <数据类型> [约束]          //添加新列
drop column <列名>          //删除列

示例:

//添加“职业”列到Reader表中,列的定义为profession char(20)
alter table Reader
add profession char(20)

//将profession列的数据类型改为char(30)
alter table Reader
alter column profession char(30)

//删除profession列
alter table Reader
drop column profession

表中约束的修改
语法:

alter table <表名>
//check表示对原有数据进行检查,如果存在数据不满足约束,则不能添加约束
//oncheck不进行检查
with check(oncheck)
add constraint <约束>         //新增约束
drop  constraint <约束>      //删除约束     

示例:

//为student表中的年龄添加大于15岁的约束,并对原数据进行检查
alter table student
with check
add constraint check_year check(check_year>15)

//删除约束df_deopt
alter table student
drop constraint df_deopt

三、查询操作

1、select的基本结构

select <目标列名序列> from <数据源>
{where <条件>
group by <分组依据列>
having  <组提取条件>
order by <排列依据>}

2、select子句

语法一:select接列名

select <列名> from <表名>   //可多个列名

示例:

//查询book表中的name,author,price列
select name,author,price from book

//查询book表中所以列
select * from book

语法二:不显示重复结果

如果在查询结果中重复数据不想显示出来,可以用distinct关键字
重复显示可以用all关键字

示例:

//查询reader表中sex字段(去重)
select distinct sex from reader

//查询reader表中sex字段(重复)
select all sex from reader

语法三:列表达式

select后面可以跟加减乘除表达式、计算函数和常量

示例:

//查询每一本书九折后的价格
select book_ID,name,price*0.9 from book

语法四:列更名

旧列名| 表达式 as 新列名
或:新列名 = 旧列名 | 表达式

示例:

select boo_ID as 编号, name as 姓名, author as 作者 from book

3、where子句

where子句中可以使用的查询条件

比较运算         =, >, >=, <, <=, <>(!=)
确定范围        between and, not between and
确定集合        in, not in
字符匹配        like, not like
空值            is null, is not null
多重条件        and, or, not

语法一:比较运算

等于(=), 大于(>), 大于等于(>=), 小于(<), 小于等于(<=), 不等于(<>!=), 取反(not)

示例:

//查询所以女性读者的信息
select * from reader where sex='女'

语法二:between…and…

between <下限值> and <上限值>     //查找在该范围的数据
not between <下限值> and <上限值>     //查找不在该范围的数据

示例:

//查询价格在25到50元之间的图书
select * from book where price between 25 and 50

//查询价格不在20到30元之间的图书
select * from book where price not between 20 and 30

语法三:in

限定属性的取值在指定集合中

示例:

//查找“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书
select * from book
where publish in('机械工业出版社','清华大学出版社','高等教育出版社')

语法四:like

模糊查询
列名 like <字符串>
字符串中可以用通配符:
	_表示任意一个字符
	%表示任意多个字符

示例:

//查询名字是两个字的姓“王”读者信息
select * from reader where name like '王_'
//查询所以不姓“张”的读者信息
select * from reader where name not like '张%'

语法五:is null

判断某一值是否为空

示例:

//查询性别为空的读者信息
select * from reader where sex is null

4、order by子句

语法:

ASC表示升序,DESC表示降序,默认升序
order by <列名> [asc/desc]     //后面可接多个

示例:

//查询读者的额信息按出生日期的升序显示
select * from reader order by birthdate ASC

5、聚集函数

count(*): 计算组元个数
count(<列名>): 统计列值个数
sum(<列名>): 计算列值总和(只限数值型)
avg(<列名>): 计算列值平均值(只限数值型)
max(<列名>): 求列值最大值
min(<列名>): 求列值最小值

注:聚集函数不能写在where子句中

6、分组查询

//group by分组后用having进行筛选
group by <列名> having <组提条件>

示例:

//查询所借图书的数目多于2本的读者编号,并显示所借图书的数目
select reader_ID, count(book_ID) from borrow 
group by reader_ID having count(book_ID)>2

7、嵌套子查询

(1)比较运算中的子查询

//查询售价最高的图书的名称
select name from book where price=(
	select max(price) from book)

(2)带有in的子查询

//查询与“数据库基础”在同一出版社的图书信息
select * from book where publish in(
	select publish from book where name='数据库基础')

(3)exists子查询
判断结果是否存在,存在返回true,否则为false

//查询已经借阅了图书的读者名称
select name from reader where exists(
	select * from borrow where borrow.reader_ID=reader.reader_ID)

(4)some查询:表示子查询结果集合中的某一个元素

//查询不是最低价格的所有图书
select * from book where price>some(
	select price from book)

(5)all查询:表示子查询结果集合中的所有元素

//查询书价最高的图书信息
select * from book where price>=all(
	select price from book)

8、多表连接查询

(1)内连接

from1[inner] join2 on <连接条件>

示例:

//将reader和borrow两张表按照读者编号相等进行连接
select reader.reader_ID,name,sex,birthdate,borrow.book_ID,
borrow.reader_ID,borrowdate from reader join borrow 
on reader.reader_ID=borrow.reader_ID

(2)左外连接

from1 left [outer] join2 on <连接条件>
//在连接过程表1的元组r如果不能满足连接条件,则r保留在连接结果中
//在连接结果中,和r相对应的表2的列值用null代替

示例:

//将reader和borrow进行左外连接,显示读者编号,读者姓名,图书编号
select reader.reader_ID as 读者编号,name as 读者姓名,
borrow.book_ID as 图书编号 from reader left join borrow 
on reader.reader_ID = borrow.reader_ID

(3)右外连接

from1 right [outer] join2 on <连接条件>
//在连接过程表2的元组r如果不能满足连接条件,则r保留在连接结果中
//在连接结果中,和r相对应的表1的列值用null代替

(4)全外连接

from1 full [outer] join2 on <连接条件>
//在连接过程表1或者表2的元组r如果不能满足连接条件,则r保留在连接结果中
//在连接结果中,和r相对应的表1的列值用null代替

(5)theta方式连接

from1,2... where <连接条件>

示例:

//将reader和borrow两张表按照读者编号相等进行连接
select reader.*,borrow.*
from reader,borrow
where reader.reader_ID = borrow.reader_ID

9、复杂查询

(1)union:合并两个或多个查询结果

select <目标列名序列> from <数据源>
{where <条件>
group by <分组依据列>
having  <组提取条件>
order by <排列依据>}
union
select <目标列名序列> from <数据源>
{where <条件>
group by <分组依据列>
having  <组提取条件>
order by <排列依据>}

示例:

select * from book
where publish='清华大学出版社'
union             //若不希望去重,可以在union后加上关键字all
select * from book
where price<25
order by name

(2)intersect:可以得到两个或多个查询结果的交集

select * from book
where publish='清华大学出版社'
intersect
select * from book
where price<25

(3)except(minus):在两个sql语句上先找出第一个sql语句所产生的结果,然后看这些结果有没有在第二个sql语句的结果中,如果有就去除。还有就是如果第二个sql语句中产生的结果没有在第一个sql语句产生的结果内,也去除

select * from book
where publish='清华大学出版社'
except
select *from book
where price<25

(4)派生关系

//查询出版图书评价价格多于25元的出版社
select publish,AVG_price
from(select publish,avg(price)
from book
group by publish)
as result(publish,avg(price)

四、插入数据

语法:

insert into 表名(列名列表) values(值列表)

示例:

//把数据('021B310001','张冬','男','1976-11-26')插入到reader表中
insert into reader(reader_ID,name,sex,birthdate)
values('021B310001','张冬','男','1976-11-26')

五、修改数据

语法:

update <表名> set <列名+表达式>... where <更新条件>

示例:

//所以图书的价格打8折
update book set price=price*0.8

六、删除数据

语法:

delete from <表名> where <删除条件>

示例:

//删除book表中的全部数据
delete from book
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:59:49  更:2022-07-04 23:00:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 18:10:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码