码迷,mamicode.com
首页 > 数据库 > 详细

数据库的增删改查

时间:2015-06-14 00:21:20      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

CREATE TABLE lovostudebt(
studentCode VARCHAR(20) PRIMARY KEY,
studentName VARCHAR(20),
age INT,
sex VARCHAR(10),
grade INT,
clasddName VARCHAR (20)
)DEFAULT CHARSET=utf8;

INSERT INTO lovostudebt (studentCode,studentName,age,sex,grade,clasddName)
VALUES(‘xh1001‘,‘jacky‘,‘20‘,‘男‘,‘90‘,‘T01‘),
(‘xh1002‘,‘simth‘,‘30‘,‘男‘,‘75‘,‘T02‘),
(‘xh1003‘,‘jay‘,‘18‘,‘男‘,‘80‘,‘T01‘),
(‘xh1004‘,‘helen‘,‘19‘,‘女‘,‘75‘,‘T02‘),
(‘xh1005‘,‘lily‘,‘22‘,‘女‘,‘90‘,‘T03‘),
(‘xh1006‘,‘Green‘,‘23‘,‘男‘,‘85‘,‘T02‘),
(‘xh1007‘,‘RedChar‘,‘18‘,‘男‘,‘60‘,‘T01‘),
(‘xh1008‘,‘Kevin‘,‘17‘,‘女‘,‘45‘,‘T03‘);

SELECT *FROM lovostudebt;
DROP TABLE lovostudebt;


-- 得到所有学生的总分 sum 表示求和
SELECT SUM(grade) AS ‘总分‘ FROM lovostudebt;

-- 等到所有学生的最高分 max 表示求最大值
SELECT MAX(grade) AS ‘最高分‘ FROM lovostudebt;

-- 得到所有学生的最低分,min表示求最小值
SELECT MIN(grade) AS‘最低分‘ FROM lovostudebt;

-- 得到所有学生的平均分 ,avg表示求平均分
SELECT AVG(grade) AS‘平均分‘ FROM lovostudebt;


-- 得到所有学生的总人数
-- COUNT (geade)同级总人数,会忽略该列为null的记录。
-- COUNT (*)不会忽略该列为null的记录。
SELECT COUNT(grade)AS‘人数‘ FROM lovostudebt;

SELECT COUNT(*)AS‘人数‘ FROM lovostudebt;




-- 分组查询每个班级的总分
-- GROUP BY 是以什么进行分组
SELECT clasddName,SUM(grade) AS‘总分‘ FROM lovostudebt GROUP BY clasddName;


-- 分组查询每个班级的平均分 最高分 最低分 参考人数
-- clasddName 班级名称
-- 分组之后在select 中出现的字段,织女呢个是分组字段(group by 后面的字段)或者是聚合函数
SELECT clasddName,SUM(grade) AS‘总分‘,
AVG(grade) AS‘平均分‘,
MAX(grade) AS ‘最高分‘,
MIN(grade) AS‘最低分‘,
COUNT(grade) AS‘参考人数‘
FROM lovostudebt GROUP BY clasddName;

-- 查询平均分在85以上的学生
-- where 后面不能跟聚合函数,因为where执行在GROUP by之前
-- having 执行在分组之后,可以跟聚合函数
SELECT clasddName FROM lovostudebt GROUP BY clasddName HAVING AVG(grade)>=75;


-- 查询那个班有女生,并说出女生的人数
SELECT clasddName AS‘班级名称‘,COUNT(sex) AS ‘女生人数‘ FROM lovostudebt WHERE sex=‘女‘ GROUP BY clasddName;


CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
studentCode INT, -- 学号
studentName VARCHAR(20), -- 学生成绩
subjectName VARCHAR(20),
grade INT, -- 成绩
classID INT -- 班级编号

)DEFAULT CHARSET=utf8;


CREATE TABLE class(
id INT PRIMARY KEY AUTO_INCREMENT,
className VARCHAR (20) -- 班级

)DEFAULT CHARSET=utf8;

-- 增加外键约束
ALTER TABLE student ADD CONSTRAINT fk_class FOREIGN KEY (classID) REFERENCES class(id);


INSERT INTO class (className) VALUES(‘T01‘),(‘T02‘),(‘T03‘),(‘T04‘);

SELECT *FROM class;
DROP TABLE class;


INSERT INTO student(studentCode, studentName,subjectName,grade,classID )
VALUES(1,‘张三‘,‘计算机基础‘,60,1),
(1,‘张三‘,‘C语言‘,88,1),
(1,‘张三‘,‘关系型数据库基础‘,90,1),
(2,‘王五‘,‘计算机基础‘,80,2),
(2,‘王五‘,‘C语言‘,70,2),
(2,‘王五‘,‘关系型数据库基础‘,55,2),
(3,‘李四‘,‘C语言‘,66,4),
(3,‘李四‘,‘关系型数据库基础‘,90,4);
SELECT* FROM student;
DROP TABLE student;
-- 显示C语言这门课程的最高分和得最高分的学生姓名
SELECT MAX(grade),studentName FROM student WHERE subjectName=‘计算机基础‘
AND grade=(SELECT MAX(grade) FROM student WHERE subjectName=‘计算机基础‘);


SELECT * FROM student WHERE subjectName=‘计算机基础‘ ORDER BY grade DESC LIMIT 0,1;

-- 显示所有学生信息,要求将班级编号转化为班级名称
SELECT s.*,(SELECT className FROM class AS c WHERE c.id = s.classID) AS‘班级名称‘ FROM student AS s;


-- 查询比王五c语言考得更好的学生
SELECT * FROM student WHERE subjectName =‘c语言‘ AND
grade >(SELECT grade FROM student WHERE subjectName=‘c语言‘ AND studentName=‘王五‘);


-- 查询关系型数据库和张三同分的学生信息
SELECT *FROM student WHERE subjectName =‘关系型数据库基础‘ AND
grade=(SELECT grade FROM student WHERE subjectName =‘关系型数据库基础‘
AND studentName=‘张三‘ )AND studentName!=‘张三‘;



-- 查询那个班级有学生
SELECT className FROM class WHERE id IN (SELECT DISTINCT classID FROM student);


-- 查询那个班级没有学生
SELECT className FROM class WHERE id NOT IN (SELECT DISTINCT classID FROM student);


-- 找出每门课程的最高分和学生姓名
SELECT * FROM student s1 WHERE grade IN(
SELECT MAX(grade) FROM student s2
WHERE s1.subjectName=s2.subjectName GROUP BY subjectName);

-- 查询所有学生姓名、科目、成绩、所在班级
SELECT s.studentName,s.subjectName,s.grade,c.className FROM
student s JOIN class c ON s.classID=c.id;


SELECT s.studentName,s.subjectName,s.grade,c.className FROM
student s ,class c WHERE s.classID=c.id;



CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
StudentName VARCHAR (20),
chinese INT,
math INT,
english INT,
cardCode VARCHAR (20) -- 考试号
)DEFAULT CHARSET=utf8;
INSERT INTO t_student(StudentName,chinese,math,english,cardCode)
VALUES(‘张无忌‘,‘90‘,‘80‘,‘70‘,‘12121525121‘),
(‘王振天‘,‘44‘,‘88‘,‘74‘,‘12454545551‘),
(‘胡凯‘,‘73‘,‘58‘,‘99‘,‘11245454545‘),
(‘李金‘,‘70‘,‘90‘,‘84‘,‘52524645254‘);

SELECT*FROM t_student;

DROP TABLE t_student;


-- 将张无忌的语文更改为95分,数学改为85分,
UPDATE t_student SET chinese=‘95‘,math=‘85‘ WHERE StudentName= ‘张无忌‘; -- 可以换成ID

-- 将数学成绩都加5分
UPDATE t_student SET math=math+5;

-- 将姓张的人英语减10分
-- 张%,表示通配符,匹配张开始的所有字符串(张三,张四,张五)
-- %张%,表示(刘张云,杨张云)
UPDATE t_student SET english=english-10 WHERE StudentName LIKE ‘张%‘

-- 增加学校列
ALTER TABLE t_student ADD school VARCHAR(30);

-- 修改张无忌的学校为成都十二中,胡凯学校为成都七中

UPDATE t_student SET school=‘成都十二中‘ WHERE id=1;
UPDATE t_student SET school=‘成都七中‘ WHERE id=3;



-- 修改学校为null的记录,学校更改为成都四中
UPDATE t_student SET school=‘成都四中‘ WHERE school IS NULL;


-- 删除胡凯
DELETE FROM t_student WHERE studentName=‘胡凯‘;

-- 删除60-70之间的记录
DELETE FROM t_student WHERE english>=60 AND english<=70;

-- 也可以写成
DELETE FROM t_student WHERE english BETWEEN 60 AND 70;

-- 删除所有
TRUNCATE TABLE t_student;


-- 查询所有记录
-- *表示该表中所有的字段
SELECT * FROM t_student;

-- 查询所有学生的姓名和语文成绩
SELECT studentName,chinese FROM t_student;


-- AS表示给该列取别名
SELECT studentName AS‘姓名‘,chinese AS ‘语文‘ FROM t_student;


-- DISTINCT 去除重复的记录
SELECT DISTINCT school FROM t_student;



数据库的增删改查

标签:

原文地址:http://www.cnblogs.com/liner730/p/4574370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!