MySQL-增删改语句
数据库增删改语句
插入数据
使用INSERT语句可向指定表中插入数据。INSERT语法的基本结构如下:
INSERT INTO <table_name > (column_name 1, column_name 2…, column_name n)
VALUES(values 1, values 2,…, values n)
其中,column_name 1, column_name 2…, column_name n必须是指定表名中定义的列,而且必须和VALUES子句中的值values 1, values 2,…, values n一一对应,且数据类型相同。
模板:
1.单条数据插入
--1) insert (into) 表名(列名,列名....) values (值,值....)
--2) insert into 表名(列名,列名....) select 值,值....
2.多条插入
1)
insert into 表名(TypeName)
values ('工具类1'),('工具类2'),('工具类3'),('工具类4')
2)
union 去重 union all 允许重复 union all效率比union高
insert Test(MName,Age)
select 'fff',21 union
select 'fff',21
3.克隆表数据
--1) 目标表在数据库已经存在
insert into Test(MName) ---目标表
select TypeName from ProductType --源表
--2)目标表之前数据库中不存在,执行操作时自动创建的
select TypeName into Test2 --目标表
from ProductType --源表
修改数据
UPDATE 语法格式:
UPDATE table_name
SET {column_1 =expression}[,…n]
[WHERE condition]
更新数据
--更新数据 update 几乎不会不用where条件
--主键不可以修改
--如果不加where条件,会把整张表的数据都修改了
update Test set MName='ssss',Age=30
where Id=5 (and | or) 条件
案例:
修改单行数据:
将插入的SQL Server 2012课程的学分改为5分。
UPDATE 课程
SET 学分=5
WHERE 课程名='SQL Server 2012'
修改多行数据:
将所有选修“高等数学”课的同学的成绩加5分。
UPDATE 选课
SET 成绩=成绩+5
WHERE 课程号 IN (SELECT 课程号
FROM 课程
WHERE 课程名='高等数学')
删除数据
--数据删除 :只是删除数据,表还在; 连同表一起删除
--1)删除数据 delete from Table 不加条件,会删除整个表数据,几乎都要加where条件 标识列 值还是接着删除前的值而自增,而不是从初始值开始
--delete语句会造成标识列的值不连续
delete from Test where Id = 20
--如果我们想删除数据,让标识列的值恢复到初始值,怎么办?
truncate table Test --表数据清空,恢复到初始化,标识列也恢复
--表面上看,delete from Test 效果一样.
--truncate效率比delete from Test高.delete每删除一条数据,都会在日志里记录.truncate不会记录日志,不激活触发器,drop truncate 是即时操作,不能rollback,delete update insert 事务中,可以恢复.
--慎用truncate 一旦删除,不能恢复.
语法格式:
DELETE FROM table_name [WHERE search_conditions]
如果省略了WHERE search_conditions子句,就表示删除数据表中全部的数据;如果加上了 [WHERE search_conditions]子句就可以根据条件删除表中的数据。
案例:
删除课程表中没有学分的记录。
DELETE 课程
WHERE 学分 IS NULL
删除选课表中姓名为“汪远东”、选修课程为“1001”的选课信息。
DELETE 选课
WHERE 选课.课程号='1001' AND 学号=(SELECT 学号
FROM 学生
WHERE 姓名='汪远东')
收录于合集 #数据库
7个上一篇T-SQL Alter 语句下一篇Select 查询语句
Linux分布式主任