SQl 数据库的管理 增,删,改,查

补充点: 外键的使用

1.插入语句

一条数据插入:字段名 相当于这个表里面的属性

insert into 表名称(字段名1,字段2,.....)values(值1,值2,......)

 多条数据插入:
   方式一:insert into 表名称(字段名1,字段名2,...)select 值1,值2,... union select 值1,值2,...
   方式二:insert into 表名称 values(值1,值2,值3,....),(值1,值2,值3,....),......;   

2.修改语句

列名称 表中的属性 只是修改查看时候的名称 表中的值还是没有变的

update 表名称 set 列名称=新值 where 列名称=某值

3.删除语句

delete from 表名称 --删除

truncate table 表名  --truncate语句不能跟where条件,无法根据条件来删除,只能全部删除数据。

drop from 表名 --删除表结构和数据

4.查询表格

select* from 表名称 查询表格所有数据

5.like通配符

_         标识一个字符

%        表示任意长度的字符串

[]        括号中所指定范围内的一个字符

[^]        不在括号中所指定的范围内的一个字符

6.运算符:

>、<、>=、<=、!、=、<>(不等于)

7.排序 

order....by 

 asc  默认的升序排序

desc 要写出来的 降序排序

select * from tb_student where ssex = '男' order by sage;--语法  根据年龄排序  所有的男性tb_表名 ssex 性别   sage 年龄

8. top 查询中选前面多少行,percent 拿到表中百分之多少的数据

--取前几条数据  top  
--关键字所处位置  select后面
--查询年龄最大的一位
select top 1 * from tb_student order by sage desc;

--percent  百分比  
--拿到表中50%的数据。
select  percent 50 * from tb_student;

9.截断表中所有的数据 就是初始化一样 作用如果表格使用了标识符identity(种子就是开始的值,每次增加的值),这个标识符 删除表格里面的数据后 标识符就不会从原有的种子那个值开始 所以用截止初始化表格 就可以让标识符从最开始的初始化值开始!!!!

--截断表中所有的数据
truncate table tb_student;

truncate table 表名 ;

引用代码    

--03.sqlserver 数据管理(增删改查)
--在表格已创建好的情况下,对表格进行新增数据,修改数据,删除数据,根据需求查询到指定数据
--通过sql脚本进行操作。
--新增:insert  
--删除:delete   
--修改:update  
--查询:selec
---------------------------------------------------------------
--准备工作
create database db_T281_1115;
use db_T281_1115;
drop table tb_student;
create table tb_student
(
	sid int primary key identity(1,1),--编号  identity(1,1):标识列
	sname varchar(100) not null,--姓名
	ssex varchar(2) not null check(ssex in('男','女')),--性别
	sage int check(sage >=10 and sage <=30),--年龄
	saddress varchar(100) default '浪琴湾',--地址
	stel varchar(100)--电话
)
/*
1.新增操作:将数据通过脚本的方式插入到指定的数据表中
关键词:insert(插入)  into(到....)  value(值)
语法:insert into tb_表名(属性1,属性2,属性3,...) values
	  (值1,值2,值3,...);
注意事项:
	(1)当插入成功后会提示:(1 行受影响)
	(2)如有字段(属性)有默认值,可以省略。不是default修饰也可以省略
		表名后面的属性必须与values后面的值的个数以及顺序必须一致。	  
	(3)当插入数据时,如果表中的全部属性全部要进行插入时,
		表名后面的属性可以省略。
	(4)当表中的编号在插入时,如果是有顺序的,可以通过
		"标识列"让系统帮助我们自动表示,用户就不能手动维护。
		前提:这个属性必须要用"主键约束"定义
		
			标识列:identity(参数1,参数2)
				参数1:种子
				参数2:增长量
				
	(5)多行插入
		只需一个insert就可以实现插入多行数据
		insert into tb_表名 values
		(),(),();
*/
insert into tb_student(sname,ssex,sage,saddress,stel) 
values('杨威','男',18,'湖南省长沙市玉兰路隔壁网吧','1563767326');

insert into tb_student(sname,ssex,sage,stel) 
values('香肠','女',28,'15637633336');

insert into tb_student(sname,ssex,sage) 
values('章鱼','女',18);

insert into tb_student
values('康媳妇','男',22,'湖南省长沙市玉兰路隔壁网吧','1563337326');

insert into tb_student values
('东方不败','女',23,'黑木崖','110'),
('唐烨','男',13,'湖南浪琴湾','110'),
('唐铨','男',13,'长沙市浪琴湾','110'),
('唐洁','女',22,'和南浪琴湾','110'),
('唐师傅','男',21,'黑木崖浪琴湾','110'),
('唐养胃','女',18,'邵阳玉兰路','110'),
('瑜伽','男',16,'黑木崖玉兰路','110');

--------------------------------------------------------
/*
修改:update修改  set  设置|更新
作用:1.针对全部记录	2.针对某一个记录
1.针对全部记录 没有条件
update tb_表 set 某属性 = '修改后的新值'

2.针对某一个记录  有针对性的 条件(where)--当....的时候
update tb_表 set 某属性 = '修改后的新值' where 某属性 = '某值';

3.当修改一条记录中多个属性时,只需要使用逗号隔开即可。
*/
--将学生信息表中所有人的年龄+2岁
update tb_student set sage = sage+2;
--将电话都修改为120
update tb_student set stel = '120';

--当学号为3的情况下,修改他的姓名为:谢文建
update tb_student set sname = '谢文建' where sid = 3;
--如果年龄在16-22岁之间,修改他们的电话为15084961293
update tb_student set stel = '15084961293' 
where sage >=16 and sage <=22;
--当学号为6的情况下,修改他的全部信息(不包括主键)
update tb_student set sname = '杜欣露' , ssex = '男',
sage = 18,saddress = '湖南省长沙市岳麓区',stel = '1764327337'
where sid = 6;

------------------------------------------------------------------
/*
删除:delete
目的:单个,全部
1.删除全部 不加条件
delete from tb_表
2.删除单个  加条件
delete from tb_表 where 某属性 = '某值'
*/
--删除学号为9的信息
delete from tb_student where sid = 9;
--删除信息表中的所有的男生
delete from tb_student where ssex = '男';
--删除所有数据
delete from tb_student;
--拓展:截断表中所有的数据,类似delete删除
--区别:如果表中属性没有设置标识列,无区别
--如果设置了标识列,delete删除后,再次添加数据,标识列不会归零
--truncate截断后,再次添加数据,标识列会归零。
--特别注意:truncate截断的语法后不能接where
--truncate table 表名;

--截断表中所有的数据
truncate table tb_student;


-------------------------------------------------------------
/*
查询:select
语法:很杂乱,关键字太多了
*/
--1.基础查询语法(查询所有)
--select 属性1,属性2,属性3,属性4,... from tb_表;

--需求:查询student表中所有的数据
--select sid,sname,ssex,sage,saddress,stel from tb_student;
--注意:当查询数据是所有的属性时,可以使用'*'替代。
select * from tb_student;
--查询指定的字段
--查询并显示所有学员的姓名,性别,年龄
select sname,ssex,sage from tb_student;

--2.别名:当属性名过长时,可以用简短的字符替代,不会破坏表的结构
--(1)
select sname as '姓名',ssex as '性别' from tb_student;
select sname 姓名,ssex 性别 from tb_student;--最实用
--(2)
select sname  '姓名',ssex  '性别' from tb_student;
--(3)
select '姓名' = sname ,'性别' = ssex   from tb_student;

--3.条件查询  限制查询指定的数据   where  当....时候
--select * from tb_表 where 某属性 = '某值'
--查询所有的女生
select * from tb_student where ssex = '女'
--查询学号为1的学员信息,显示姓名,年龄
select sname,sage from tb_student where sid = 1;
--查询年龄在18-25岁之间的学员有哪些?
select * from tb_student where sage >=18 and sage <=25;
--在....之间   between ....and
select * from tb_student where sage between 18 and 25;
--查询表中所有的女生并且年龄在18-22岁之间
select * from tb_student where ssex = '女' and sage between 18 and 22;
--查询所有姓唐的学员信息。约等于
--大概等于  包含
--模糊查询 like  像....
--like关键字不能单独使用,一般于匹配符一起使用
--	%  替代任意个的任意字符
--	_  替代一个任意字符
--select * from tb_student where sname = '唐'--错误的写法
--查询所有姓唐的学员信息。
select * from tb_student where sname like '唐%';
--查询所有行唐的学员信息且唐后面只有一个字。
select * from tb_student where sname like '唐_';
--查询所有住在浪琴湾的学员信息
select * from tb_student where saddress like '%浪琴湾%'
--查询电话以6结尾的学员信息
select * from tb_student where stel like '%6';
---------------------------------------------------------------------
--排序:order by    升序(asc)默认,   降序(desc)
--排序所处的位置 在表后面可以  再where后面也可以。where条件完成后在家order by where 不能用在order后面
--查询学员信息表后按照年龄降序排序  
select * from tb_student order by sage desc;
--查询所有的男生,然后年龄升序。
select * from tb_student where ssex = '男' order by sage;
select * from tb_student where ssex = '男' order by sage asc;
--注意事项:当一个select语句中出现多个字段排序,只需逗号隔开即可
--但是:结果可能不是我们想要的,就是正确的。

--先学号降序,然后年龄升序
select * from tb_student order by sid desc,sage asc;

--取前几条数据  top  
--关键字所处位置  select后面
--查询年龄最大的一位
select top 1 * from tb_student order by sage desc;

--percent  百分比  
--拿到表中50%的数据。
select  percent 50 * from tb_student;






 补充代码   is null 是空的使用和去除重复查询的方法 

--去重重复 distinct
--查看表中的性别有哪些?
 select distinct(ssex) from tb_student;



--select distinct|top|percent|as|* from tb_表 where..> < > =.between and order by asc|desc
--!=     <> 不等于
select * from tb_student where ssex <> '男'

--is null  是空
insert into tb_student
values('康媳妇','男',22,'湖南省长沙市玉兰路隔壁网吧',null);
select * from tb_student;
--查询电话为空的
select * from tb_student where stel is null;
--查询电话不为空
select * from tb_student where stel is not null;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值