2021-07-29
2021/7/29 23:06:00
本文主要是介绍2021-07-29,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
更改表名
alter table 表名 rename 新表名;
如 alter table teacher rename t_teacher;
更改字段名
alter table 表名 change 列名 新列名 数据类型;
更改表的列名 和 数据类型 当然数据类型可以不改,但是必须得写,
如 alter table t_teacher change name teacher_name varchar(20);
添加字段
alter table 表名add 列名类型;
如 alter table t_teacher add birthday datetime; 默认添加到尾部
alter table t_teacher add birthday datetime after teacher_name; 把列添加到指定列的后面
alter table t_teacher add sex2 char(2) first; 添加到第一列,需要把表关掉,刷新一下,再打开才能显示出来
删除字段
alter table 表名 drop 列名;
如 alter table t_teacher drop birthday;
更改字段类型(尽量不要更改)
alter table 表名 modify 列名 新数据类型;
如 alter table t_teacher modify sex2 varchar(20);
alter table 表名 modify 列名 数据类型 comment '该列的注释说明'; 更改类型的同时,还能添加注释说明
主键
创建表语句时 primary key (id,name)
创建表完成之后 语法 : alter table 表名 add primary key(列名,列名...);
主键自增
建表时 id int auto_increment
建表完成 语法 : alter table 表名modify 主键列名 类型 auto_increment;
设置自增的起始值
语法 : alter table 表名auto_increment=值;
外键
创建表时添加外键
create table teacher(
id int ,
name varchar(20),
primary key (id)
);
create table student (
id int ,
name varchar(20),
teacher_id int ,
primary key (id),
foreign key (teacher_id) references teacher(id)
);
引用student中添加外键列,指向teacher表,所以必须先创建teacher表才行
测试语句
添加一个讲师
insert into teacher (id,name) values(1,'张老师');
添加一个学生小明,学生通过teacher_id可以指向张老师
insert into student (id,name,teacher_id) values(1,'小明',1);
添加一个学生小红,teacher_id没有设置值
insert into student (id,name) values(2,'小红');
添加一个小黑,teacher_id指向一个不存在的讲师,报错
insert into student (id,name,teacher_id) values(3,'小黑',2);
创建完表时添加外键
语法 : alter table 表名 add foreign key (外键列列名) references 指向的表名 (主键列列名);
唯一约束
创建时 unique(id)
创建完 alter table temp1 add unique (id);
非空约束not null 与默认值default
创建表时`name` varchar(30) default 'abc',
sex varchar(10) not null default '男'
创建完 alter table temp3 modify sex varchar(10) not null default '男';
六大约束
and
or
between .. and.... 在...之间
in 在指定数据中 select * from student where id in (1,3,10,20);
模糊查询 % 匹配任意个数的任意字符
把name中,把姓张的查询出来
select * from student where name like '张%';
_ 匹配单个任意字符
把 name中,姓名有两个字的查询出来
select * from student where name like '__';
Order by 排序
select 列限定 from 表限定 order by 列名 asc/desc;
Asc : 升序
Desc : 降序
如 : 查询所有学生信息,以成绩降序
select * from student order by score desc;
如 : 查询所有学生信息,按成绩降序,如果成绩相同,按照id升序
select * from student order by score desc , id asc;
Limit限制条数,通常和order by一起使用,因为我们使用排序之后,再去获取前几条数据,比较有价值,比如成绩前三名
语法 :
select 列限定 from 表限定 limit 条数;
select 列限定 from 表限定 limit 开始值(不包含) ,条数;
如 : 查询学生表,分数前三名的信息
select * from student order by score desc limit 3;
如 : 查询学生表,分数第二名和第三名
select * from student order by score desc limit 1,2;
组函数count(*) : 总条数
max(字段名) : 最大值
min(字段名) : 最小值
avg(字段名) : 平均值
sum(字段名) : 总和
如 : 查看学生表共有多少学生
select count(*) from student;
如 : 查看学生表中分数大于90分的有多少学生
select count(*) from student where score > 90;
Group by
select count(*),max(字段名),min(字段名)... from 表名 group by 字段名;
select teacher_id, count(*) as stu_count from student group by teacher_id;
如 : 查询每个老师带的学生中的最高分数
select teacher_id, count(*) as stu_count,max(score) as stu_max_score from student group by teacher_id;
如 : 查询每个老师所带学生的总成绩与平均分
select teacher_id, sum(score) as sum,avg(score) as avg from student group by teacher_id;
Having
select teacher_id, avg(score) as avg from student group by teacher_id having avg > 60;
子查询
①select后面
select 字段名,(查询语句) from 表名;
查询每个老师的学生的 最大分数,最小分数,平均分数,分数总和,学生人数,老师名字
select max(score),min(score),sum(score),avg(score),count(*),(
select name from teacher where id=teacher_id
) as teacher_name from student group by teacher_id ;
②from后面使用子查询 对成绩划分等级, score<60 ,评级C 并且是差,score>=60 且 score<80 评级B并且是良,score>=80 评级是A并且是优
select *,
case rank
when 'A' then '优'
when 'B' then '良'
when 'C' then '差'
end rank_ch
from (
select *,
case
when score < 60 then 'C'
when score >=60 and score <80 then 'B'
when score >=80 then 'A'
end as rank
from student
) a;
③where后面
在不知道teacher_id 和 老师名字的对应关系的情况下,想查询出张老师下面的所有学生信息
select * from student where teacher_id in (
select id from teacher where name='张老师'
);
这篇关于2021-07-29的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南