数据库创建和查询语句总结
来源:互联网 发布:d3.js 力导向图 编辑:程序博客网 时间:2024/05/21 19:26
例子:
1、SELECT Profile.UserId,CouponCode,UserName,FROM_UNIXTIME(ValidEndTime/1000) FROM UserCoupon,Profile
WHERE Profile.UserName = "**********"
ANDUserCoupon.UserId = Profile.UserId;
- username条件在前,因为username可以更快定位,效率高
- FROM_UNIXTIME(ValidEndTime/1000) 数据库中时间存储的是long值,利用此函数进行转换,函数传入参数是秒为单位,long值以毫秒为单位,故除以1000
2、表中包含学号,语文,英语,数学,求总成绩前三,降序排序
SELECT Sno,(Chinese + English + Math) AS sumScore FROM TableName1
GROUP BY Sno
ORDER BY sumScore DESC
LIMIT 3;
3、利用存储过程向数据库中添加多条数据
DELIMITER $$
CREATE PROCEDURE `sss`.`ddd`()
BEGIN
DECLARE i INT;
SET i = 0;
WHILE i<4000 DO
INSERT INTO TB_a(Id,Accno,Bankid,Certno,Firmid,Name,Phone,UserId,Type)
VALUES(20000+i,'2222','1000','3333','10000','aaa',12000000000 + i,'5000','1');
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
CALL ddd(); //创建存储过程之后,调用存储过程才会向表中插入数据
本方法是比较土的方法,因为id不能一样,所以下次重新执行的时候需要修改前边的常量,而且在创建存储过程的时候并没有考虑是否存在相同名字的存储过程,所以下次创建的时候又需要将本存储过程的名字进行修改,这样子每次都需要变化,很麻烦。
改进:
DELIMITER $$
USE `sss` $$
DROP PROCEDURE IF EXISTS insertNum $$
CREATE PROCEDURE insertNum(IN num BIGINT(20),OUT newId BIGINT(20))
BEGIN
DECLARE i BIGINT(20);
SET i = 1;
SELECT MAX(Id) FROM TB_a INTO newId;
WHILE i <= num DO
INSERT INTO TB_a(Id,Accno,Bankid,Certno,Firmid,Name,Phone,UserId,Type)
VALUES(newId+i,'2222','1000','3333','10000','aaa',10000000000 + i,'5000','1');
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
CALL insertNum(2,@id);
本方法使用了带参数的存储过程,并且创建存储过程之前先检查是否有与此名字相同的存储过程,有的话则删除,然后查询出已有的最大id,在此id的基础上继续增加,并且将重复次数设置成了变量,这样直接传参数给存储过程调用即可。
4、查询不重复的数据
//只是查询重复记录的单个字段
SELECT DISTINCT Phone FROM TB_a;
//查询重复记录的任意字段
SELECT MIN(Phone),Email FROM TB_a
GROUP BY Phone;
//打开重复任意次数的所有记录
SELECT * FROM TB_a
WHERE Phone IN
(SELECT Phone FROM TB_a
GROUP BY Phone
HAVING COUNT(Phone) = 4);
注:where只能用在group by前边,group by 后边只能使用 having进行限定。
5、表中有三个字段A,B,C,先要求更新A,若B满足一定条件,则A更新为'111',否则更新为'222'
update 表 set A = (case when B=满足一定的条件 then '111' else '222' end)
例:
UPDATE student SET invalid = (
CASE WHEN Sno IN (SELECT Sno FROM student WHERE Sage=25 AND Ssex='M')
THEN 0
ELSE 1
END
);
这种情况报错:1093 因为子查询表和更新表一样,这样子不行
CASE
WHEN Sage=25 AND Ssex='M'
THEN 0
ELSE 1
END
);
UPDATE student SET invalid = (
CASE
WHEN Sage=25 AND Ssex='W'
THEN 0
WHEN Sage!=25 AND Ssex!='M'
THEN 2
ELSE 1
END
);
直接写条件
sql case when的使用
http://www.cnblogs.com/qiantuwuliang/archive/2009/06/03/1495770.html
总结:
1、创建带有外键的表: 不同的数据库支持的写法不一样,要注意:
第一种:MySql
create table SC(
Sno varchar(7),
Cno varchar(7),
grade int,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
第二种:SQL Server/Oracle/MS Access
create table SC(
Sno varchar(7) foreign key references Student(Sno),
Cno varchar(7) foreign key references Course(Cno),
grade int,
primary key(Sno,Cno)
);
2、查询:在销售记录表中,查询总销量前8的商品Id和总销量,降序排列表结构:Id,Count(个数),订单Id,ProductId,销售时间,skuId, 用户Id, Username,
select ProductId,Sum(Count) from SalesRecord
group by ProdctId
Order by sum(Count) desc
limit 8;
3、查询总体语句:
- 数据库创建和查询语句总结
- 数据库查询语句总结
- 数据库查询语句总结
- sql 数据库查询语句总结
- 数据库查询语句关键字总结
- 数据库和查询语句优化
- 数据库和查询语句优化
- mysql数据库查询SQL语句总结
- mysql数据库查询SQL语句总结(二)
- 常用数据库查询语句--个人总结
- 数据库的创建和查询
- SQL语句总结一||数据库的创建,表格的创建,基本表的删除和修改
- sql语句创建数据库和数据库表
- 查询数据库表和字段sql语句
- 数据库和查询语句的优化
- mysql 创建和查询数据库和表格
- 创建数据库和表的SQL语句
- 创建数据库和表的SQL语句
- 为UIAlertView添加block支持
- Python中字符串的有趣玩法
- QQ盗号、突破QQ权限浅谈(成佩涛 黑客)
- Apache Shiro 使用手册(二)Shiro 认证
- Linux下查看CPU信息[/proc/cpuinfo]
- 数据库创建和查询语句总结
- EJB到底是什么,真的那么神秘吗??
- __attribute__ 你知多少?
- Hi3515自带串口驱动加载说明 .
- nginx:rewrite
- tor使用测试
- C#中的套接字工作原理
- [LeetCode] Symmetric Tree
- htonl(),htons(),inet_addr(),inet_ntoa(), inet_aton()函数