为您找到与数据库中round函数相关的共74个结果:
C语言中gets从标准输入设备读字符串函数,可以无限读取,不会判断上限,今天读文网小编在这里为大家介绍C语言get函数的用法,欢迎大家阅读!
与getc()作用相同,但有几点区别:
(1)getc(可以是)宏操作,fgetc(必须)是函数。
(2)fgetc()可以当作其他函数的参数,但是getc()不可以。
一般来讲getc()速度比fgetc()快,因为宏操作比函数操作快。
浏览量:2
下载量:0
时间:
c语言中time函数的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用。
头文件time.h
@函数名称: localtime
函数原型: struct tm *localtime(const time_t *timer)
函数功能: 返回一个以tm结构表达的机器时间信息
函数返回: 以tm结构表达的时间,结构tm定义如下:
[cpp] view plain copy
01.struct tm{
02. int tm_sec;
03. int tm_min;
04. int tm_hour;
05. int tm_mday;
06. int tm_mon;
07. int tm_year;
08. int tm_wday;
09. int tm_yday;
10. int tm_isdst;
11. };
参数说明: timer-使用time()函数获得的机器时间
[cpp] view plain copy
01.#include <time.h>
02.#include <stdio.h>
03.#include <dos.h>
04.int main() {
05. time_t timer;
06. struct tm *tblock;
07. timer=time(NULL);
08. tblock=localtime(&timer);
09. printf("Local time is: %s",asctime(tblock));
10. return 0;
11.}
@函数名称: asctime
函数原型: char* asctime(struct tm * ptr)
函数功能: 得到机器时间(日期时间转换为ASCII码)
函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年
参数说明: 结构指针ptr应通过函数localtime()和gmtime()得到
所属文件: <time.h>
[cpp] view plain copy
01.#include <stdio.h>
02.#include <string.h>
03.#include <time.h>
04. int main() {
05. struct tm t;
06. char str[80];
07. t.tm_sec=1;
08. t.tm_min=3;
09. t.tm_hour=7;
10. t.tm_mday=22;
11. t.tm_mon=11;
12. t.tm_year=56;
13. t.tm_wday=4;
14. t.tm_yday=0;
15. t.tm_isdst=0;
16. strcpy(str,asctime(&t));
17. printf("%s",str);
18. return 0;
19.}
@函数名称: ctime
函数原型: char *ctime(long time)
函数功能: 得到日历时间
函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年
参数说明: time-该参数应由函数time获得
所属文件: <time.h>
[cpp] view plain copy
01.#include <stdio.h>
02.#include <time.h>
03.int main() {
04. time_t t;
05. time(&t);
06. printf("Today's date and time: %s",ctime(&t));
07. return 0;
08.}
@函数名称: difftime
函数原型: double difftime(time_t time2, time_t time1)
函数功能: 得到两次机器时间差,单位为秒
函数返回: 时间差,单位为秒
参数说明: time1-机器时间一,time2-机器时间二.该参数应使用time函数获得
所属文件: <time.h>
[cpp] view plain copy
01.#include <time.h>
02.#include <stdio.h>
03.#include <dos.h>
04.#include <conio.h>
05.int main() {
06. time_t first, second;
07. clrscr();
08. first=time(NULL);
09. delay(2000);
10. second=time(NULL);
11. printf("The difference is: %f seconds",difftime(second,first));
12. getch();
13. return 0;
14.}
@函数名称: gmtime
函数原型: struct tm *gmtime(time_t *time)
函数功能: 得到以结构tm表示的时间信息
函数返回: 以结构tm表示的时间信息指针
参数说明: time-用函数time()得到的时间信息
所属文件: <time.h>
[cpp] view plain copy
01.#include <stdio.h>
02.#include <stdlib.h>
03.#include <time.h>
04.#include <dos.h>
05.char *tzstr="TZ=PST8PDT";
06.int main() {
07. time_t t;
08. struct tm *gmt, *area;
09. putenv(tzstr);
10. tzset();
11. t=time(NULL);
12. area=localtime(&t);
13. printf("Local time is:%s", asctime(area));
14. gmt=gmtime(&t);
15. printf("GMT is:%s", asctime(gmt));
16. return 0;
17.}
@函数名称: time
函数原型: time_t time(time_t *timer)
函数功能: 得到机器的日历时间或者设置日历时间
函数返回: 机器日历时间
参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一个long类型
所属文件: <time.h>
[cpp] view plain copy
01.#include <time.h>
02.#include <stdio.h>
03.#include <dos.h>
04.int main() {
05. time_t t;
06. t=time();
07. printf("The number of seconds since January 1,1970 is %ld",t);
08. return 0;
09.}
@函数名称: tzset
函数原型: void tzset(void)
函数功能: UNIX兼容函数,用于得到时区,在DOS环境下无用途
函数返回:
参数说明:
所属文件: <time.h>
[cpp] view plain copy
01.#include <time.h>
02.#include <stdlib.h>
03.#include <stdio.h>
04.int main() {
05. time_t td;
06. putenv("TZ=PST8PDT");
07. tzset();
08. time(&td);
09. printf("Current time=%s",asctime(localtime(&td)));
10. return 0;
11.}
浏览量:2
下载量:0
时间:
数据库group by的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库group by的用法的用法,希望对你们有用。
1、概述
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
2、原始表
3、简单Group By
示例1
select 类别, sum(数量) as 数量之和
from A
group by 类别
返回结果如下表,实际上就是分类汇总。
4、Group By 和 Order By
示例2
select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc
返回结果如下表
在Access中不可以使用“order by 数量之和 desc”,但在SQL Server中则可以。
5、Group By中Select指定的字段限制
示例3
select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc
示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
6、Group By All
示例4
select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要
示例4中则可以指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表
“多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条记录的合并。
SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组,上述SQL Server中的SQL在Access可以写成
select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要
7、Group By与聚合函数
在示例3中提到group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:
函数
作用
支持性
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别
示例5:求各组平均值
select 类别, avg(数量) AS 平均值 from A group by 类别;
示例6:求各组记录数目
select 类别, count(*) AS 记录数 from A group by 类别;
示例7:求各组记录数目
8、Having与Where的区别
?where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
?having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例8
select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18
示例9:Having和Where的联合使用方法
select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10
9、Compute 和 Compute By
select * from A where 数量 > 8
执行结果:
示例10:Compute
select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)
执行结果如下:
compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。
示例11:Compute By
select *
from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别
执行结果如下:
示例11与示例10相比多了“order by 类别”和“... by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:
?compute子句必须与order by子句用一起使用
?compute...by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据
在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持
浏览量:2
下载量:0
时间:
数据库in的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。
MySQL IN 语法
IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。
IN 使用实例
选取 uid 为 2、3、5 的用户数据:
SELECT * FROM user WHERE uid IN (2,3,5)
返回查询结果如下:
uid
username
password
regdate
2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917
3 Jack 0193686a35e4de85ee3f2ff0567adf490 jack@gmail.com 1278061380
5 5idev a193686a53e4de85ee3f2ff0576adf01 5idev@5idev.com 1291107029
IN 子查询
更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0 的用户:
SELECT uid FROM user WHERE status=0
然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。
IN 运算符补充说明
IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。
关于 IN 运算符的效率问题
如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:
SELECT * FROM user WHERE uid IN (2,3,5)
https:// 等效为:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般认为,如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。
浏览量:3
下载量:0
时间:
数据库in和exists的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in和exists的用法的用法,希望对你们有用。
SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC)
NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度
select DISTINCT MD001 from BOMMD WHERE NOT EXISTS (SELECT MC001 FROM BOMMC where BOMMC.MC001 = BOMMD.MD001)
exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
例子如下(即exists返回where后2个比较的where子句中相同值,not exists则返回where子句中不同值):
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是一对多的关系 A.ID --> B.AID
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 1)
-->SELECT * FROM B WHERE B.AID = 1有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 2)
-->SELECT * FROM B WHERE B.AID = 2有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 3)
-->SELECT * FROM B WHERE B.AID = 3无值返回真所以没有数据
NOT EXISTS 就是反过来
SELECT ID , NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
3 A3
sql in与exists区别
IN
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。
USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO
-- Or, using the IN clause:
USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO
下面是任一查询的结果集:
pub_name
----------------------------------------
Algodata Infosystems
New Moon Books
(2 row(s) affected)
exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合.例如 exist P 表示P不空时为真; not exist P表示p为空时 为真 in表示一个标量和一元关系的关系。例如:s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全文:
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的
2:
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
浏览量:3
下载量:0
时间:
数据库中count的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中count的用法的用法,希望对你们有用。
count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。
SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。
例如:SELECT COUNT(*) FROM student;
COUNT(DISTINCT 字段),返回不同的非NULL值数目;若找不到匹配的项,则COUNT(DISTINCT)返回 0 。
这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问。
对于事务型的存储引擎(InnoDB, BDB), 存储一个精确行数的问题比较多,原因是可能会发生多重事物处理,而每个都可能会对行数产生影响。
例, 创建用于测试的数据表,以进行count数据统计:
CREATE TABLE `user` (
`id` int(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`password` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
测试数据为:
1 name1 123456
2 name2 123456
3 name3 123456
4 name4 NULL
请注意以下查询的返回结果:
1,select count(*) from `user`
2,select count(name) from `user`
3,select count(password) from `user`
输出结果:4,4,3
原因分析:
1,count(*)是对行数目进行计数,所以结果为4。
2,count(column_name)是对列中不为空的行进行计数,所以count(name)=4,而count(password)=3。
以上二点,在使用count函数时,要注意下。
使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。
每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
| snake | 1 |
+---------+----------+
每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+
(在这个输 出中,NULL表示“未知性别”。)
按种类和性别组合的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
若 使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+
或, 如果你仅需要知道已知性别的按性别的动物数目:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
顺便提下mysql的DISTINCT的关键字有很多你想不到的用处
1.在count 不重复的记录的时候能用到
比如SELECT COUNT( DISTINCT id ) FROM tablename;
就是计算talbebname表中id不同的记录有多少条
2,在需要返回记录不同的id的具体值的时候可以用
比如SELECT DISTINCT id FROM tablename;
返回talbebname表中不同的id的具体的值
3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT id, type FROM tablename;
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样
4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
5.其实还有另外一种解决方式,就是使用
SELECT id, type, count(DISTINCT id) FROM tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了
浏览量:3
下载量:0
时间:
数据库中drop的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中drop的用法的用法,希望对你们有用。
由于数据库表在计算机中占有物理空间,出于效率方面的考滤,在不需要某些数据库表时,可以删除它们.使用drop table语句可以删除数据库表及表中的任何约束,并释放它们所占的物理空间.利用drop table语句删除数据库表的语法结构如下;
drop table [database_name.[schema_name].|schema_name.]table_name][,...n]
各参数的含义如下:
◎database_name:要在其中删除表的数据库的名称.
◎schema_name:表所属架构的名称.
◎table_name:要删除表的名称.
1.删除数据库表 TestTable,实现代码如下所示:
use mydatebase
go
drop table webuser
2.还可以同时删除多个数据库表,表与表之间用逗号隔开,实现代码如下所示:
use mydatebase
go
drop table webuser,UserComment
3.删除临时表,实现代码如下所示:
use mydatebase
go
drop table #webuser,##UserComment
4.在此南昌网络公司技术人员提醒:如果要删除有依赖关联的数据库表,即主键,外键关联表,则要删除两个表之间的关联约束,然后才可以删除表.注意,也可以先删除引用该表的数据库表,实现代码如下所示: 例如:有表产品表关联着产品分类表.我们就要先删除产品表.再来删除产品分类表.
use mydatebase
go
drop table 产品表
删除成功后
use mydatebase
go
drop table 产品分类表
在此南昌网站建设公司工程师提醒:在Oracle中,利用drop table 删除有关联关系的数据库表时,会同时删除与之关联的所有数据库表.
在此顺便介绍在网页编程中Sql语句删除表的表达方式如下所示:
conn.execute("drop TABLE 表名")
浏览量:3
下载量:0
时间:
数据库中exists语句的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中exists语句的用法的用法,希望对你们有用。
SQL中EXISTS的用法
问题:查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
--方法1
Sql代码
select Student.* from Student , SC where Student.S# = SC.S# and SC.C# = '01' and exists (Select 1 from SC SC_2 where SC_2.S# = SC.S# and SC_2.C# = '02') order by Student.S#
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
例表A:TableIn
例表B:TableEx
(二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME in(select BNAME from TableEx)
(三). 比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME=ANY(select BNAME from TableEx)
NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。
一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。
EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
浏览量:3
下载量:0
时间:
数据库中like的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中like的用法的用法,希望对你们有用。
语法
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
参数
match_expression
任何字符串数据类型的有效 SQL Server 表达式。
pattern
match_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。
通配符 描述 示例
% 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
_(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。
[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。
Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:
例1,查询name字段中包含有“明”字的。
select * from table1 where name like ‘%明%’
这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%
不过在首或尾使用可以相互替换,如果在头尾同时使用的话,就必须要使用%
例2,查询name字段中以“李”字开头。
select * from table1 where name like ‘李*’
或者
select * from table1 where name like ‘李%’
例3,查询name字段中含有数字的。
select * from table1 where name like ‘%[0-9]%’
例4,查询name字段中含有小写字母的。
select * from table1 where name like ‘%[a-z]%’
例5,查询name字段中不含有数字的。
select * from table1 where name like ‘%[!0-9]%’
浏览量:4
下载量:0
时间:
数据库中round的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中round的用法的用法,希望对你们有用。
Access数据库中Round用法
四舍五入的问题
select round(83.124,2) as t from jqdltb
显示为:83.12
select round(83.125,2) as t from jqdltb
显示为:83.12
select round(83.126,2) as t from jqdltb
显示为:83.13
问题来了,就是四舍五入怎么变成五舍六入了呢?
下面是用这个方法来调整达到四舍五入的方法:
使用int函数和加0.005,然后*100,再然后/100
如下所示:
select int((83.121+0.005)*100)/100 as t from jqdltb
显示为:83.12
select int((83.124+0.005)*100)/100 as t from jqdltb
显示为:83.12
select int((83.125+0.005)*100)/100 as t from jqdltb
显示为:83.13
select int((83.126+0.005)*100)/100 as t from jqdltb
显示为:83.13
select int((83.129+0.005)*100)/100 as t from jqdltb
显示为:83.13
浏览量:3
下载量:0
时间:
数据库中round的用法求平均值的用法你知道吗?下面小编就跟你们详细介绍下数据库中round的用法求平均值的用法,希望对你们有用。
示例:
round(123.456,2)
------------
123.47
ROUND ( numeric_expression , length [ , function ] )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
length
是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。
function
是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。
round(123.456, 0)
-------
123.000
SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)
--------- --------- -----------
123 -124 123.0000
SELECT CEILING(123.45), CEILING(-123.45), CEILING(0.0)
以下為結果集:
--------- --------- -------------------------
124 -123 0
https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https:///
ORACLE的TRUNC包罗万象,DB2的TRUNC只是给数字用的。但象DATE等都能实现。比如,DATE(A TIMESTAMP FIELD)会把TIMESTAMP后面的都拿掉,成了一个PURE DATE,就象ORACLE的TRUNC(SYSDATE)会把后面的时间拿掉一样。
SQL> select trunc(2345.6789,2) from dual;
TRUNC(2345.6789,2)
------------------
2345.67
/home/db2inst > db2 -v "select decimal(2345.6789,10,2) from sysibm.sysdummy1"
select decimal(2345.6789,10,2) from sysibm.sysdummy1
1
------------
2345.67
1 record(s) selected.
浏览量:3
下载量:0
时间:
数据库中select的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中select的用法的用法,希望对你们有用。
1、select语句可以用回车分隔
?
1
2
3
4
$sql="select * from article where id=1"
和
$sql="select * from article
where id=1",都可以得到正确的结果,但有时分开写或许能更明了一点,特别是当sql语句比较长时
2、批量查询数据
?
1
2
可以用in来实现
$sql="select * from article where id in(1,3,5)"
3、使用concat连接查询的结果
?
1
$sql="select concat(id,"-",con) as res from article where id=1"
返回"1-article content"
4、使用locate
用法:
select locate("hello","hello baby");返回1
不存在返回0
5、使用group by
以前一直没怎么搞明group by 和 order by,其实也满简单的,group by 是把相同的结果编为一组
?
1
exam:$sql="select city ,count(*) from customer group by city";
这句话的意思就是从customer表里列出所有不重复的城市,及其数量(有点类似distinct)
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
6、使用having
having 允许有条件地聚合数据为组
?
1
2
$sql="select city,count(*),min(birth_day) from customer
group by city having count(*)>10";
这句话是先按city归组,然后找出city地数量大于10的城市
btw:使用group by + having 速度有点慢
同时having子句包含的表达式必须在之前出现过
7、组合子句
where、group by、having、order by(如果这四个都要使用的话,一般按这个顺序排列)
8、使用distinct
distinct是去掉重复值用的
?
1
$sql="select distinct city from customer order by id desc";
这句话的意思就是从customer表中查询所有的不重复的city
9、使用limit
如果要显示某条记录之后的所有记录
?
1
$sql="select * from article limit 100,-1";
10、多表查询
?
1
2
3
4
$sql="select user_name from user u,member m
where u.id=m.id and
m.reg_date>=2006-12-28
order by u.id desc"
浏览量:4
下载量:0
时间:
数据库中sum的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中sum的用法的用法,希望对你们有用。
根据BOL中解释COUNT用来返回组中的项数。
COUNT(*)返回组中的项数。包括 NULL 值和重复项
COUNT(ALL expression):对组中的每一行都计算 expression 并返回非空值的数量。默认值。
COUNT(DISTINCT expression):对组中的每一行都计算 expression 并返回唯一非空值的数量。
ID Value
----------- --------------------------------------------------
1 A
2 B
2 B
3 B
4 NULL
select COUNT(* ) from Table_1
-----------
5
SELECT COUNT(Value) FROM Table_1
-----------
4
SELECT COUNT(DISTINCT Value) FROM Table_1
-----------
2
SUM返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略
ID Value
----------- -----------
1 1
2 2
3 3
4 4
5 NULL
6 5
7 5
SELECT SUM(Value) From Table_1
-----------
20
SELECT SUM(DISTINCT Value) From Table_1
-----------
15
以Northwind数据库中的Employees,Orders表为例,列出所有雇员的姓名以及其拥有的Order的个数。分别用Count()和SUM()实现。
SELECT e.EmployeeID,FirstName,LastName,Count(O.EmployeeID) AS OrderCount
FROM dbo.Employees AS E LEFT JOIN dbo.Orders AS O
ON E.EmployeeID = O.EmployeeID
Group By E.EmployeeID,FirstName,LastName
SELECT e.EmployeeID,FirstName,LastName,SUM(CASE WHEN O.EmployeeID IS NULL THEN 0 ELSE 1 END) AS OrderCount
FROM dbo.Employees AS E LEFT JOIN dbo.Orders AS O
ON E.EmployeeID = O.EmployeeID
Group By E.EmployeeID,FirstName,LastName
注意的是这里一定不能用COUNT(*),因为COUNT(*)是计算行数,对于没有定单的用户也是为1。只有在JOIN的情况下,COUNT(*)才等效于Count(O.EmployeeID
附:这两个表的定义。
USE [Northwind]
GO
/****** Object: Table [dbo].[Employees] Script Date: 01/13/2012 22:57:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Employees](
[EmployeeID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [nvarchar](20) NOT NULL,
[FirstName] [nvarchar](10) NOT NULL,
[Title] [nvarchar](30) NULL,
[TitleOfCourtesy] [nvarchar](25) NULL,
[BirthDate] [datetime] NULL,
[HireDate] [datetime] NULL,
[Address] [nvarchar](60) NULL,
[City] [nvarchar](15) NULL,
[Region] [nvarchar](15) NULL,
[PostalCode] [nvarchar](10) NULL,
[Country] [nvarchar](15) NULL,
[HomePhone] [nvarchar](24) NULL,
[Extension] [nvarchar](4) NULL,
[Photo] [image] NULL,
[Notes] [ntext] NULL,
[ReportsTo] [int] NULL,
[PhotoPath] [nvarchar](255) NULL,
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
(
[EmployeeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [FK_Employees_Employees] FOREIGN KEY([ReportsTo])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Employees]
GO
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [CK_Birthdate] CHECK (([BirthDate] < getdate()))
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [CK_Birthdate]
GO
USE [Northwind]
GO
/****** Object: Table [dbo].[Orders] Script Date: 01/13/2012 23:02:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Orders](
[OrderID] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [nchar](5) NULL,
[EmployeeID] [int] NULL,
[OrderDate] [datetime] NULL,
[RequiredDate] [datetime] NULL,
[ShippedDate] [datetime] NULL,
[ShipVia] [int] NULL,
[Freight] [money] NULL,
[ShipName] [nvarchar](40) NULL,
[ShipAddress] [nvarchar](60) NULL,
[ShipCity] [nvarchar](15) NULL,
[ShipRegion] [nvarchar](15) NULL,
[ShipPostalCode] [nvarchar](10) NULL,
[ShipCountry] [nvarchar](15) NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[OrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[Customers] ([CustomerID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Employees] FOREIGN KEY([EmployeeID])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Employees]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Shippers] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[Shippers] ([ShipperID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Shippers]
GO
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_Freight] DEFAULT (0) FOR [Freight]
GO
浏览量:5
下载量:0
时间:
surround有包围;环绕等意思,那么你知道surround的用法有哪些吗?下面跟着读文网小编一起来学习一下关于surround的用法知识吧,希望对大家的学习有所帮助!
SURROUND
环绕声; 外加垫层〔混凝土; 包围; 卷筒”;
SUR Surround
环绕声,环绕,包围; 围绕声,围绕,包抄;
concrete surround
混凝土围绕; 混凝土围绕 房屋地政;
Back Surround
后环绕声道; 后中置; 后环绕;
Virtual Surround
虚拟环绕; 虚拟环绕声;
浏览量:3
下载量:0
时间:
surround做动词有包围;环绕等意思,那么你知道surround的过去式是什么吗?下面读文网小编为大家带来的surround的过去式和用法例句,供大家参考学习!
surround的用法1:surround的基本意思是“包围”“环绕”,指用很多人或物将某人或某物围在中间,使之无法逃脱,或形成某种环境或边界。
surround的用法2:surround多用作及物动词,后接名词或代词作宾语。可用于被动结构。
surround的用法3:surround后加介词with表示“被…围住”。
surround的用法4:surround本身就含有“四面八方”的意味,所以其后不需要再接on all sides或entirely这两个状语。
浏览量:3
下载量:0
时间:
round做动词有绕行;弄圆;使成为整数等意思,那么你知道round的过去式是什么吗?下面是读文网小编整理的round的过去式和用法例句,希望对大家的学习有所帮助!
round的用法1:round的基本意思是“(使)成圆形”,引申可表示“丰满起来”“环行”“拐弯”“使集拢”“围捕”,在表示“使圆满结束”“使文体完美”时,多与off连用。
round的用法2:round既可用作及物动词,也可用作不及物动词。用作及物动词时,接名词、代词作宾语。
浏览量:3
下载量:0
时间:
surround有包围;环绕等意思,那么你知道surround的同义词有哪些吗?下面读文网小编为大家带来surround的同义词及辨析,欢迎大家参考学习!
1. Tall trees surround the lake.
环湖都是大树。
2. A myriad of stars surround the moon.
众星拱月.
3. He likes to surround himself with amusing people.
他喜欢让自己身边拥着有趣的人们.
4. How can one ever separate out the act from the attitudes that surround it?
一个人的行为及与其息息相关的态度怎么能区分得开呢?
5. Its rings were discovered by telescope from Earth, but space probes later found that spectacular rings surround some other planets.
它的圆环是从地球上用望远镜发现的,但是太空探测器后来又发现了围绕其他一些星球的壮观的圆环。
6. He had made it his business to surround himself with a hand-picked group of bright young officers.
他总会亲手挑选一批聪明而年轻的军官常伴他左右。
7. They try to use the wire netting to surround the garden.
他们试用铁丝网把花园围起来.
8. The graves of young Americans who answered the call to service surround the globe.
全球各地都有响应号召为国捐躯的美国年轻人的坟墓.
9. I wondered why it was that he had managed to surround himself with idiots.
我弄不清楚为什么他一直费尽心机地让一些白痴呆在自己身边.
10. Accordingly, a whole series of concentric bright and dark rings will surround the central spot.
因此, 环绕着中央点将会有整整一系列同心亮环和暗环.
11. Then he realized how vast and how strong are the fortifications that surround the present system.
因为这时他认识到现行制度的堡垒是多么强大、多么坚固.
12. He certainly would be willing to surround her with little offices of compromising kindness.
他将愿意用仁慈的让步对她略加照料.
13. Clearing a surround to the orchard, will significantly reduce background pollination to very low levels.
在种子园周围只要清除出一条隔离带, 便可显著地使外来传粉减到最低水平.
14. Hundreds of steps lead to the high walls which surround the president's palace!
数百级台阶通向总统府周围的高墙.
15. For example, the surround module might use the echo module.
例如, surround模块可能会引用echo模块.
浏览量:3
下载量:0
时间:
surround做动词有包围;环绕等意思,那么你知道surround的第三人称单数是什么吗?下面欢迎大家跟着读文网小编一起来学习。
1. Eventually, the water will permeate through the surrounding concrete.
最终,水会渗透进周围的混凝土中。
2. Once the euphoria surrounding this victory subsides, reality must return.
这场胜利的喜悦退去后,人们将不得不回归现实。
3. They climbed upward along the steep cliffs surrounding the village.
他们沿着村庄周围的陡峭悬崖往上爬。
4. There's almost a giddiness surrounding the talks in Houston.
人们对休斯敦的会谈几乎过于热衷。
5. The polluted waste is often dumped, making the surrounding land infertile.
被污染的废物经常被随意倒掉,周边土地因此而变得很贫瘠。
6. Make sure the tile is flush with the surrounding tiles.
要保证每块瓷砖都和它周围的瓷砖在同一平面上。
7. I prised off the metal rim surrounding one of the dials.
我把其中一个刻度盘的金属边撬开了。
8. The surrounding land was enclosed by an eight foot wire fence.
周围的土地围有8英尺高的铁丝栅栏。
9. The shell surrounding the egg has many important functions.
蛋壳有许多重要的功能。
10. The mirror was hinged to a surrounding frame.
用铰链把镜子和外框连接在一起。
11. The surrounding countryside is windswept and rocky.
这周围的乡村风多石头多。
12. The development of the site will have implications for the surrounding countryside.
这个地点的开发将会影响周围的乡村。
13. The mystique surrounding the monarchy has gone for ever.
王室的神秘性已经一去不复返。
14. Oxford and the surrounding area
牛津及其周围地区
15. New housing is starting to encroach upon the surrounding fields.
新住宅开始延伸到周围的田地.
浏览量:3
下载量:0
时间: