云计算学习100天-第49天-MySQL数据库学习5
目录
主键与外键命令
//创建主键
语法格式1
create table 库.表(
表头名 数据类型 primary key ,
表头名 数据类型 ,
..... );
语法格式2
create table 库.表(
表头名 数据类型 ,
primary key(字段名)
);
//删除主键命令
alter table 库.表 drop primary key ;
//添加主键命令
alter table 库.表 add primary key(表头名);
//创建复合主键
create table 库.表(
表头名1 数据类型 ,
表头名2 数据类型 ,
primary key(表头名1,表头名2)
..... );
主键与auto_increment连用——
表头设置了auto_increment属性后,
插入记录时,如果不给表头赋值表头通过自加1的计算结果赋值
要想让表头有自增长 表头必须有主键设置才可以
查看表结构时 在 Extra (额外设置) 位置显示
create table 库.表(
表头名1 int primary key auto_increment,
表头名2 数据类型
..... );
//创建外键
create table 库.表(
字段列表 ,
foreign key(表头名)
peferences 库名.表名(字段名) #指定外键
on update cascade #同步更新
on delete cascade #同步删除
)engine=innodb; #指定存储引擎
注意: 被外键关联的表不能被删除
//查看外键 \G 垂直显示
show create table 库名.表名 \G;
或
shelect * from information_schema.table_constraints where table_name='表名';
//删除外键
alter table 库.表 drop foreign key 外键名;
//添加外键
alter table 库.表 add foreign key(字段名)
references 库.表(字段名)
on update cascade #同步更新
on delete cascade; #同步删除
//清空数据,也清空自增长
truncate 库.表
示例:
create table db1.t31(
-> name char(10) not null ,
-> class char(7) default "nsd",
-> likes set("money","game","film","music") not null default "film,music" );
create table db1.t43 (姓名 char(10) , 护照 char(18) unique);
索引相关命令
//在已有表中创建索引
create index 索引名 on 库.表(字段名);
//创建普通索引
create table 库.表(
字段列表,
index(表头名),
index(表头名)
);
//删除索引
DROP INDEX 索引名 ON 库.表;
//查看索引详细信息
show Index from 库.表 \G;
//验证查询是否使用索引
explain select 查询语句;
用户授权相关命令
//创建用户
create user 用户名@"客户端地址" identified by "密码";
//授予权限
grant 权限列表 on 库名 to 用户名@"客户端地址";
//主要权限列表:
select insert update dealet create drop alter
//存储用户权限信息的库mysql 表如下:
user 保存已有的授权用户及用户对所有库的权限
db 保存已有授权用户对某一个库的访问权限
tables_priv 记录已有授权用户对某一张表的访问权限
columns_priv 记录已有授权用户对某一个表头的访问权限
//刷新权限
flush privileges;
权限表示方式:
ALL 所有权限
USAGE 无权限
select,update ... 个别权限
select,update(字段1,字段N) 指定字段权限
客户端地址:
% 所有主机
192.168.88.% 网段内的所有主机
192.168.88.1 固定1台主机
localhost 数据库服务器本机
//备份数据权限
grant select,enent,show databases,lock tables,super,replication client
on *.* to 用户名@"客户端地址" identified by "密码";
//恢复数据权限
grant insert,update,deletc,create,drop,index,alter,create view,show view,create routine,alter routine,event,trigger on *.* to 用户名@"客户端地址" identified by "密码";
//撤销权限
revoke 权限列表 on 库名 to 用户名@"客户端地址";
//显示自身访问权限
show grants;
//管理员查看已有授权用户权限
show grants for 用户名@"客户端地址";
//管理员重置授权用户连接密码
set password for 用户名@"客户端地址";
//删除授权用户(必须有管理员权限)
drop user 用户名@"客户端地址";
相关的命令行命令
在MySQL 里执行系统命令 前加system 指令
system 命令
示例:system cp /etc/passwd /myload/;
导入数据
步骤:
建表->拷贝文件到检索目录->导入数据
load data infile "/目录名/文件名" into table 库名.表名fields terminated by "分隔符" Lines terminated by "\n";
示例:
system cp /etc/passwd /myload/;
load data infile "/myload/passwd" into table db1.user3 fields terminated by ":" lines terminated by "\n" ;
导出数据
select命令 into outfile "/目录名/文件名";
或
select命令 into outfile "/目录名/文件名" fields terminated by ":" lines terminated by "\n" ;
约束
是一种限制,设置在表头上,用来控制表头的赋值
not null 非空 注意:null Null ""都不同
default 默认值
unique 唯一索引 用于保证该字段的值具有唯一性,可以为空
PRIMARY KEY 主键 用于保证该字段的值具有唯一性并且非空
FOREIGN KEY 外键 用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中的值
更多推荐



所有评论(0)