表的内容操作

最基本的crud操作:

增(insert into)

顾名思义,INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询的结果。

首先创建一个表

CREATE TABLE customers ( userid int NOT NULL AUTO_INCREMENT, name char(50) NOT NULL, address char(200) NOT NULL, email char(50) NOT NULL, PRIMARY KEY(userid) );

插入完整行

INSERT INTO customers values(10010,'李同学','北京市朝阳区','[email protected]')

DeepinScrot-5214

查询已插入的数据:SELECT是最常使用的SQL语句

SELECT * FROM customers;

DeepinScrot-5549

虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的SQL语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使可得到这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的。如果这样做,有时难免会出问题。

根据列插入数据

编写方法如下

INSERT INTO customers(userid,name,adress,email) values('10011','黄同学','北京市通州区','[email protected]')

此例子完成与前一个INSERT语句完全相同的工作,但在表名后 的括号里明确地给出了列名。在插入行时,MySQL将用VALUES 列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定的列名。第二个值对应于第二个列名,如此等等。

DeepinScrot-0305

注意:

  • 一般不要使用没有明确给出列的列表的INSERT语句。使用列的列表能使SQL代码继续发挥作用,即使表结构发生了变化。
  • 不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。

多行插入:

INSERT INTO customers(userid,name,adress,email) values ('10011','黄同学','北京市通州区','[email protected]'), ('10012','黄同学','北京市通州区','[email protected]'), ('10013','黄同学','北京市通州区','[email protected]');

DeepinScrot-4310

将一个表里的数据插入到另一个表中

insert into 表 (列名,列名...) select 列名,列名... from 表

下面sql语句实现的功能是将customers中的字段插入到了customers1中
DeepinScrot-0024

总结: insert into 表 values (值,值,值...) insert into 表 (列名,列名...) values (值,值,值...) insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表

删除数据

为了从一个表中删除(去掉)数据,使用DELETE语句。可以两种方式使用DELETE:

  • 从表中删除特定的行; 下面的语句从customers表中删除一行:

    DELETE FROM customers WHERE userid = 10010;

    这条语句很容易理解。DELETE FROM要求指定表名(从哪个表中删除数据)。WHERE子句过滤要删除的行。在这个例子中,只删除同学10010 。如果省略WHERE子句,它将删除表中每个同学。 DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指定的列.

DeepinScrot-1826
  • 从表中删除所有行。

    delete from 表

改(更新)

更新(修改)表中的数据,可使用UPDATE语句。可采用两种方 式使用UPDATE:

  • 更新表中特定行;
  • 更新表中所有行。

UPDATE语句非常容易使用,甚至可以说是太容易使用了。基本的 UPDATE语句由3部分组成,分别是:

  • 要更新的表;
  • 列名和它们的新值;
  • 确定要更新行的过滤条件。 示例如下:

UPDATE customers SET email='[email protected]' where userid=10011;

DeepinScrot-0959

UPDATE语句总是以要更新的表的名字开始。在此例子中,要更新的表的名字为customers。SET命令用来将新值赋给被更新的列。如这里所示,SET子句设置email列为指定的值:

SET email = ‘[email protected]

UPDATE语句以WHERE子句结束,它告诉MySQL更新哪一行。没有 WHERE子句,MySQL将会用这个电子邮件地址更新customers表中所有行,这不是我们所希望的。

更新多个列

更新多个列的语法稍有不同:

UPDATE customers SET email='[email protected]', name = '刘起' where userid=10012;

在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间 用逗号分隔(最后一列之后不用逗号)。在此例子中,更新userid为10012的email和name列。
DeepinScrot-1716

为了删除某个列的值,可设置它为NULL(注意:该字段在表中的定义必须允许为NULL值才可以)

UPDATE customers SET email = NULL WHERE userid = 10012;

其中NULL用来去除email列中的值。

更新和删除的指导原则(注意事项)

  • 使用的UPDATE和DELETE语句全都具有WHERE子句,这样做的理由很充分。如果省略了WHERE子句,则UPDATE或DELETE将被应用到表中所有的行。换句话说,如果执行UPDATE而不带WHERE子句,则表中每个行都将用新值更新。类似地,如果执行DELETE语句而不带WHERE子句,表的所有数据都将被删除。

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句。

  • 保证每个表都有主键尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范围)。

  • 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。 最后提示:对于数据库的操作移动要严谨,数据库一旦修改,没有恢复的操作

你可能感兴趣的:(表的内容操作)