最基本的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,'李同学','北京市朝阳区','1234567@qq.com')
![](https://img.haomeiwen.com/i11875313/54a9e1ed88cfe38a.png)
查询已插入的数据:SELECT是最常使用的SQL语句
SELECT * FROM customers;
![](https://img.haomeiwen.com/i11875313/53d870a1f71d08de.png)
虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的SQL语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使可得到这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的。如果这样做,有时难免会出问题。
根据列插入数据
编写方法如下
INSERT INTO customers(userid,name,adress,email) values('10011','黄同学','北京市通州区','1234789@qq.com')
此例子完成与前一个INSERT语句完全相同的工作,但在表名后 的括号里明确地给出了列名。在插入行时,MySQL将用VALUES 列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定的列名。第二个值对应于第二个列名,如此等等。
![](https://img.haomeiwen.com/i11875313/d14459114713c932.png)
注意:
- 一般不要使用没有明确给出列的列表的INSERT语句。使用列的列表能使SQL代码继续发挥作用,即使表结构发生了变化。
- 不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。
多行插入:
INSERT INTO customers(userid,name,adress,email) values ('10011','黄同学','北京市通州区','1234789@qq.com'), ('10012','黄同学','北京市通州区','1234789@qq.com'), ('10013','黄同学','北京市通州区','1234789@qq.com');
![](https://img.haomeiwen.com/i11875313/9fc7bfe514fc424f.png)
将一个表里的数据插入到另一个表中
insert into 表 (列名,列名...) select 列名,列名... from 表
下面sql语句实现的功能是将customers中的字段插入到了customers1中
![](https://img.haomeiwen.com/i11875313/3e3ced81129aebbe.png)
总结: 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删除整行而不是删除列。为了删除指定的列.
![](https://img.haomeiwen.com/i11875313/bf17cb58ee2e21d3.png)
-
从表中删除所有行。
delete from 表
改(更新)
更新(修改)表中的数据,可使用UPDATE语句。可采用两种方 式使用UPDATE:
- 更新表中特定行;
- 更新表中所有行。
UPDATE语句非常容易使用,甚至可以说是太容易使用了。基本的 UPDATE语句由3部分组成,分别是:
- 要更新的表;
- 列名和它们的新值;
- 确定要更新行的过滤条件。 示例如下:
UPDATE customers SET email='123@sina.com' where userid=10011;
![](https://img.haomeiwen.com/i11875313/b3732a17f761a057.png)
UPDATE语句总是以要更新的表的名字开始。在此例子中,要更新的表的名字为customers。SET命令用来将新值赋给被更新的列。如这里所示,SET子句设置email列为指定的值:
SET email = ‘123@sina.com’
UPDATE语句以WHERE子句结束,它告诉MySQL更新哪一行。没有 WHERE子句,MySQL将会用这个电子邮件地址更新customers表中所有行,这不是我们所希望的。
更新多个列
更新多个列的语法稍有不同:
在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间 用逗号分隔(最后一列之后不用逗号)。在此例子中,更新userid为10012的email和name列。UPDATE customers SET email='345@qq.com', name = '刘起' where userid=10012;
![](https://img.haomeiwen.com/i11875313/5d803d75527cc445.png)
为了删除某个列的值,可设置它为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子句不正确。 最后提示:对于数据库的操作移动要严谨,数据库一旦修改,没有恢复的操作
网友评论