第五单元 表数据操作
在数据库中选择“编辑前200行”选项,然后就可以手动直接输入数据到表行中了。
手动输入的数据是确定的,而且只能一点点输入,遇到大量的数据的时候,操作会变得很繁重,而且它不满足大多数业务的需求,而且不利于更新。
-
在对象资源管理器中,右键点击你要打开的表,然后选择 “Edit Top 200 Rows(编辑前200行)” :
-
然后就可以将数据直接输入到表中了
2. T-SQL 方式
1. 添加数据
数字不需要加单引号(加了也不会报错,但不建议这么干),字符类型要加单引号(C#是双引号表示字符串)。
自增
create table Student ( Id int primary key identity, -- 每添加一条数据,Id从1开始,每次自增1 NickName nvarchar(15), -- unicode StudentNo char(11) , -- 学号 Sex nchar(2), Account varchar(20), -- 账号 [Password] varchar(50) -- 密码 ); create table Student ( Id int primary key identity(2,2), -- 每添加一条数据,Id从2开始,每次自增2 NickName nvarchar(15), -- unicode StudentNo char(11) , -- 学号 Sex nchar(2), Account varchar(20), -- 账号 [Password] varchar(50) -- 密码 ); insert into Student values ('娜娜','2002','女','user3','123456'), ('娜娜','2002','女','user3','123456'), ('娜娜','2002','女','user3','123456');
完整写法
-- insert into 表名(字段1,字段2,...) values(字段值1,字段值2,...) insert into UserInfo(UserName,DeptId,Sex,Age) values('任我行码农场','6','未知','18') insert into UserInfo(UserName,DeptId,Sex,Age,CreateTime) values('刘大侠','6','未知','18','2020-04-20')
-
Id 如果 是自增,不需要手动的添加值
-
左边列的数目必须与右边列的数目要一样
-
insert 添加数据时,括号中的字段必须要有,字段名不能随便写
当表中其他字段可以为空时,其他字段可以不用赋值,即
insert into UserInfo(UserName,Sex) values('家宝','男')
简写添加
insert into UserInfo values('谢大侠','7','保密','25','2012-02-25')
这种方式不需要指定字段名称,但是需要指定所有字段的值(除了自增的主键不需要),并且默认值也需要手动加上,不可省略。
使用简写的方式,如果我不想给所有字段都赋值,怎么办?(把不想赋值的字段赋null(前提是这个字段可以允许为空))
insert into UserInfo values('高大侠','7','保密',null,null)
批量添加
insert into UserInfo values
('张大侠','7','保密',null,null),
('胡大侠','7','男',null,null),
('翟大侠','6','男',68,'2020-02-10'),
('杨大侠','3','女',18,'2020-03-10') ;
2. 修改数据
-- 1.将密码修改为 666666 -- 修改的语法结构:update 表 set 要修改的字段1= 字段1值,字段2 = 字段2值 update UserInfo set Pwd='666666' -- 这样修改会把所有的数据都修改了 -- 现在将 编号为3,2 的用户姓名 分别修改为 张三,李四 -- 语法结构: update 表 set 要修改的字段1= 字段1值,字段2 = 字段2值 where 条件字段=条件值 update UserInfo set UserName='张三' where Id=3 update UserInfo set UserName='李四' where Id=2 -- 将密码为 666666 并且姓张的同学的 年龄 修改为 25 -- %:0-n 个任意字符 update UserInfo set Age=25 where Pwd='666666' and UserName like '张%' -- 将性别为男并且姓黄的同学的角色 修改为 超级管理员 -- 0:男 1:女 2:未知 3:保密 update UserInfo set RoleId='853d469f-7906-4eb6-9034-e4e1314db331' where Sex=0 and UserName like '黄%'
-- 将 账号包含了 admin 并且 年龄大于30岁的同学的 密码修改为 1qaz2wsx 年龄 修改为 25岁 update UserInfo set Pwd='1qaz2wsx',Age=25 where Account like '%admin%' and Age>30
3. 删除数据
-- 删除用户表中的数据 delete from Userinfo select * from UserInfo -- 查询用户表 -- 删除张三,李四两位用户 Delete from UserInfo where UserName='张三' or UserName= '李四' -- in:在...里面 delete from UserInfo where UserName in('张三','李四') -- 删除用户编号为:4,5,6 并且 性别 =3 的用户信息 delete from UserInfo where Id in('4','5','6') and Sex='3' 或者 delete from UserInfo where Id in(4,5,6) and Sex=3
什么情况下,一定需要加引号?
-
字符串,一定需要加引号,还有日期,时间,中文
-
数字:可加可不加, 建议不要加
4. 清空数据
-- 如何清空数据 delete from RoleInfo -- 删除用户表中的数据 delete from Userinfo select * from UserInfo -- 查询用户表 -- 清空数据 truncate table UserInfo ;
truncate 与 delete 的区别
-
truncate 是真正意义上的清空, 不能加任何查询条件,自增id 会重置
-
delete 只是删除数据,如果Id是自增,则自增种子不会从头开始。
5. 联级删除,联级更新
-- 角色表 create table RoleInfo ( Id uniqueidentifier primary key, RoleName varchar(50) not null , CreateTime datetime not null default getdate() ); go -- 用户表 create table UserInfo ( Id int primary key identity, UserName varchar(50) not null, -- 联级删除:on delete cascade,联级更新 RoleId uniqueidentifier not null foreign key references RoleInfo(Id) on delete cascade on update cascade, Account varchar(50) not null, Pwd varchar(50) not null , Sex tinyint not null , Age tinyint not null ); go
配套视频链接:【阶段二】 - SQLServer 基础(超级详细,口碑爆盆)_哔哩哔哩_bilibili
海阔平鱼跃,天高任我行,给我一片蓝天,让我自由翱翔。
热门相关:青莲剑说 离婚合约:前妻的秘密 觅仙道 跟总裁假结婚的日子 青莲剑说