MySQL深入

 

#添加字段

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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值