自学MySQL
一、数据库基本操作
1、修改信息
1.1、修改列名字
#修改列名id为idkey
ALTER TABLE stu CHANGE COLUMN id idkey INT(30);
1.2、在表中添加列
alter table 表名 add column 新列名 varchar(255) not null;#默认加在最后
alter table 表名 add column 新列名 varchar(255) not null after 列名;
1.3、在表中添加数据
#主键(primary key)需要设置值不然报错(not null)
INSERT INTO stu (`idkey`,`id`,`name`,`sex`,`hobby`)
VALUES
(3,13,'sai','男','看电影'),
(4,14,'sakura','女','听歌');
2、主键(primary key)
2.1、主键介绍
一个表只能有一个主键, 但是主键可以是1个或多个字段组成。
primary key 自增长
自增长字段的值从1开始, 每次递增1。
自增长字段数据不可以重复, 合适生成唯一的id。
自增长字段可以使用null或者default来设置值。
自增长字段必须是主键 (primary key)。
2.2、主键创建
#添加主键的第一种方式
create table stu(
idkey int primary key, #直接指定主键字段
id int,
name varchar(20)
);
#添加主键的第二种方式
create table stu(
idkey int,
id int,
name varchar(20),
primary key(idkey) #语句最后指定主键字段
);
#添加主键的第三种方式
create table stu6(
idkey int,
id int,
name varchar(20)
);
#没有主键的情况下添加主建
alter table stu6 add primary key(idkey); #表创建完成后添加主键
2.3、表连接(避免笛卡尔乘积)
内连接
内连接特点:符合条件匹配,不符合条件就过滤
隐式内连接:from a,b where
SELECT s.`name`,t.`name`,t.`course`
FROM stu s,teacher t
WHERE s.idkey=t.idkey;
显示内连接:a inner join b on
SELECT s.`name`,t.`name`,t.`course`
FROM stu s INNER JOIN teacher t
ON s.idkey=t.idkey;
外连接
外连接特点:能匹配到的数据显示,不能匹配到的数据与null连接并显示
左外连接:left outer join
SELECT s.`name`,t.`name`,t.`course`
FROM stu s LEFT OUTER JOIN teacher t
ON s.idkey=t.idkey;
右外连接:right outer join
SELECT s.`name`,t.`name`,t.`course`
FROM stu s RIGHT OUTER JOIN teacher t
ON s.idkey=t.idkey;
全外连接:full outer join
#因为Mysql不支持full outer join,所以使用union将左外连接和右外连接 连接起来,达到全外连接的效果
SELECT s.`name`,t.`name`,t.`course`
FROM stu s LEFT OUTER JOIN teacher t
ON s.idkey=t.idkey
UNION
SELECT s.`name`,t.`name`,t.`course`
FROM stu s RIGHT OUTER JOIN teacher t
ON s.idkey=t.idkey;