首先,我们先创建和添加相应的表和数据:
CREATE TABLE `student` (
`sid` int(6) NOT NULL AUTO_INCREMENT,
`sname` varchar(12) DEFAULT NULL,
`sage` int(3) DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL,
`score` double(6,0) DEFAULT NULL,
`sclass` int(6) DEFAULT NULL,
`sbirthday` date DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
添加相应的数据:
INSERT INTO `student` VALUES ('1', '张三', '15', '男', '99', '1', '2021-01-08');
INSERT INTO `student` VALUES ('2', '李四', '16', '女', '56', '1', '2021-01-01');
INSERT INTO `student` VALUES ('3', '王五', '17', '男', '98', '1', '2020-12-01');
INSERT INTO `student` VALUES ('4', '赵六', '16', '男', '56', '1', '2021-01-29');
INSERT INTO `student` VALUES ('5', '田七', '18', '女', '100', '2', '2021-02-03');
INSERT INTO `student` VALUES ('6', '孙八', '19', '男', '91', '2', '2021-02-04');
INSERT INTO `student` VALUES ('7', '柳九', '20', '男', '96', '2', '2021-05-06');
INSERT INTO `student` VALUES ('8', '张楚岚', '21', '男', '100', '2', '2021-02-10');
INSERT INTO `student` VALUES ('9', '张灵玉', '21', '男', '94', '2', '2021-06-10');
INSERT INTO `student` VALUES ('10', '冯宝宝', '17', '女', null, '3', '2021-01-22');
INSERT INTO `student` VALUES ('11', '张之维', '27', '男', '94', '3', '2021-01-24');
INSERT INTO `student` VALUES ('12', '夏禾', '26', '男', '94', '3', '2020-06-18');
INSERT INTO `student` VALUES ('13', '大脸妹', '16', '女', '11', '4', '2020-11-26');
INSERT INTO `student` VALUES ('14', '妹钱啊', '18', '男', '86', '4', '2020-11-11');
INSERT INTO `student` VALUES ('15', '大黄', '4', '男', '12', '5', '2020-11-04');
INSERT INTO `student` VALUES ('16', '猪八戒', '5', '男', '25', '5', '2020-11-05');
INSERT INTO `student` VALUES ('17', '唐僧', '31', '男', '66', '5', '2020-12-11');
INSERT INTO `student` VALUES ('18', '孙悟空', '30', '男', '77', '5', '2021-07-15');
INSERT INTO `student` VALUES ('19', '沙僧', '29', '男', '89', '5', '2021-05-12');
INSERT INTO `student` VALUES ('20', '白骨精', '59', '女', '56', '5', '2020-02-27');
一: 获取所有年龄小于18.并且名字中有’妹’的,所有 ‘‘女生’’ 的信息 .
SELECT * FROM student WHERE sage < 18 AND sname LIKE '%妹%' AND sex ='女';
二: 获取所有学生的总人数,平均分,最低分,最高分 .
SELECT COUNT(*) 总人数, AVG(score) 平均分,MIN(score) 最低分, MAX(score) 最高分 FROM student;
三: 获取所有参加考试的学生的总人数和参加考试的学生的平均分和所有学生的平均分 .
SELECT COUNT(score) 总人数,AVG(IF(ISNULL(score)= 1,'缺考',score)) 所有人的平均分,AVG(score) 参加的平均分 FROM student;
四: 获取所有学生的自我介绍信息,我叫xxx,今年xx岁,明年xx岁,考了xx分,我是成年人/未成年人 .
SELECT sname,sage 今年 ,sage+1 明年 ,score 考了,IF(sage >= 18,'成年人','未成年人') '我是成年人/未成年人' FROM student;
五: 获取5月份生日的学生的个数 .
SELECT COUNT(sbirthday) FROM student WHERE MONTH(sbirthday)= 05;
六: 获取本月生日的学生的个数 .
SELECT COUNT(sbirthday) FROM student WHERE MONTH(sbirthday)=EXTRACT(MONTH FROM NOW());
七: 获取年龄在18到22岁之间的学生的信息 .
SELECT * FROM student WHERE sage BETWEEN 18 AND 22;
八: 获取第 6 ~ 10 条的所有学生的信息 .
SELECT * FROM student LIMIT 5,5;
九: 把所有女生,并且年龄 < 20 的学生分数 +1 .
UPDATE student SET sage = sage+1 WHERE sex ='女' AND sage > 20;
十: 把所有成绩为 “NULL” 的学生,分数设置为 100 .
UPDATE student SET score = 100 WHERE score IS NULL;
对表的操作
一: 删除默个列 .
alter table 表名 drop 列名
二: 添加一个列, 列类型固定长度为4的字符串 .
alter table 表名
add 添加的列名 VARCHAR(4) NOT NULL DEFAULT 0 COMMENT '添加的列';
三: 修改列名 A 为 B .
alter table 表名 change `A列名` `B列名` VARCHAR(20);
四: 修改 A 列的类型为 char(4) .
alter table 表名 modify 列名 char(4);
五: 修改表名 .
alter table 表名 rename to 新表明;