考勤机数据分析测试案例

上一篇 / 下一篇  2008-12-11 12:54:36 / 个人分类:数据库知识

本周只是从后台来做测试

了解了关联的几个表结构,数据流的变化。学到了一些基本的测试语句。

Update attendance_machine_data_log Set FlashTime=dbo.FROM_UNIXTIME(time_log_stamp,'%Y-%m-%d  %H:%i:%s') Where FlashTime Is Null

--日期的截取后的年月日查询

select  * from attendance_machine_data_log 
where employee_id=16 and CONVERT(varchar(10),FlashTime,102)='2008-10-23'

--将一个字段的属性改变

alter table shift_time  ALTERcolumnattendance_rule_id   int  NULL

--5、创建表A、B、C
CREATE TABLE A
(id DECIMAL(9) NOT NULL,
 name CHAR(10));

CREATE TABLE B
(id DECIMAL(9) NOT NULL,
 hobby CHAR(10));

CREATE TABLE C
(id DECIMAL(9) NOT NULL,
 name CHAR(10));

--6、增加表字段
ALTER TABLE C
     add hobbya CHAR(10)

--7、修改表字段
ALTER TABLE C
     ALTER COLUMN hobby CHAR(5)

--8、删除表
ALTER TABLE C
     DROP COLUMN id

--9、删除表
DROP TABLE C

--10、添加主键
ALTER TABLE A
     ADD PRIMARY KEY(ID)

--10、删除主键
ALTER TABLE A
     DROP PRIMARY KEY(ID)

--11、创建索引
CREATE UNIQUE INDEX INDEXID ON A(ID)

--12、删除索引
DROP INDEX A.INDEXID

--13、创建视图
CREATE VIEW VIEWA
     AS SELECT ID FROM A WHERE ID>100

--14、删除视图
DROP VIEW VIEWA

 

--1.1、查询指定列
SELECT id FROM A

--1.2、查询全部列
SELECT * FROM A
SELECT ID,NAME FROM A

--1.3、取消相同取值的行
SELECT DISTINCT ID FROM A

--1.4、比较大小
SELECT * FROM A WHERE ID>5

--1.5、多重条件查询
SELECT * FROM A WHERE ID>5 AND NAME='NANCY' OR NAME='TONY'

--1.6、确认范围查询
SELECT * FROM A WHERE ID  BETWEEN 1 AND 4
SELECT * FROM A WHERE ID  NOT BETWEEN 1 AND 4
--这与下等价
SELECT * FROM A WHERE ID>=1 AND ID<=4
SELECT * FROM A WHERE ID<1 OR ID>4

--1.7、确认集合
SELECT * FORM A WHERE ID IN  (1,2,3)

--1.8字符匹配查询
--查询Northwind数据库中orders表的ShipCountry列以B,C,D,F开始且第三个字
 -- ,符为“a”的OrderlD、CustomerID和ShipCountry的信息。
SELECT ORDERID,CUSTOMERID,SHIPCOUNTRY FROM ORDERS WHERE SHIPCOUNTRY LIKE '[BCDF]%' AND SHIPCOUNTRY LIKE '__A%'

--1.9空值查询
SELECT * FROM A WHERE ID IS  NULL

--1.10常用库函数及统计汇总查询
  SELECT ID,NAME FROM A
 Where ID=(select max(ID) from A)

--1.11分组查询
SELECT ID FROM A GROUP BY ID HAVING ID>0

--1.12对查询结果进行排序
SELECT * FROM A ORDER BY ID,NAME DESC

--1.13数据表连接查询
----A、内联接
select A.Name,B.Hobby from A, B where A.id = B.id
select A.Name,B.Hobby from A Inner join B ON A.id = B.id

----B、左外联接
select A.Name,B.Hobby from A Left join B ON A.id = B.id

----C、右外联接
select A.Name,B.Hobby from A Right join B ON A.id = B.id

----D、此句以上右外联接结果是一样的
select A.Name,B.Hobby from B Left join A ON A.id = B.id

----E、全联接,以下两句同
select A.Name,B.Hobby from A cross join B
select A.Name,B.Hobby from A,B

--1.14使用TOP限制结果集
SELECT TOP 3 WITH TIES ID,NAME FROM A ORDER BY ID

--1.15将查询结果存入表中
SELECT * INTO #TEMP FROM A
SELECT * INTO ##TEMP1 FROM A
SELECT * INTO D FROM A

--1.16合并查询
SELECT * FROM A
UNION
SELECT * FROM B

--1.17子查询
--A、使用子查询进行比较测试
    SELECT ID,NAME FROM A
    WHERE NAME='NANCY'
    and ID>( SELECT AVG(ID) from B)

--B、使用子查询基于集合的测试
    SELECT * FROM A
    WHERE ID IN
    (SELECT ID FROM B)

--C、使用子查询进行存在性测试
    SELECT NAME FROM A  
    WHERE EXISTS
    (SELECT * FROM B
    WHERE ID=A.ID)

--2.1插入一行新记录
INSERT INTO A(ID,NAME) VALUES(1,'TONY')

--2.2插入一行的部分数据值
INSERT INTO A(ID) VALUES(2)

--2.3插入多行记录
INSERT INTO B(ID,HOBBY) SELECT * FROM A

--2.4修改数据
UPDATE A
SET NAME='NANCY' WHERE ID=2

UPDATE A
SET NAME='A' WHERE ID IN(SELECT ID FROM B)

--2.5删除记录
DELETE A WHERE ID=2
DELETE A WHERE ID IN(SELECT ID FROM B)


---随机取出两条数据
select top 2 * from B order by newid()

---列出数据库里所有的表名
select name from sysobjects where type='U'

---列出表里所有的列
select name from syscolumns where id=object_id('B')

---初始化表,将内容清空
TRUNCATE TABLE A

 

--其次,大家来看一些不错的sql语句
--1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
--法一:where 1 <>1 或用where 1=1在程序里是经常使用的,后面可根据加个多个条件也可不加,非常灵活
select * into b from a where 1 <>1
--法二:
select top 0 * into b from a

--2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b

--3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
--例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

--4、说明:两张关联表,删除主表中已经在副表中没有的信息 
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

--5、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

--6、说明:日程安排提前五分钟提醒 
select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

--7、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
select top 10 yonghu.* from (select top 20 * from yonghu)a,yonghu where a.yhdm=yonghu.yhdm

--8、说明:前10条记录
select top 10 * FROM table1 where 范围

--9、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

--10、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

--11、说明:随机取出10条数据
select top 10 * from tablename order by newid()

--12、说明:随机选择记录
select newid()

--13、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

--14、说明:列出数据库里所有的表名
select name from sysobjects where type='U' 

--15、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
select name from syscolumns where id=object_id('yonghu')

--16、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3

--17、说明:初始化表table1
TRUNCATE TABLE table1

--18、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
 
--随机读取若干条记录,测试过
--Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
--Sql server:select top n * from 表名 order by newid()
--mysql:select * From 表名 Order By rand() Limit n
--使用SQL语句 用...代替过长的字符串显示
--语法:
--SQL数据库:
select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
---=Access数据库:
SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename; 
 

--19、查询时字符串连接(用+号)
select id+'['+name+']' YH from a


TAG: 数据库知识

 

评分:0

我来说两句

Open Toolbar