先分别创建两个表text和text2,并向两个表中写入一些数据
一、连接查询
1、内连接
(1)无条件连接:inner join
- inner join 中只链接两个表中具有相同字段的行,不相同的字段会被省略
- text是主表;text2是从表。
例:select * from text inner join text2;
主表中的每一条数据都会和从表里面的所有数据匹配
(2)有条件连接:on 条件
- on 后面是连接条件
例:select * from text inner join text2 on text.id=text2.id;
- 将两个表中id相同的连接在一起
2、外连接
(1)左连接:left join
- 以左表为基础,左表内容全部显示,右表没有的以null值显示
例:select * from text left join text2 on text.id=text2.id;
- 将相同的两表相同的id连接,以左表为基础,左表全部显示,右表中和左表相同的id显示,不相同的id则用null值显示。
(2)右连接:right join
- 以右表为基础,右表内容全部显示,左表没有的以null值显示
例:select * from text right join text2 on text.id=text2.id;
- 将相同的两表相同的id连接,以右表为基础,右表全部显示,左表中和右表相同的id显示,不相同的id则用null值显示。
二、表结构的修改--alter
1、修改表名
alter table 原名 rename to 新名;
- 将text表的名字修改为new_table
2、修改字段名
alter table 表名 change 原名 新名 类型;
注意:类型一定要写,且只能对同一类型进行修改,如果将一个字段类型是int型的修改为char型则会报错。
- 查看表结构可以看到字段的类型
- 将score改成math_score
3、修改字段类型--modify
语法:alter table 表名 modify 字段名 类型;
4、添加字段
alter table 表名 add 字段名 类型;
- (1)添加日期字段:datetime
alter table 表名 add 字段名 datetime;
向日期字段中写入信息
通过now()获取当前时间
- (2)enum字段
alter table 表名 add 字段名 enum('F', 'M'); (F和M是固定值,自己可以设置)
当在类型为enum的字段sex中写入数据时,数据必须是F或M,否则就会报错
5、删除字段
alter table 表名 drop 字段名;