#添加字段
altertable student add address varchar(50) not null;
#将name修改为username
altertable student change name username varchar(20);
alter table salary change雇员编号empidint(10);
#sex char(2) 改为varchar(2)
altertable student change sex sex varchar(2);
#将age 放到address 后面
altertable student modify age int(5) after address;
#删除address
altertable student drop address;
#将student表名修改为stu
altertable student rename stu;
create table teacher(
id int(10) primary key auto_increment,
name varchar(5)
);
insert into teacher(name) values('张老师'),('李老师'),('王老师'),('凌老师'),('于老师');
#表关系: 一对一 一对多 多对多
1.主键关联主键 等值连接
selectt.name,s.username,s.age,s.sex from teacher t,stu s where s.id = t.id;
#2.交叉连接
selectt.name,s.username,s.age,s.sex from teacher t cross joinstu s on s.id = t.id;
#3.内连接:避免笛卡尔积,并且在数据量多的情况下提高查询的效率
selectt.name,s.username,s.age,s.sex from teacher t inner join stu s on s.id = t.id;
#以上三种连接获取的都为表的交集
#外连接:左连接 右连接
#左连接 查询左边表的所有数据 右边只查询关联id 相同的数据
select t.name,s.username,s.age,s.sex fromteacher t left join stu s on s.id = t.id;
select t.name,s.username,s.age,s.sex fromstu s right join teacher t ons.id = t.id;
sql3.
#查询和小明年龄相同的学生信息 动态问题
select id,username,age,sex from stu where age = (select age from stuwhere username = '小明') and username <> '小明';
date year datetime timestamp#获取系统年
select year(sysdate());
#年月日
select date(sysdate());
#年月日 时分秒
select timestamp(sysdate());
#不能使用此方法获取时间 不识别
select datetime(sysdate());
#一张表的外键是另外一张表的主键 外键可以创建多个 但是主键只能创建一个 主键的值为唯一 外键的值可以重复
create table student(
id int(10) primary key auto_increment,
name varchar(20),
grade varchar(20),
tid int(10)
);
insert into student(name,grade,tid) values('小红','1712A',2);
#设置外键 必须先给主键的表创建了数据才能给外键表进行添加数据 on delete cascade :级联删除
#设置了级联删除 既可以删除主表数据又可以删除外键表数据,一旦删除主表数据,外键关联的数据一并删除
alter table student addconstraint foreign key(tid) references teacher(id) on delete cascade;
外键:
insert into student(name,grade,tid)values('张三','1711A',1);
create table student(
id int(10) primary key not nullauto_increment,
name varchar(20),
grade varchar(20),
tid int(10)
);
create table teacher(
id int(10) primary key auto_increment,
name varchar(10),
workAge int(3)
);
主键:
insert into teacher(name,workage) values('李老师',5);
insert into teacher(name,workage) values('张老师',5);
#一对一 一对多 多对多 取决于表设计
等值查询:
select t.name,s.name,s.grade from teacher t,student s where t.id =s.tid;
Test:
create table a(
id int(10) primary key,
tid int(10)
);
create table b(
id int(10) primary key
);
alter table a add constraint foreignkey(tid) references b(id);
Constraint 约束,约束 (数学),限制
Cascade 喀斯喀特 (蒙大拿州),卡斯喀得区,串联
cascade system 级联系统,串级系统,串联系统
#创建视图,视图为一张虚拟的表,创建视图的目的是为了提高查询的效率,当一张表中有很多字段时,而在查询过程中不需要那么多的字段,那么可以通过视图创建一张虚拟的表
#表数据与原表的数据完全一致
create view stu_view as select id,name from student;

153

被折叠的 条评论
为什么被折叠?



