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;

猜你喜欢

转载自www.cnblogs.com/wuyujun/p/11184344.html