CREATE TABLE `student` ( `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` varchar(220) NOT NULLDEFAULT'匿名' COMMENT '姓名', `pwd` varchar(220) NOT NULL COMMENT '密码', `sex` char(2) NOT NULLDEFAULT'女' COMMENT '性别', `day` datetime DEFAULTNULL COMMENT '出生日期', `address` varchar(220) NOT NULLDEFAULT'匿地址' COMMENT '地址', `email` varchar(220) NOT NULL COMMENT '邮箱', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
6.修改删除表
修改
1 2 3 4 5 6 7
--修改表名称 alter table teacher rename as teacher1; --增加表字段 alter table teacher add name varchar(220); --修改表字段 (重命名:修改约束) alter table teacher modify name varchar(220); --修改约束 alter table teacher change name teacher_name varchar(220); --字段重命名
--查询考试成绩在90分以上100分一下 select studentno ,studentresult fromresultwhere studentresult >=90&& result.studentresult<=100; --区间查询 --between a between b and c A在BC之间为true select studentno,studentresult fromresultwhere studentresult between95and100; --除了1000号之外所有学生的成绩 select studentno ,studentresult fromresultwhere result.studentno<>1000; select studentno ,studentresult fromresultwhere result.studentno!=1000; select studentno ,studentresult fromresultwherenot result.studentno =1000;
Like语句
1 2 3 4 5 6
--开头是姓刘的 %(代表0到任意一个字符) _代表一个字符 select studentno, studentname from student where student.studentname like'刘%'; --后面是一个字符开头是刘的人 select studentno, studentname from student where student.studentname like'刘_'; --左右匹配带刘的都展示 select studentno, studentname from student where student.studentname like'%刘%';
in语句
1 2
--查询某个区间 他是一个或者多个具体的值 select studentno,studentname from student where studentno in (1001,1002,1003);
null not null 语句
1 2
select studentno,studentname from student where address isnull; select studentno,studentname from student where address isnot null;
select s.studentno, studentname, subjectno, studentresult from student s innerjoin result r where s.studentno = r.studentno;
#左查询 select s.studentno, studentname, subjectno, studentresult from student s leftjoinresult r on s.studentno = r.studentno;
#右查询 select s.studentno, studentname, subjectno, studentresult from student s rightjoin result r on s.studentno = r.studentno;
select s.studentno, studentname, subjectname, studentresult from student s rightjoinresult r on r.studentno = s.studentno innerjoin subject sub on r.subjectno = sub.subjectno;
分页limit和排序 orderby
1 2 3 4 5 6 7 8 9
--desc 降序 esc升序 select r.studentno, studentname, subjectname, studentresult fromresult r leftjoin student s on r.studentno = s.studentno innerjoin subject sub on r.subjectno = sub.subjectno where sub.subjectname like'%C%' orderby studentresult desc
1 2 3 4 5 6 7 8 9
select s.studentno,studentname,subjectname,studentresult from student s innerjoinresult r on s.studentno = r.studentno innerjoin subject sub on sub.subjectno=r.subjectno where sub.subjectname like'%C%'&& r.studentresult >30 orderby r.studentresult desc limit 0,10
联表查询 和 子查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
--子查询 select s.studentno,studentname from student s innerjoinresult r on s.studentno = r.studentno where r.studentresult >=30and subjectno = ( select subjectno from subject where subjectname ='C语言-1' );
select s.studentno,studentname from student s innerjoinresult r on s.studentno = r.studentno innerjoin subject s2 on r.subjectno = s2.subjectno where r.studentresult>=30&& s2.subjectname='C语言-1'
分组查询
1 2 3 4 5 6
select subjectname,max(studentresult),min(studentresult),avg(studentresult) fromresult r innerjoin subject s on r.subjectno = s.subjectno groupby r.subjectno ----通过什么来分组 havingavg(studentresult)>=70----分组过后用having来再次筛选数据 而不是where ;
聚合函数
1 2 3 4 5 6 7 8 9
selectcount(address)from student; --会去掉null值 selectcount(1)from student; --不忽略null值 selectcount(*)from student; --不忽略null值 selectcount(studentname) from student where studentname ='铁蛋';