据我们学过的SOL语句有数据插入 ,数据更新,数据删除,以及表单查询,多表查询等,表单查询又包括基础查询,条件查询,高级查询,分组查询,多表查询包括子查询
接下来讲述相关达梦SOL语句
先是数据插入,有以下两种语句:第一种语句:insert into 表名(字段名1,字段名2,....); values(值1,值2,.....);
第二种语句:insert into 表名 values(值1,值2,....);
列如给这学生表插入一条数据,如果给全部插入,就可以用第二种语句来插入,如果是有要求插入哪个字段,就用第一种语句
浏览一下数据,刷新一下,数据就出来了。
数据更新:update 表名 set [ 字段名1=值1,字段名2=值2.....] [where 条件表达式];
更新就是 update student set name='lsa' where id=1;(将上面neme更新为lsa)
数据删除:delete 表名 [where 条件表达式];
删除列如删除 student 中的 grade 的记录
delect from student where id=1;
数据查询语句:
基础查询:
select * from 表名
select 字段名1,字段名2,字段名3…… from 表名
select * from student
select grade,age from student
高级查询:
select * from 表名 where条件表达式1
group by 字段名 having 条件表达式2
group by 字段名 asc(升序)desc(降序)
limit 数字(记录数);
列如有这么些字段, 我们查询书名包含“数据”但不包含“数据库”的图书,并按定价降序显示
select * from book
where bName like‘%数据%’ or not like‘%数据库%
order by price desc
条件查询:
select * from 表名 where 字段名;(select:查什么?from:从哪里查?where:列名)
我们 在上表查询年龄在18到22之间(包括18和22)的“汽车学院”学生的学号、姓名和年龄,并用中文显示列名。
select sno,sname,age
from stu
where age>=18 and age<=22 and college='汽车学院';
分组查询:select [DISTINCT]*|{字段名1,字段名2,字段名3.....}
from 表名
where 条件表达式
group by 字段名 having 条件表达式
order by 字段名 [asc| desc]
limit;
例如 查询所有各出版社图书的平均价格、最高价格、最低价格。
select * publisher avg(price),max(price),min(price)
from book
group by publisher
多表查询有以下查询(详细更多查询https://eco.dameng.com/)
连接查询{内连接,外连接,交叉连接}
子查询(就是一条select语句嵌套在另一条语句内部就为子查询,且子查询可以嵌套在select,delete,insert into,create talbe等语句中)
内连接:inner join on
select 输出项
from 表一 inner join 表二 on 表二.公共列字段=表一.公共列字段(两表要有相同公共字段才可以建立连接);
左右外连接:left/right join on
交叉连接:cross join
例如有以下三张表,我们用内连接来测试
bookstore表(书店)
字段名 | 数据类型 | 约束 | 非空 | 字段说明 |
sId | char(3) | 主键 | 是 | 书店号 |
sName | varchar(20) | 是 | 书店名 | |
address | varchar(50) | 地址 |
book表结构(图书)
字段名 | 数据类型 | 约束 | 非空 | 字段说明 |
bId | char(20) | 主键 | 是 | 书号 |
bName | varchar(50) | 是 | 书名 | |
author | varchar(30) | 是 | 作者 | |
publisher | varchar(30) | 出版社 | ||
publishDate | date | 是 | 出版日期 | |
price | decimal(6,2) | 是 | 定价 |
iss表结构(发行)
字段名 | 数据类型 | 约束 | 非空 | 字段说明 |
sId | char(3) | 主键、外键 | 是 | 书店号 |
bId | char(20) | 主键、外键 | 是 | 书名 |
quan | int | 是 | 数量 |
查询已发行图书中定价最高十本图书的书号及书名。
select a.bid,a.bname (这里的a是代表表的别名,表示a表里的字段bId,字母可以随便取,只是方便简写连接)
from book as a inner join iss b (把book表作为a表,连接到iss表作为b表)
on b.bid=a.bid (a表和b表实现两表公共字段连接)
order by a.price desc
limit 10;