****************************************************
1约束条件
2表结构
3MySQL键值
一 表结构 :
/null/index/key/default/extra
约束条件 --控制字段赋值
1null–空\yes\no
2key --健值
3 default\ -设置默认值
4 extra --自增长
二
Mysql 索引 健值
通过创建唯一索引,可以保证数据库每行数据的唯一性
可以加快数据库的检索速度,索引需要占用物理空间
对表中的数据增删改查时,索引也需要动态维护.
缺点:占物理空间,减慢对表写操作
普通索引 --有对应名称index
一个表中可以有多个index字段
字段值允许有重复,且可以赋值null
经常吧做查询条件的字段设置为index字段
Index 的标志是mul
删除
查看
设置
1 创建表的时候指定INDEX索引字段
mysql> CREATE TABLE tea4(
-> id char(6) NOT NULL,
-> name varchar(6) NOT NULL,
-> age int(3) NOT NULL,
-> gender ENUM(‘boy’,‘girl’) DEFAULT ‘boy’,
-> INDEX(id),INDEX(name)
-> );
2 删除tea4表中名称为named的INDEX索引字段:
mysql> drop INDEX name ON tea4;
3 在已有的某个表中设置INDEX索引字段
比如,针对tea4表的age字段建立索引,名称为 nianling:
mysql> CREATE INDEX nianling ON tea4(age); //针对指定字段创建索引
4 查看指定表的索引信息
使用SHOW INDEX 指令:
mysql> SHOW INDEX FROM tea4\G
唯一索引 unique
一个表可有多个unique字段
对应的字段值不允许重复
Key标志是:UNI
字段值允许为null,当将其修改为不允许null,则此字段限制和主键相同
创建唯一索引;create table t1(name char(2),host char(10), unique(host),unique(name));
对已有字段创建unique create unique index 索引名 on表(字段名);
删除unique drop index 索引名 on 表;
主键 primary key
一个表中只能有一个primary key 字段
对应字段不允许有重复,且不能赋值null
主键标志:PRI
Auto_increment 自增长一起连用 -(必须是数值类型,且为主键)
创建主键Create table t1(id int(200) zerofil primary key auto_increment , name char(20),age int(200),unsigned,pay float(7,2) default(18000));
对已有字段设置主键:alter table t1 add id int(20) zerofill primary key auto_increment first;
删除主键:alter table 表名 drop primary key;
外键 foreign key 给当前表字段赋值,字段的值只能在另一个表的字段范围里找
使用:必须引擎innodb,
字段类型必须相同
被参考的字段必须是索引的一种
删除外键:alter table 表 drop foreign key 外键名
添加外键:alter table 表 add foreign key(字段名) reference 表名(字段)
On update cascate on delete cascate;
全文 fulltext
unique字段的值允许为null,当将其修改为不允许为null时,则此字段限制和主键相同
create table t6( name char(10) not null, age tinyint unsigned default 25,class char(9) not null default “nsd1904”, sex enum(“man”,“woman”) default “man”, pay float(7,2) default 28000);
三
修改表结构
Alter table 库.表 执行命令;
Add\modify\change \drop\rename
Add 添加字段
Modify 修改字段类型 --first -after
Change :修改字段名
Drop 删除字段
Rename 修改表名
Alter table t1 add mail vachar(200) not null default
Alter table t1 modify name vachar(200);
Alter table t1 change qq iso vachar(200)
Alter table t1 drop sex;
Alter table 原表名 rename 新表名
drop table db1.user;
insert into db1.user(name,id,host) values(“tom”,100,“tts”);
1 索引:目录 --字段排序
索引类型: Btree
hash
B+tree
2 优点: --保证数据唯一
加快查询
缺点; 占空间
增删改\不建索引
查>写 生产环境
3 使用规则:多个字段-索引-赋值-查
Index 字段 标志是Mull
Select * from tea4 where name=”tom”
\
4 show index 索引名 from 表名\G
Drop index 索引名 on 表名
1已有表创索引 drop Create index xxxx on tea4(name) --创建索引表
2建表时创索引
5 主键
Create table t8(
1 Name char(01) primary key); --键表时创建主键
注意事项
– 一个表中只能有一个 primary key 字段
– 对应的字段值不允许有重复,且不允许赋 NULL 值
– 如果有多个字段都作为 PRIMARY KEY ,称为复合主
键,必须一起创建。
– 主键字段的 KEY 标志是 PRI
– 通常与 AUTO_INCREMENT 连用
– 经常把表中能够唯一标识记录的字段设置为主键字段
Show tables
Alter table 字段名 add primary key(字段) --已有表添加主键
Alter table 字段名 drop primary key; -删除
2 创建复合主键
Create table t4(
Name
Class
Status
Primary key(name ,class)
);
自增长auto_increment —仅仅适用主键
Create table t5(
Id int primary key auto_increment,
Name
Class
6 外键 --foreign key
什么是外键?
– 让当前表字段的值在另一个表中字段值的范围内选择
员工信息表
工资表 --外键 赋值(插入记录时,字段值在另一个表字段值范围内选择)
使用规则:
引擎innodb
字段类型
主键是索引类型一种
基本用法:foreign key 表A
Reference 表B
On update cascade
On delete cascate
删除外键:alter table 表名 drop foreign key 约束名;
查看表:show create table 表名\G
1 创建yg表,用来记录员工工号、姓名,其中yg_id列作为主键,并设置自增属性
mysql> CREATE TABLE yg(
-> yg_id int primary key AUTO_INCREMENT,
-> name char(16)
-> )engine=innodb
2)创建gz表,用来记录员工的工资信息
其中gz_id需要参考员工工号,即gz表的gz_id字段设为外键,将yg表的yg_id字段作为参考键:
mysql> CREATE TABLE gz(
-> gz_id int,
-> name char(16) ,
-> gz float(7,2) ,
-> FOREIGN KEY(gz_id) REFERENCES yg(yg_id) //创建外键
-> ON UPDATE CASCADE ON DELETE CASCADE //同步更新、同步删除
-> )engine=innodb;
3)为yg表添加2条员工信息记录
mysql> INSERT INTO yg(name) VALUES(‘Jerry’),(‘Tom’);
mysql> SELECT * FROM yg;
4 删除指定表的外键约束
先通过SHOW指令获取表格的外键约束名称:
mysql> SHOW CREATE TABLE gz\G
CONSTRAINT gz_ibfk_1
FOREIGN KEY
其中gz_ibfk_1即删除外键约束时要用到的名称。
删除操作:
mysql> ALTER TABLE gz DROP FOREIGN KEY gz_ibfk_1;
Query OK, 0 rows affected (0.01 sec)
Add 字段
Modify 字段mode
Change
Drop 删除字段
Rename new表名
VNC (Virtual Network Console)是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美