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

表增删该查

进入库名
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 字段名;

表关系

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

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

建表语法

建主表:
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用户管理

-特殊表: (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 用户名@主机名;
 
原文地址:https://www.cnblogs.com/liu--huan/p/10301280.html