学向勤中得,萤窗万卷书。这篇文章主要讲述达蒙数据库语法相关的知识,希望能为你提供帮助。
达梦数据库语法查询基础语法结构
select 列1 别名,…,列n 别名 from 表名1,…,表名n
[where 条件语句]
[group by 分组列1,…,列n] [having 筛选分组条件]
[order by 排序列1,…,列n]
以下所有的举例都基于下方的表student和course
文章图片
文章图片
一、条件语句
1. 关系运算符:< , > , =, > =, < =, !=或者< > (不等于), !> (不大于), !< (不小于)
2. 逻辑运算符:and, or, not
3. 范围运算
- 关系运算符和逻辑运算符的组合
select name from student where age< 18 or age> 22;
//查询选修了英语课程并且成绩大于60的学生姓名,科目和成绩
select s.name,c.c_name,c.grade from student s,course c
where c.sno=s.sno and c_name=大学英语 and grade> =60;
- between…and…
select name from student where between 18 and 22;
//查询年龄 不 在18-22之间的学生姓名
select name from student where not between 18 and 22;
- in(值1,…,值n)
select name from student where in(18,22,24);
//查询年龄 不 为18,22,24的学生姓名
select name from student where not in(18,22,24);
4.模糊查询like% 代表任意长度(可以为0)的字符串
- //查询姓张的学生的信息
- _ 代表单个字符串
select * from student like 张_;
5.空值和非空值查询//查询没有选课的学生姓名
select s.name from student s,course c
where c.sno=s.sno and course is null;
//查询课程成绩已经出来的学生姓名,课程和成绩
select s.name,c.c_name,c.grade from student s,course c
where c.sno=s.sno and grade is not null;
二、group by子句以及having子句
1. group by子句
聚集函数:
注意:聚集函数只能用于select子句和group by中的having子句
sum() ------求和
count() ----计算数量
max() ------求最大值
min() -------求最小值
avg() -------求平均值
//查询每个学生选修的课程数量,总学分,最高成绩,最低成绩,平均成绩
select s.name,count(c.c_name),sum(c.credit),
max(c.grade),min(c.grade),avg(c.grade)
from student s,course c where c.sno=s.sno
group by s.name;
三、order by 子句
升序使用asc,降序使用desc,默认值是升序
//每页显示3条数据,显示第3页的数据
select top 3 * from coursewhere num not in(
select top 6num from course
);
四、分页查询
1. top分页规律总结:
select top 每页显示条数 要查询的列表 from 表名 where 编号 not in(
select top (当前页码 - 1) * 每页显示条数 编号 from 表名 );
//每页显示3条数据,显示第3页的数据
select top 3 * from coursewhere num not in(
select top 6num from course
);
2. limit分页规律总结:
selct 列表 from 表名 limit (当前页码-1)*每页条数,每页显示条数;
//每页显示3条数据,显示第3页的数据
select* from course limit 6,3;
3. 伪列分页rowid
规律总结:
select rowid,* from 表名;
----先查看rowid的编号是从几开始的,假设是n
select rowid,* from 表名 where rowid
between ((当前页码-1)*每页条数+n)
and (当前页码 * 每页条数+n-1);
//每页显示3条数据,显示第3页的数据
select rowid,* from course; //n=1
select rowid,* from course where rowid between 7 and 9;
rownum
规律总结:
select * from (
select rownum,* from (
----此处可以是任意复杂的查询
) where rownum < = 当前页码 * 每页条数
)t where t.rownum> (当前页码 - 1) * 每页显示条数;
//每页显示3条数据,显示第3页的数据
select * from (
select rownum,* from (
select * from course
)whererownum < = 9
)t where t.rownum> 6;
达梦数据??库函数??使用
1.length(string) ----获取字符串长度,包括空格//查询course表中的"高级路由技术"字符串的长度
select length(c_name) from (
select c_name from course where c_name =高级路由技术)
2.concat(str1,…,strn) ----拼接字符串//将学号sno和姓名name两个字符串用_连在一起
select concat(sno,_,name) from student;
3. initcap(string) ----将字符串的首个字母变成大写//将course表中的课程名"database"字符串的首字母变成大写
select initcap(c_name) from (
select c_name from course where c_name =database);
4. insert(str1,begin_index,length,str2) ----从str1字符串的指定下标开始删除指定长度的内容,再插入str2并返回新字符串//将course表中的课程名"高级路由技术"变成"高级交换技术"
select insert(c_name,3,2,交换) from (
select c_name from course where c_name =高级路由技术)
5. lower(string) ----转小写//将course表中的课程名"English"改为全小写字母
select lower(c_name) from (
select c_name from course where c_name =English);
6.upper(string) ----转大写//将course表中的课程名"database"改为全大写字母
select upper(c_name) from (
select c_name from course where c_name =database);
7. trim(string) ----去除字符串左右两边的空格//将course表中的课程名" 高等数学"前面的空格去掉
select trim(c_name) from (
select c_name from course where c_name = 高等数学)
8.left(string,n) ----从字符串左边截取长度为n的子串//将course表中的课程名"高级路由技术"截取显示"高级路由"
select left(c_name,4) from (
select c_name from course where c_name =高级路由技术);
9.right(string,n) ----从字符串右边截取长度为n的子串//将course表中的课程名"高级路由技术"截取显示"路由技术"
select right(c_name,4) from (
select c_name from course where c_name =高级路由技术)
10.substring(string,begin,n) ----从字符串的begin下标开始截取长度为n的子串//将course表中的课程名"高级路由技术"截取显示"路由"
select substring(c_name,3,2) from (
select c_name from course where c_name =高级路由技术)
11.replace(string,old,new) ----将string字符串中的old字符串替换成new字符串//将course表中的课程名"高级路由技术"中的"路由"变成"交换"
select replace(c_name,substring(c_name,3,2),交换) from (
select c_name from course where c_name =高级路由技术);
数学函数
- pi() ----获取圆周率
//查看圆周率
select pi(); 2.rand() ----生成0-1之间的随机小数
//生成100-999之间的一个随机数
select(900*rand()+100); - floor() ----向下取整
//生成一个随机的三位数(100-999)
select floor(900*rand()+100); - ceil() ----向上取整
//生成一个随机的三位数(100-999)
select ceil(901*rand()+99); - round(number,n) ----四舍五入到n位小数
//将course表中的成绩grade四舍五入都显示成整数
select round(grade,0) from (
select grade from course ); - trunc(number,n) ----直接截断到第n位小数
//将course表中的成绩grade截断到个位
select round(grade,-1) from (
select grade from course ); - mod(m,n) ----求m/n的余数
select mod(8,5);
- sqrt(number) ----求平方根
//求26的平方根(以小数5.0990195135927845显示结果)
select sqrt(26); - power(m,n) ----求m的n次方
//求24.5的5次方(以小数8827351.53125显示结果)
select power(24.5,5);
1.curdate() ----获取当前日期
//获取当前年月日
select curdate();
2.curtime() ----获取当前时间
//获取当前精确的纳秒的时间
select curtime();
3.now() ----获取当前日期时间
//获取当前年月日及其精确到纳秒的时间
select now();
4.add_days(date,num) ----在指定日期上增加指定的天数(可以为负数)
//从course表中获取最近十天录入的成绩详情
select * from course
where grade_input_date between add_days(now(),-10) and now();
5.add_months(date,num) ----在指定日期上增加指定的月数
//查询六个月后是哪天
select add_months(now(),6);
6.dateadd(datepart,num,date) ----在指定日期的指定部分增加指定的数值
//查询68天后是几月几日
select dateadd(DD,68,now());
7.datediff(datepart,date1,date2)----计算两个日期的指定部分的差值(date2-date1)
//计算距离大年初一还有多少小时
select datediff(HH,now(),2021-02-12);
8.datepart(datepart,date) ----获取指定日期中指定部分的值
//获取现在是19点13分多少秒
select datepart(S,now());
9.dayofweek(date) ----计算指定日期是一周中的第几天
//查看今天是一周中的第几天(从周日开始算)
select dayofweek(now());
10.dayofyear(date) ----计算指定日期是一年中的第几天
//查看今天是一年中的第几天
select dayofyear(now());
【达蒙数据库语法】
推荐阅读
- xp系统之家win7纯净版系统中USB接口无反应的排查方案
- VMware的三种网络模式以及虚拟机使用网络的方法
- MacOS下安装Apache Flink及测试WordCount
- (0基础学Linux系列)1.05 VMware安装问题
- Openfiler安装配置 #导入Word文档图片#
- go 多平台打包工具 gox
- docker存储卷
- 可视化运维解决方案-构建数据大屏 华汇数据
- docker基础用法