当前位置:   article > 正文

数据库——简单的sql语句介绍_展示数据库的sql语句

展示数据库的sql语句


前言

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


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

一、数据库

1、创建数据库

语法:

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

示例:创建一个名为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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2、删除数据库

语法:

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

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

drop database Sales
  • 1

二、表

1.创建表

语法:

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

约束:

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

示例:创建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)
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.删除表

语法:

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

示例:删除book表

drop table book
  • 1

3.修改表结构

表中列的修改
语法:

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

示例:

//添加“职业”列到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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

表中约束的修改
语法:

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

示例:

//为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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、查询操作

1、select的基本结构

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

2、select子句

语法一:select接列名

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

示例:

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

//查询book表中所以列
select * from book
  • 1
  • 2
  • 3
  • 4
  • 5

语法二:不显示重复结果

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

示例:

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

//查询reader表中sex字段(重复)
select all sex from reader
  • 1
  • 2
  • 3
  • 4
  • 5

语法三:列表达式

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

示例:

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

语法四:列更名

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

示例:

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

3、where子句

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

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

语法一:比较运算

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

示例:

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

语法二:between…and…

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

示例:

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

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

语法三:in

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

示例:

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

语法四:like

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

示例:

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

语法五:is null

判断某一值是否为空
  • 1

示例:

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

4、order by子句

语法:

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

示例:

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

5、聚集函数

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

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

6、分组查询

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

示例:

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

7、嵌套子查询

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

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

(2)带有in的子查询

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

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

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

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

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

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

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

8、多表连接查询

(1)内连接

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

示例:

//将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
  • 1
  • 2
  • 3
  • 4

(2)左外连接

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

示例:

//将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
  • 1
  • 2
  • 3
  • 4

(3)右外连接

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

(4)全外连接

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

(5)theta方式连接

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

示例:

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

9、复杂查询

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

select <目标列名序列> from <数据源>
{where <条件>
group by <分组依据列>
having  <组提取条件>
order by <排列依据>}
union
select <目标列名序列> from <数据源>
{where <条件>
group by <分组依据列>
having  <组提取条件>
order by <排列依据>}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

示例:

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

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

select * from book
where publish='清华大学出版社'
intersect
select * from book
where price<25
  • 1
  • 2
  • 3
  • 4
  • 5

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

select * from book
where publish='清华大学出版社'
except
select *from book
where price<25
  • 1
  • 2
  • 3
  • 4
  • 5

(4)派生关系

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

四、插入数据

语法:

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

示例:

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

五、修改数据

语法:

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

示例:

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

六、删除数据

语法:

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

示例:

//删除book表中的全部数据
delete from book
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/546025
推荐阅读
相关标签
  

闽ICP备14008679号