文章目录

  • 前言
  • 一、数据库
    • 1、创建数据库
    • 2、删除数据库
  • 二、表
    • 1.创建表
    • 2.删除表
    • 3.修改表结构
  • 三、查询操作
    • 1、select的基本结构
    • 2、select子句
    • 3、where子句
    • 4、order by子句
    • 5、聚集函数
    • 6、分组查询
    • 7、嵌套子查询
    • 8、多表连接查询
    • 9、复杂查询
  • 四、插入数据
  • 五、修改数据
  • 六、删除数据

前言

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


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

一、数据库

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)内连接

from 表1[inner] join 表2 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)左外连接

from 表1 left [outer] join 表2 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)右外连接

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

(4)全外连接

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

(5)theta方式连接

from 表1,表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

数据库——简单的sql语句介绍相关推荐

  1. oracle数据库创建索引以及简单优化sql语句

    Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访 ...

  2. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)

    文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...

  3. 初学者SQL语句介绍

    初学者SQL语句介绍 1.用 Select 子句检索记录     Select 子句是每一个检索数据的查询核心.它告诉数据库引擎返回什么字段.     Select 子句的常见形式是:     Sel ...

  4. 炼成的:精妙SQL语句介绍

    炼成的:精妙SQL语句介绍 [ 来源:学网 | 作者:学网 | 时间:2005-4-14 | ] 如何从一位菜鸟蜕变成为高手,灵活使用的SQL语句是必不可少的.本文收集了部分比较经典,常用的SQL语句 ...

  5. [分享]高手是怎样炼成的:精妙SQL语句介绍

    [ 分享 ] 高手是怎样炼成的 : 精妙 SQL 语句介绍 如何从一位菜鸟蜕变成为高手,灵活使用的 SQL 语句是必不可少的.本文收集了部分比较经典,常用的 SQL 语句供大家参考,希望对大家有所帮助 ...

  6. Java学习的第七周之简单的SQL语句

    Java学习的第七周之简单的SQL语句 一 简单SQL语句: 1.查询表结构 desc 表名; 2.插入数据 --方式一: 默认全部插入数据INSERT INTO 表名 VALUES (值1,值2,值 ...

  7. 第二十三章 MySQL数据库 手册2 SQL语句

    第二十三章 MySQL数据库 手册2 SQL语句 实验二:用SQL语句,管理数据库 `危险命令,delete 后不加 where 条件代表删除所有数据 delete.` `更加危险的删除命令trunc ...

  8. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  9. 帝国cms php sql,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

    帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 例1:连接MYSQL数据库例子.(a.php) db_close(); //关闭MYSQL链接$empire=null; //注消操作类变量? ...

最新文章

  1. 程序员如何乘风破浪?从数据库历史看技术人发展 | CSDN 高校俱乐部
  2. L1-039. 古风排版
  3. 纽约州金融服务局(NYDFS)为比特币现金(BCH)打开绿灯
  4. hexo d 部署博客时出错
  5. boost::fusion::iterator_range用法的测试程序
  6. Appium 与 Chromedriver
  7. JUnit 5测试中的临时目录
  8. aes模式_AES的完整形式是什么?
  9. 让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示
  10. windows和Linux利用Python快速搭建一个网站
  11. 【python基础知识】如何查看pycharm中已经安装的插件
  12. JNCIS翻译文档之------接口3
  13. 最和谐的离职:1.让公司觉得你无价值了;2.让个人感觉对公司损失很大,你觉得是哪个呢?
  14. Harmony OS — ListContainer列表
  15. PowerDNS Authoritative Server 3.2 RC3 发布
  16. python函数调用另外的一个函数
  17. serverlet增删改查项目代码
  18. pdf会签_图纸会签规定
  19. jQuery学习基础理论(二)
  20. trove mysql 镜像_centos7下手动制作trove镜像

热门文章

  1. 二次供水泵站远程监测解决方案
  2. 网页游戏设计(HTML5入门)--- 基础知识篇
  3. 知识产权保护与知识传播
  4. 计算机应用技术专业英文,计算机应用技术类专业英文简历模板
  5. java 渐变橡皮擦_android实现图片橡皮擦和快速染色功能
  6. OpenCV系列之图像阈值 | 十五
  7. 2022-3-28 Leetcode 1003.检查替换后的词是否有效
  8. 11GRAC CRS启动失败
  9. 实验一计算机基础和网络知识,有关于计算机基础心得体会
  10. 2022-1-28 Leetcode 380.O(1)时间插入、删除和获取随机元素