SQL 增删改语句
阅读目录
一:插入数据
把数据插入表中的最简单方法是使用基本的 INSERT 语法。它的要求是需要我们指定表名和插入到新行中的值。
1.1 插入完整的行
比如如下语法:
INSERT INTO User(username, password) VALUES('kongzhi2', '654321');
如上基本的含义是: 将用户名和密码插入到User表中,存储到表中每一列的数据在VALUES子句中给出,必须给每一列提供一个值。如果某列没有值,则应该使用NULL值代替(假设该字段允许NULL值)。各列必须以他们在表定义中出现的顺序填充。
首先我们来查询下user表中的数据;如下所示:

然后我们使用插入操作,INSERT INTO user(username, password) VALUES('kongzhi2', '654321'); 插入一条数据到表中,然后我们继续使用查询该表操作,查询下数据,看看表中是否有该数据。如下图所示:
1.2 插入部分行
比如说,我只给username这个字段插入值,不给password这个字段设置值,可以如下语法代码:
INSERT INTO user(username, password) values ('kongzhi3', null);
INSERT INTO user(username) values ('kongzhi3');
如上这两句代码插入的时候会报错的,或者我只给username插入值,不给password插入值,也会报错的,那是因为username和password 是必填的,不允许为空的。如果某个表中的字段允许为空的话,我们可以不给该值插入的。

为了演示插入部分数据,我们可以在创建一个user2表,该表有2个字段为 username和age字段,都可以允许为空,然后向表中user2中插入username字段,不插入age字段,可以看到,我们再查询下该表,age默认值就变成了 null了。
1.3 插入检索出的数据
什么叫插入检索出的数据呢?就是说,我们有2个表,一个是user表和另一个是user2表,我想把user2表中查询到的数据合并到user表中,那么这样的基本语法需要如下语法:
insert into user(username, password) select username, age from user2;
上面语法的含义是,我首先从user2表中查询username,age的值后,然后把该值合并到 user 表中对应的 username 和 password字段中。但是由于 user2表中的age字段为null,但是user表中的password字段不允许为null,因此会报错,
如下所示:

这边简单的为了演示,我们可以把user2表中的username的值合并到user表中的password的值就可以了。因为user2表中的username值不为空。如下基本语法:
insert into user(username, password) select username, username from user2;
如下图所示:

1.4 从一个表复制到另一个表的数据
我们要将一个表中的数据全部复制到另一个全新的表中,我们可以使用 INSERT INTO 语句。那么它和上面的 INSERT SELECT 语句有什么不同呢?INSERT SELECT 是将数据添加到一个已经存在的表中。而 SELECT INTO 是将数据复制到一个新表中。也就是说 INSERT SELECT 是导出数据,比如上面的从user2表中查询到的数据导出到user表中去。而我们的SELECT INTO 是导入数据,是把某一个表中的数据导入到另一个全新的表中。
比如如下语法:
create table user3 as select * from user2;
如上我们创建一个user3表,然后从user2表中的数据查询出来后,把user2中所有的数据复制到user3中新表中。
如下图所示:

然后我们再查询 user3表看下有如下数据;如下图所示:

二:更新数据
更新表中的数据,我们需要使用 UPDATE 语句。有两种使用UPDATE的方式;
1. 更新表中的特定行。
2. 更新表中的所有行。
2.1 更新表中特定的行。
基本语法是:update user set username = 'xxxx' where id=3;
上面的语法的含义是: 更新表中user中的数据,字段名为 username这个字段,它的条件是根据 id=3 这个条件进行更新的。
如下图所示:

2.2 更新表中特定的行中的多个字段
基本语法是:update user set username = 'yyy', password='aaaa' where id = 3;
如下图所示:

如上更新多个列字段时,使用一条 set 命令,每个 "列=值" 对之间用逗号分隔(最后一列不用逗号)。
2.3 更新表中所有的行。
如果我们想更新表中所有的行,那么我们就不需要where这个条件即可;如下:
update user set username = '我是空智', password = '123456abcder';
如上是更新user表中的username字段和password的字段的所有值更改成为 '我是空智',password="123456abcdef" 的值了,如下所示:
三:删除数据
从一个表中删除数据的话,需要使用DELETE语句。有两种使用DELETE的方式:
1. 从表中删除特定的行。
2. 从表中删除所有的行。
基本语法也是如下:
delete from user where id = 3;
如上语法的含义是:删除user表中的 id = 3 的数据。如下图所示:

3.2 删除表中所有的数据。
如果我们省略where这个条件,就会删除表中所有的数据了。基本语法如下:
delete from user;
执行结果如下所示:

SQL 增删改语句的更多相关文章
- SQL增删改语句
一,插入数据 1.使用 insert ...values 语句插入单行或多行元组数据 insert into 表名 (列名,列名,...,列名) values 值 表名:指被插入数据的表名 列名: ...
- SQL增删改语句常用
创建table: create table tab_name( col1 type; 约束:主键-外键-非空-检查-唯一 col2 type; ); 删除表 : drop table tab_name ...
- 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍
第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...
- Linq to sql 增删改查(转帖)
http://blog.csdn.net/pan_junbiao/article/details/7015633 (LINQ To SQL 语法及实例大全) 代码 Code highlightin ...
- sql增删改查封装
App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...
- 表结构修改以及sql增删改查
修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 ...
- SQL Server高速生成SQL增删改查语句
你还在手写程序生成SQL语句吗?你还在为由于马虎出错的SQL语句而感到无语吗?你还在为不知如何表达复杂的SQL语句而纠结吗?假设你的回答为"是".那你就OUT啦.快来试试应用SQL ...
- sql增删改查-转载
一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdent ...
- SQL 增删改查(具体)
一.增:有3种方法 1.使用insert插入单行数据: insert [into] <表名> [列名] values <列值> insert into Strdents (na ...
随机推荐
- leetcode — path-sum-ii
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...
- sysbench的框架实现介绍
sysbench是一个非常经典的综合性能测试工具,它支持CPU,IO,内存,尤其是数据库的性能测试.那它是怎么做到通用性的呢,总结一句话是大量运用了重载的方法. sysbench总体架构 sysben ...
- Spring Boot (十):邮件服务
Spring Boot 仍然在狂速发展,才几个多月没有关注,现在看官网已经到 2.1.0.RELEASE 版本了.准备慢慢在写写 Spring Boot 相关的文章,本篇文章使用 Spring Boo ...
- DriverManager 驱动管理器类简介 JDBC简介(三)
驱动程序管理器是负责管理驱动程序的,驱动注册以后,会保存在DriverManager中的已注册列表中 后续的处理就可以对这个列表进行操作 简言之,驱动管理器,就是字面含义,主要负责就是管理 驱动 概述 ...
- vb.net MakeWParam
Private Function MakeWParam(loWord As Integer, hiWord As Integer) As Integer ) End Function
- 【c#】队列(Queue)和MSMQ(消息队列)的基础使用
首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择.然后就写两个队列的简单应用. Queue 命名空间 命名空间:System.Collections,不在这里做过多的理论解释,这个东西非 ...
- [Go] golang缓冲通道实现管理一组goroutine工作
通道1.当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道2.无缓冲通道和有缓冲通道,make的第二个参数就是缓冲区大小3.无缓冲通道需要发送和接收都准备好,否则 ...
- 40K刚面完Java岗,这些技术必须掌握
学习是一份苦差事,这句话真的不是说说而已,真的是你认真学习过,才会懂得,学习是多么的辛苦,这点我深有体会,但是我还是想说,没办法,想要更好的生活,你就要不断地努力学习. 所幸的是,程序员这个行业,学习 ...
- Java开发笔记(二十二)神奇的冒号
Java中的标点符号主要有两类用途,一类是运算符,包括加号+.减号-.乘号*.除号/.取余号%.等号=.大于号>.小于号<.与号&.或号|.非号!.异或号^等等,另一类则是分隔符, ...
- 814-Binary Tree Pruning
Description: We are given the head node root of a binary tree, where additionally every node’s value ...