zoukankan      html  css  js  c++  java
  • 表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),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 用户名@主机名;
     
  • 相关阅读:
    傻瓜教程:asp.net(c#) 如何配置authentication,完成基于表单的身份验证
    ajax与php交互的get和post两种实现方式
    php 存储过程
    一万小时天才理论
    servlet阅读
    post and get
    合并两个有序数组(重新开始)
    Java参数传递问题
    一万小时(如何实现)阅读
    java IO 流的学习(我们到底能走多远系列1)
  • 原文地址:https://www.cnblogs.com/liu--huan/p/10301280.html
Copyright © 2011-2022 走看看