zoukankan      html  css  js  c++  java
  • 表的增删改查

    一、修改表

    1. 修改表名
    alter table 表名 rename 新表名;
    #mysql中库名、表名对大小写不敏感(不区分大小写)

    2. 增加字段
    alter table 表名ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…];

    alter table 表名ADD 字段名 数据类型 [完整性约束条件…] FIRST; #插第一行

    alter table 表名ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; #插在某一条记录之后

    3. 删除字段
    alter table 表名 DROP 字段名;

    4. 修改字段
    alter table 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
    #modify不能改字段名

    alter table 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
    alter table 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…]; (数据类型要带上)
    #change可以改字段名
    #修改表通常改的是字段,而不修改数据类型(前后冲突则报错)



    二、复制表

    a、复制表结构+记录 (key不会复制: 主键、外键和索引)
    mysql> create table new_service select * from service;

    b、只复制表结构
    mysql> select * from service where 1=2; //条件为假,查不到任何记录
    Empty set (0.00 sec)
    mysql> create table new1_service select * from service where 1=2;
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> create table t4 like employees; #表结构一摸一样


    三、记录增删改查

    插入数据insert

    1. 插入完整数据(顺序插入)
    语法一:
    insert into 表名(字段1,字段2,字段3…字段n) values(值1,值2,值3…值n);
    语法二:
    insert into 表名 values (值1,值2,值3…值n);
    2. 指定字段插入数据
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

    3. 插入多条记录
    语法:
    INSERT INTO 表名 VALUES
    (值1,值2,值3…值n),
    (值1,值2,值3…值n),
    (值1,值2,值3…值n);

    4. 插入查询结果
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…字段n)
    SELECT (字段1,字段2,字段3…字段n) FROM 表2
    WHERE …;


    更新数据update

    语法:
    update 表名 set
    字段1=值1,
    字段2=值2,
    where condition;
    示例:
    UPDATE mysql.user SET password=password(‘123’)
    where user=’root’ and host=’localhost’;

    删除数据delete

    语法:
    DELETE FROM 表名
    WHERE CONDITION;

    示例:
    DELETE FROM mysql.user
    WHERE password=’’;

    练习:
    更新MySQL root用户密码为mysql123
    删除除从本地登录的root用户以外的所有用户


    四、授权表

    1、跟权限有关的几张表
    user->db->table_priv->columns_priv (优先级由高到低)
    user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段
    db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段
    tables_priv #该表放行的权限。针对:某一张表,以及该表下的所有字段
    columns_priv #该表放行的权限,针对:某一个字段

    按图解释:
    user:放行db1,db2及其包含的所有
    db:放行db1,及其db1包含的所有
    tables_priv:放行db1.table1,及其该表包含的所有
    columns_prive:放行db1.table1.column1,只放行该字段

    2、只创建账号
    #create user tom@"客户端的ip" identified by "123";
    create user tom@"192.168.15.%" identified by "123";
    create user tom@"%" identified by "123";

    #客户端:192.168.15.13 服务端:192.168.15.90

    create user tom@"192.168.15.13 " identified by "123";
    mysql -utom -p"123" -h 192.168.15.90 -P 3306

    # 3、创建账号并且授权(只有root账号才能为其他账号授权grant)
    # *.* ===> mysql.user
    grant all on *.* to "tom"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.* ===> mysql.db
    grant all on db1.* to "jack"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.t1 ===> mysql.tables_priv
    grant all on db1.t1 to "rose"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限

    # db1.t1(id) ===> mysql.columns_priv
    grant select(id),update(name) on db1.t1 to "lili"@"192.168.15.90" identified by "123";


    # 修改完权限一定要
    flush privileges;


    drop user "tom"@"192.168.15.90";
    drop user "jack"@"192.168.15.90";
    drop user "rose"@"192.168.15.90";
    drop user "lili"@"192.168.15.90";
    flush privileges;
  • 相关阅读:
    java 数组声明方法
    python 什么叫迭代
    Golang生成区间随机整数
    Golang字符串格式化
    Golang中map的三种声明方式和简单实现增删改查
    Golang实现二分查找法
    Golang实现冒泡排序法
    Golang切片的三种简单使用方式及区别
    Golang获取int数组里的最大值和下标
    Golang数组注意细节
  • 原文地址:https://www.cnblogs.com/kingyanan/p/9460106.html
Copyright © 2011-2022 走看看