Day01:
select * from SPI; -- 查询SPI表中的所有字段
select * from SPI where num>90 -- 语句后面的分号加不加都一样
select componentid from SPI -- 查询表中的一列数据
select DISTINCT componentid from SPI -- 排出本列中的重复数据,只显示一条
select * from SPI where componentid=4 AND num = 90; -- AND是两个条件必须同时满足即可
select * FROM SPI where num = 100 OR projectid = 10; -- OR是两个条件满足一个即可
select * from SPI ORDER BY num ASC; -- 按照num升序(从小到大)排列,默认就为升序,所以不写也是升序的效果
select * from SPI ORDER BY projectid DESC,num ASC -- 意思是先按照前面的字段降序排列(projectid),然后再升序排列后面字段中的数据(num)
-- 添加数据
Insert into SPI VALUES(095,7,13,110);
select * from SPI where supplyid = 666;
Insert into SPI(supplyid,num)VALUES(666,888);
-- 更改一条数据
update SPI set componentid=88,projectid=10 where num=888
select * from SPI;
-- 删除一条数据
Insert into SPI values(222,2,22,220);
delete from SPI where supplyid = 222
Day02:
USE test1; -- 进入数据库
-- 查询文化等级为优,百米赛跑前五名的学生
SELECT * FROM USER WHERE uscoreDengji='优' ORDER BY uscoreHandred ASC LIMIT 5;
-- 查询百米成绩小于12秒的学生(从第一个开始往后数两个学生)
SELECT * FROM USER WHERE uscoreHandred<12 LIMIT 1,2;
-- 从第0条数据开始 往后数1条数据全部显示
SELECT * FROM USER LIMIT 0,1;
-- 从第1条数据开始 往后数5条数据全部显示
SELECT * FROM USER LIMIT 1,5;
-- 模糊查询
-- 符号_,只能代表一个字,可以放在任意一个位置
-- 符号%,可以表示多个字,可以放在任意一个位置
SELECT * FROM USER WHERE uname LIKE '%磊';
SELECT * FROM USER WHERE uname LIKE '栗%';
SELECT * FROM USER WHERE uname LIKE '栗%磊';
SELECT * FROM USER WHERE uname LIKE '栗亚_';
-- 显示非'郭军栋'的所有学生
SELECT * FROM USER WHERE uname NOT LIKE '郭军%';
-- 显示非'栗亚磊'的所有学生
SELECT * FROM USER WHERE uname NOT LIKE '栗_磊';
-- 是一个默认的列,与id相似(oracle数据库属性rownum)
SELECT * FROM USER WHERE rownum<=3;
-- a.*==emp表 b==emp表+rn列 使用a作为emp表的别名
SELECT * FROM (SELECT a.*,rownum AS rn FROM emp a) b WHERE b.rn BETWEEN 6 AND 10
SELECT * FROM USER WHERE uname IN('曹庆伟','赵磊');
Day03:
select * from 表名 where 字段名 between A and B; 显示A到B范围内的数据
select * from 表名 where 字段名 not between A and B;显示A到B范围之外的数据
select * from 表名 where 字段名 in(A,B); 显示A到B范围内的数据
select * from 表名 where 字段名 not in(A,B); 显示A到B范围之外的数据
select * from 表名 where 字段名 like 'A';显示A
select * from 表名 where 字段名 not like 'A'; 显示不是A的所有数据
select * from class where name not like '_三'; 显示name不是张三的数据
给字段名命名,有两种方式:
第一种:字段名+空格+'命名1'
第二种:字段名+AS+'命名2'
select 字段名 '命名1',字段名 AS '命名2' from 表名;
两表联查(class和User表合并,前提是两个表的姓名字段内容一样)
第一种方式:
select * from 表名1 JOIN 表名2 ON 表名1.字段名=表名2.字段名;
select * from class JOIN `User` ON class.name = `User`.Uname;
第二种方式:
select * from 表名1,表名2 where 表名1.字段名=表名2.字段名;
select * from class,`User` where class.`name`=`User`.name;
三表联查
给表起别名,方便操作,因为表名过长太麻烦
Class c ;User u ;Student s
第一种方式(查询出三个表中综合起来的所有字段,前提条件是查询出三个表中姓名字段内容相同的数据):
select * from 表名 别名1 join 表名 别名2 join 表名 别名3 ON 别名1.字段名=别名2.字段名 AND 别名2.字段名=别名3.字段名;
select * from class c join User u join student s ON c.name = u.Uname AND u.Uname = s.name;
第二种方式(查询具体表中的具体字段,前提条件是查询出三个表中姓名字段内容相同的数据):
select u.Uage,s.name from class c JOIN `User` u JOIN student s ON c.`name`=u.Uname AND u.Uname = s.`name`;
左连接(右侧除了和左侧一致的保存,其他的都不显示)
select * from 表名1 LEFT JOIN 表名2 ON 表名1.字段名 = 表名2.字段名;
select * from class LEFT JOIN `User` ON class.`name` = `User`.Uname;
右连接(左侧除了和右侧一致的保存,其他的都不显示)
select * from 表名1 right JOIN 表名2 ON 表名1.字段名 = 表名2.字段名;
select * from class RIGHT JOIN `User` ON class.`name` = `User`.Uname;
Full连接
select * from class FULL JOIN `User`;
-- 字段命名
select no '序号',name AS '名字' from class;
-- 所有年龄的平均值
SELECT AVG(age) from User;
-- 求最大值
select MAX(age) from User;
-- 求最小值
select MIN(age) from `User`;
-- 一共有8条数据
SELECT count(Uname)from User;
select count(*) from User;
-- 排除重复
select count(DISTINCT Uname) from User;
-- 查询姓李的平均年龄
select AVG(age) from User WHERE Uname LIKE '李%';
-- 年龄总和
select SUM(age) from User;
-- 姓名为李刚的个数
select Count(*) from User where Uname = '李刚' GROUP BY Uname;
-- 年龄为17的个数
select Count(*) from User where age = 17 GROUP BY age;
select * from SPI;
select supplyid '供应编号',componentid '零件编号',projectid '工程号',num '数量' from SPI;
-- 查询一个工程对应至少三家供应商供应零件的平均数量,然后降序排列工程编号
select projectid,AVG(num) from SPI GROUP BY projectid HAVING COUNT(componentid)>=3 ORDER BY projectid DESC;
select * from studentcourse;
select * from studentmessage;
-- 查询总成绩大于270分的学生信息
select sme.* from studentcourse sc JOIN studentmessage sme ON sc.cardid = sme.cardid where (sc.math+sc.chinese+sc.english)>270;
知识点概括:
1.count 统计函数,进行累加
2.max 找出列中最大的数值
3.min 找出列中最小的数值
4.别名
5.Group by 分组
6.Order by 按具体列值排序
7.asc 升序
8.desc 降序