zoukankan      html  css  js  c++  java
  • mysql(数据表操作)

    MySQL 创建数据表

    创建MySQL数据表需要以下信息:

    • 表名
    • 表字段名
    • 定义每个表字段

    语法

    CREATE TABLE IF NOT EXISTS 表名(
       `runoob_id` INT UNSIGNED AUTO_INCREMENT,
       `runoob_title` VARCHAR(100) NOT NULL,
       `runoob_author` VARCHAR(40) NOT NULL,
       `submission_date` DATE,
       PRIMARY KEY ( `runoob_id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    实例解析:

    • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
    • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
    • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
    • ENGINE 设置存储引擎,CHARSET 设置编码。
    • MySQL 删除数据表

      MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。

      语法

      以下为删除MySQL数据表的通用语法:

      DROP TABLE 表名 ;
    • MySQL 删除表的几种情况:

      1、drop table table_name : 删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM;

      实例,删除学生表:

      drop table student;

      2、truncate table table_name : 删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM;

      实例,删除学生表:

      truncate table student;

      3、delete from table_name : 删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间;

      实例,删除学生表:

      delete from student;

      4、delete from table_name where xxx : 带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间;

      实例,删除学生表中姓名为 "张三" 的数据:

      delete from student where T_name = "张三";

      5、delete 操作以后,使用 optimize table table_name 会立刻释放磁盘空间,不管是 innodb 还是 myisam;

      实例,删除学生表中姓名为 "张三" 的数据:

      delete from student where T_name = "张三";

      实例,释放学生表的表空间:

      optimize table student;

      6、delete from 表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。

    • MySQL 插入数据

      MySQL 表中使用 INSERT INTO SQL语句来插入数据。

    • INSERT 插入多条数据

      INSERT INTO table_name  (field1, field2,...fieldN)  VALUES  (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
    • 添加数据的时候可以规定列进行添加。

      如果所有的列都要添加数据可以不规定列进行添加数据:

      mysql> INSERT INTO runoob_tbl
          -> VALUES
          -> (0, "JAVA 教程", "RUNOOB.COM", '2016-05-06');

      第一列如果没有设置主键自增(PRINARY KEY AUTO_INCREMENT)的话添加第一列数据比较容易错乱,要不断的查询表看数据。

      如果添加过主键自增(PRINARY KEY AUTO_INCREMENT)第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。

    • MySQL DELETE 语句

      你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。

    • 语法

      以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:

      DELETE FROM 表名[WHERE Clause]
      • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
      • 你可以在 WHERE 子句中指定任何条件
      • 您可以在单个表中一次性删除记录。

      当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。

    • delete 语句用于删除表中的数据, 基本用法为:

      delete from 表名称 where 删除条件;

      以下是在表 students 中的实例:

      删除 id 为 3 的行: delete from students where id=3;

      删除所有年龄小于 21 岁的数据: delete from students where age<20;

      删除表中的所有数据: delete from students;

    • delete,drop,truncate 都有删除表的作用,区别在于:

      •  1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
      •  2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
      •  3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。

        MySQL UPDATE 更新

        如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。

        语法

        以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:

        UPDATE 表名  SET field1=new-value1, field2=new-value2
        [WHERE Clause]
        • 你可以同时更新一个或多个字段。
        • 你可以在 WHERE 子句中指定任何条件。
        • 你可以在一个单独表中同时更新数据。

        当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。

      • update 语句可用来修改表中的数据, 简单来说基本的使用形式为:

        update 表名称 set 列名称=新值 where 更新条件;

        以下是在表 students 中的实例:

        将 id 为 5 的手机号改为默认的 - : update students settel=default where id=5;

        将所有人的年龄增加 1: update students set age=age+1;

        将手机号为 13288097888 的姓名改为 "小明", 年龄改为 19: update students setname="小明", age=19 wheretel="13288097888";

      • UPDATE替换某个字段中的某个字符

        当我们需要将字段中的特定字符串批量修改为其他字符串时,可已使用以下操作:

        UPDATE table_name SET field=REPLACE(field, 'old-string', 'new-string') 
        [WHERE Clause]

        实例:

        以下实例将更新 runoob_id 为 3 的runoob_title 字段值的 "C++" 替换为 "Python":

        UPDATE runoob_tbl SET runoob_title = REPLACE(runoob_title, 'C++', 'Python') where 
        runoob_id = 3;
      • MySQL ALTER命令

        当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

      • 删除,添加或修改表字段

        如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。

        例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

        mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

        使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:

        mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
      • 如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:

        mysql> ALTER TABLE testalter_tbl  DROP i;

        如果数据表中只剩余一个字段则无法使用DROP来删除字段。

      • mysql> ALTER TABLE testalter_tbl ADD i INT;
      • 
        

        如果你现在想把字段 j="" 从="" bigint="" 修改为="" int,sql语句如下:

        mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
      • ALTER TABLE 对 Null 值和默认值的影响

        当你修改字段时,你可以指定是否包含值或者是否设置默认值。

        以下实例,指定字段 j 为 NOT NULL 且默认值为100 。

        mysql> ALTER TABLE testalter_tbl 
            -> MODIFY j BIGINT NOT NULL DEFAULT 100;

        如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。


        修改字段默认值

        你可以使用 ALTER 来修改字段的默认值,尝试以下实例:

        mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
        mysql> SHOW COLUMNS FROM testalter_tbl;
        +-------+---------+------+-----+---------+-------+
        | Field | Type    | Null | Key | Default | Extra |
        +-------+---------+------+-----+---------+-------+
        | c     | char(1) | YES  |     | NULL    |       |
        | i     | int(11) | YES  |     | 1000    |       |
        +-------+---------+------+-----+---------+-------+
        2 rows in set (0.00 sec)

        你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:

        mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
        mysql> SHOW COLUMNS FROM testalter_tbl;
        +-------+---------+------+-----+---------+-------+
        | Field | Type    | Null | Key | Default | Extra |
        +-------+---------+------+-----+---------+-------+
        | c     | char(1) | YES  |     | NULL    |       |
        | i     | int(11) | YES  |     | NULL    |       |
        +-------+---------+------+-----+---------+-------+
        2 rows in set (0.00 sec)
        Changing a Table Type:
      • 修改表名

        如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

        尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

        mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
      • alter其他用途:

        修改存储引擎:修改为myisam

        alter table tableName engine=myisam;

        删除外键约束:keyName是外键别名

        alter table tableName drop foreign key keyName;

        修改字段的相对位置:这里name1为想要修改的字段,type1为该字段原来类型,first和after二选一,这应该显而易见,first放在第一位,after放在name2字段后面

        alter table tableName modify name1 type1 first|after name2;
  • 相关阅读:
    非常高兴,“万能数据库查询分析器”中英文3.01版本测试完成,会尽快完成发布,敬请等待
    OpenGL学习入门之VS2010环境配置
    服务器异常处理:Java Logger
    从3.01版本开始,“万能数据库查询分析器”中英文版本将全部免费
    java算法:顺序查找(有监视哨和无监视哨)
    DELPHI第三方控件及组件大全(安装方法与使用)
    Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
    非常高兴,《彻底删除文件》2.01版本也测试完成,会尽快完成发布,敬请等待
    无Dll插入进程,下载者VC源代码
    剖析WININIT.INI文件与Windows病毒
  • 原文地址:https://www.cnblogs.com/wuyujun/p/11184344.html
Copyright © 2011-2022 走看看