目录
1、修改表结构 : 对已经创建的表的结构做修改:alter table 库.表 执行动作;
1-1、添加新字段 add
1-2、删除已有字段 drop
1-3、修改已有字段类型 modify
1-4、修改字段名 change
1-5、修改表名 rename
2、MYSQL键值:约束如何给字段赋值。
2-1、索引介绍:给字段值排序的树形结构,类似与“书的目录”
2-2、查看索引的两种方式
2-3、创建索引的两种方式及删除索引
3、主键 primary key 限制如何给字段赋值
3-1、建表时创建主键的两种格式,两种方法
3-2、删除主键
3-3、创建复合主键: 表中的多个字段一起做主键 ,赋值时,主键字段的值不允许同时重复。
3-4、在已有表里创建复合主键
3-5、删除复合主键
3-6、主键通常和auto_increment 连用 让字段的值自动增长,做自加1 计算
4、外键:让当前表字段的值,在另一个表字段值范围里选择。
4-1、外键的使用规则:
4-1、首先创建被参考的表 员工信息表
4-2、创建外键
4-3、删除外键
1、修改表结构 : 对已经创建的表的结构做修改:alter table 库.表 执行动作;
1-1、添加新字段 add
alter table db2.t1
add email varchar(50) default "hat@qq.com" ,add qq char(11) ;-----默认添加到最后的字段
alter table db2.t1
add stu_num char(9) first,------添加到第一个字段
add likes set("eat","sleeps","game","film") after sex;------ 添加到某一个字段之后
1-2、删除已有字段 drop
alter table db2.t1 drop email , drop qq;----逗号间隔可一次删多个字段
1-3、修改已有字段类型 modify
修改字段类型时,若新的类型与字段已经存储数据冲突,不允许修改。
不修改的部分要原样写一遍,否则就会使用默认值,通过modify还可以修改字段位置。
alter table t1 modify sex enum('boy','girl',"no") not null default "boy" after name;-----修改sex字段为多选,且不允许为空,不赋值时默认值为boy,并将该字段放在name字段之后
1-4、修改字段名 change
alter table t8 change stu_num stu_id varchar(9);---修改字段名stu_num 为 stu_id
1-5、修改表名 rename
alter table t8 rename stuinfo;----修改表明为stuinfo
show tables;
2、MYSQL键值:约束如何给字段赋值。
普通索引 index
2-1、索引介绍:给字段值排序的树形结构,类似与“书的目录”
算法(笔画 部首 拼音 BTREE b+tree hash)
二叉树
索引优点 :加快查询数据的速度
索引缺点 :减慢写入数据的速度 ,占用磁盘空间
2-2、查看索引的两种方式
desc 表; key ----> MUL
show index from 表\G;
2-3、创建索引的两种方式及删除索引
把已有表的字段设置为index字段
create index aaa on stuinfo(name);-----创建了一个名为aaa的索引在stuinfo表的(name)字段上
创建表时指定index字段
create table t9(
name char(15) not null default "",
class char(7) default "nsd1804",
age tinyint(2) not null default 19,
sex enum("boy","girl") not null default "boy",
index(name),index(class));------将name和class两个字段设为了索引
删除索引index
drop index aaa on stuinfo;
3、主键 primary key 限制如何给字段赋值
primary key 使用规则:
1.一个表中只能有一个主键
2.设为主键的字段赋值时不允许赋空值,即不能为null,且该字段的值不允许重复
3.表中的多个字段一起做主键 ,赋值时,主键字段的值不允许同时重复。复合主键的出现是为了解决一个主键字段无法允许第二个主键字段值相同的记录的写入,此时就需要再引用一个字段作为主键来二次区分,才能再允许第二条记录的写入。注意复合主键的字段必须同时设为主键,不允许追加设为主键。
3-1、建表时创建主键的两种格式,两种方法
1.1 create table t10(stu_id char(9) primary key,
name char(10),
age int(2));
1.2 create table t11(
stu_id char(9) ,
name char(10),
age int(2),
primary key(stu_id));
2.1在已有表里创建主键字段
alter table t10 add primary key(stu_id);
3-2、删除主键
alter table t10 drop primary key;
desc t10;
insert into t10 values("nsd180401","lucy",21);
insert into t10 values(null,"lucy",21);
select * from t10;
3-3、创建复合主键: 表中的多个字段一起做主键 ,赋值时,主键字段的值不允许同时重复。
create table t12(
name char(15),
class char(7),
pay enum("yes","no"),
primary key(name,class)
);
mysql> insert into t12 values("bob","nsd1804","yes");
mysql> insert into t12 values("bob","nsd1804","no");
ERROR 1062 (23000): Duplicate entry 'bob-nsd1804' for key 'PRIMARY'
mysql> insert into t12 values("bob","nsd1805","no");
mysql> insert into t12 values("lucy","nsd1805","yes");
3-4、在已有表里创建复合主键
delete from t12;
alter table t12 add primary key(name,class);
3-5、删除复合主键
alter table t12 drop primary key;
3-6、主键通常和auto_increment 连用 让字段的值自动增长,做自加1 计算
向表中插入记录时 不给自动增长的字段赋值,字段的值是如何获得的呢,用当前字段最大的值 +1 后 把结果做当前新记录字段的值。此外也可手动赋值,但所赋值必须是非当前主键字段里已有的值
create table t1(
id int(2) primary key auto_increment,---将id字段设为主键,且设为自动增长
name char(15) not null,
age tinyint(2) unsigned default 19,
pay float(7,2) default 26800);
insert into t1 (name,age,pay) values("tom",21,18000);
insert into t1 (name,age,pay) values("lucy",23,18800);
select * from t1;
4、外键:让当前表字段的值,在另一个表字段值范围里选择。
4-1、外键的使用规则:
1.两张表的存储引擎必须是innodb
2.外键字段和参考字段的类型必须一致
3.被参考字段必须是键值的一种(主键)
4-1、首先创建被参考的表 员工信息表
create table yginfo(
yg_id int(2) primary key auto_increment,-----被参考字段必须为主键
name char(15)
)engine=innodb;-----存储引擎必须是innodb
insert into yginfo(name)values("bob");
insert into yginfo(name)values("bob");
insert into yginfo(name)values("lucy");
4-2、创建外键
create table gztab(
gz_id int(2),
pay float(7,2),
foreign key(gz_id ) ----创建gz_id为外键
references yginfo(yg_id)----以yginfo表(yg_id)字段为参考字段
on delete cascade ------同步删除
on update cascade ------同步修改
)engine=innodb; ---- 存储引擎必须是innodb
4-3、删除外键
show create table gztab;----在展现的表结构中找到外键名(CONSTRAINT关键字之后)
alter table gztab drop foreign key gztab_ibfk_1;-----删除外键
show create table gztab;------重新查看将不再有外键
感谢您的拜读!!!
目录
1、修改表结构 : 对已经创建的表的结构做修改:alter table 库.表 执行动作;
1-1、添加新字段 add
1-2、删除已有字段 drop
1-3、修改已有字段类型 modify
1-4、修改字段名 change
1-5、修改表名 rename
2、MYSQL键值:约束如何给字段赋值。
2-1、索引介绍:给字段值排序的树形结构,类似与“书的目录”
2-2、查看索引的两种方式
2-3、创建索引的两种方式及删除索引
3、主键 primary key 限制如何给字段赋值
3-1、建表时创建主键的两种格式,两种方法
3-2、删除主键
3-3、创建复合主键: 表中的多个字段一起做主键 ,赋值时,主键字段的值不允许同时重复。
3-4、在已有表里创建复合主键
3-5、删除复合主键
3-6、主键通常和auto_increment 连用 让字段的值自动增长,做自加1 计算
4、外键:让当前表字段的值,在另一个表字段值范围里选择。
4-1、外键的使用规则:
4-1、首先创建被参考的表 员工信息表
4-2、创建外键
4-3、删除外键