码迷,mamicode.com
首页 > 数据库 > 详细

库增删该查,表增删该查,记录增删该查,mysql用户管理,表与表关系(多对多,多对一,一对一)

时间:2019-01-21 22:49:40      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:date   col   字符   清空   用户权限   登陆   表名   esc   级联   

库增删该查

增加库
create database db1
create database db1 charset="gbk

查看库
show databases  查看所有库
show create database db1  查看具体库

改
alter database db1 charset="utf8"  改库的属性

删除
drop database db1

 

表增删该查

进入库名
use db1
select databases()

创建表
create table t1(name char(20),age int(10));

查看表
show tables
show create table t1;

desc(ribe) t2  : 查看表结构

删除
drop table t1

修改
alter table t2 modify name char(20)   修改字段名
alter table t2 rename t1  修改表明

ALTER  TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
alter table t1 change name user char(16)  修改字段属性

 

字段增删该查

增加
insert into t1 (usr, age) values ("aa",18 ),("bb",8);

查
select * from t1

改
update t1 set age=28 where usr="aa"

删除
delete from t1 where age>8

 

表的详细操作

拷贝表
create table t1 like t2;    拷贝空表
create table t1 select * from t2;  (结构+数据) 连同表记录一起拷贝过来,不复制表约束

truncate tt;  清空表,自增字段重置

alter table t1 engine=innodb charset=gbk;   修改表的引擎,字符编码集

 

表的字段操作

修改字段信息
alter table 表名 modify 字段名 类型[(宽度) 约束];    修改字段信息
alter table 表名 modify 字段名 类型[(宽度) 非键约束] first;     移动字段到最前面
alter table 表名 modify 字段名 类型[(宽度) 非键约束] after 指定字段前;  移动到字段到指定字段后面

修改字段名及信息
alter table 表名 change 旧字段名 新字段名 类型[(宽度) 约束条件]

末尾添加
alter table 表名 add 字段名 类型[(宽度) 约束], ..., add 字段名 类型[(宽度) 约束];
alter table t1 add name char(5), add sex enum(male,femail,other)

首行添加
alter table 表名 add 字段名 类型[(宽度) 约束] first;

指定字段的后面添加
alter table 表名 add 字段名 类型[(宽度) 约束] after 旧字段名;

删除字段名
alter table 表名 drop 字段名;

 


表的字段操作

特殊表:(mysql.user)
查看当前登陆用户  select user();

重要字段:  Host | User | Password
select  Host,User,Password from user;

新建用户
create user 用户名@主机名 identified by 密码

设置用户权限
grant create on db1.* to zero@localhost with grand option   给用创建表的权限

设置权限是如果没有当前用户,会自动创建用户 (重点)
grant all on db1.* to owen@localhost identified by owen;    # (创建用户)设置权限

撤销权限
revoke 权限名 on 数据库名.表名 from 用户名@主机名;
revoke delete on db1.* from owen@localhost;

修改密码
set password for 用户名@主机名 = password(新密码);
set password for owen@localhost = password(123);

删除用户
drop user 用户名@主机名;

 

表关系

多对一     (关键字设置在多的那一方)

建表规则:
先建立主表,再建立从表,在从表中设置主表的唯一字段(通常为主键)作为外键

建表语法

建主表:
create
table 主表( id int primary key auto_increment, ... );

create table dep( id int primary key auto_increment, name varchar(16), work varchar(16) );

 

建从表
create table 从表(
    id int primary key auto_increment,
    ...
    主表_id int, # 只是在从表中起了一个名字, 该名字和主表主键对应,所有起了个见名知义的名字
    foreign key(主表_id) references 主表(唯一字段名id)
    on update cascade
    on delete cascade
);

create table emp( id int primary key auto_increment, name varchar(16), salary float, dep_id int, foreign key(dep_id) references dep(id) 外键设置在多的那一方 on update cascade # 设置级联 on delete cascade );

 

多对多(关系确立在第三张表上)

建表规则:
  新建第三张表,通过两个外键形成多对多关系

建表语法:
create table 表1(
    id int primary key auto_increment,
    ...
);
create table book(
   id int primary key auto_increment,
   name varchar(16),
   price int
);
create table 表2(
    id int primary key auto_increment,
    ...
);
create table author(
   id int primary key auto_increment,
   name varchar(16)
);

建第三张表建立关系

create table 关系表(
    id int primary key auto_increment,
    表1_id int,
    表2_id int,
    foreign key(表1_id) references 表1(id)
    on update cascade
    on delete cascade,
    foreign key(表2_id) references 表2(id)
    on update cascade
    on delete cascade
);
create table book_author(
    id int primary key auto_increment,
    book_id int,
    author_id int,
    foreign key(book_id) references book(id)      第三张表与第一张表建立关系
    on update cascade
    on delete cascade,
    foreign key(author_id) references author(id)   第三张表与第一张表建立关系
   on update cascade
   on delete cascade );

 

一对一(关系确立在第一张表上)

建表规则:
未存放外键的表被依赖,称之为左表;存放外键的表示依赖表,称之为右表;先操作左边再操作右表

建表语法:

create table 左表(
    id int primary key auto_increment,
    ...
);
create table husband(
    id int primary key auto_increment,
    name varchar(16)
);
create table 右表(
    id int primary key auto_increment,
    ...
    左表_id int unique, # 一对一的外键需要唯一性
    foreign key(左表_id) references 左表(id)
    on update cascade
    on delete cascade
);
create table wife(
    id int primary key auto_increment,
    name varchar(16),
    husband_id int unique, # 一对一的外键需要唯一性
    foreign key(husband_id) references husband(id)
    on update cascade
    on delete cascade
);

 

 

 

库增删该查,表增删该查,记录增删该查,mysql用户管理,表与表关系(多对多,多对一,一对一)

标签:date   col   字符   清空   用户权限   登陆   表名   esc   级联   

原文地址:https://www.cnblogs.com/liu--huan/p/10301280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!