SQLServer 管理数据

创建表创建数据库

//使用系统数据
 use 
 master
 go
//判断数据库是否存在 如果存在就删除
 if exists(select * from sys.databases where name='Student')
 drop database Student 
go
//创建数据
create database Student
go
//定位到Student数据库
use
Student
go 
//判断表是否存在 如果存在就删除
if exists(select * from sys.objects where name='StuInfo')
drop table StuInfo
go 
//创建表
create table StuInfo
(
// 字段名 数据类型 属性 约束
	ID int not null primary key identity(1001,1),
	Name varchar(20) not null,
	Sex char(2) not null,
	Age int not null 
)
go

//查询整个表
select * from StuInfo
//添加数据
insert into StuInfo values('王某','男','18')
insert into StuInfo values('hehe','男','19')
insert into StuInfo values('徐某','男','20')


//修改数据
update StuInfo set Age=21 where ID='1001'

//删除数据
delete from StuInfo where ID='1002'

常用的约束

名称关键字
主键primary key
外键references
约束check(条件)
唯一键unique
标识列identity(1001,1)
默认值identity

—select语句

selecet查询数据语法格式

select <列名> from <表名> where <条件表达式>

—insert语句

insert语句用于向数据表中插入数据,语法格式

insert into <表名> (列名) values 值

向表中插入多行数据

insert into <表名> 
select <内容> union
select <内容> union
select <内容> 
//union 连接

—update语句

uqdate语句用于修改数据表中的记录,语句格式

update <表名> set <列名=更新值> where 条件表达式
可以在set子句后面更随多个列名以及更新值
<注意:>where 条件很重要,如果没有,就会将整个表此列全改为更新值。

—delete语句

delete 语句用于删除数据表中的数据,语法:

delete from <表名> where 条件表达式
<注意:>如果没有where条件 将会删除表中所有数据

—select…into…语句

select …into…语句用于把查询结果曾放到一个新表中(不存在的表,不可以反复执行)语法:

select 数据 into 新表 from 旧表     --*表是所有数据

—insert into…select…语句

insert into…select…语句可以完成一次出入入多行的功能。(表 必须存在)

insert into 表名(列名列表) select 数据 from 旧表

设置字段别名

三种语法方式:

select 原字段名 AS 字段别名,字段别名=原字段名,源字段名 字段别名 from 表名

综合案例

--指向系统数据库
USE MASTER
GO

--新建名为Students的数据库
IF EXISTS(SELECT * FROM SYSDATABASES WHERE NAME =  'Students')
	DROP DATABASE Students
GO
CREATE DATABASE Students
GO

--指向Students数据库
USE Students
GO

--在当前数据库新建名为StuInfo的表
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'StuInfo')
	DROP TABLE StuInfo
GO
--创建表StudentInfo
CREATE TABLE StuInfo
(--字段名称 数据类型 属性 约束
Sno int NOT NULL  primary key IDENTITY(1701,1),  --设为主键约束  标识列,起始为1701
Sname nvarchar(4) NOT NULL,
Ssex nchar(1)  NULL  ,
Sage int NULL,
Sdept nvarchar(20) NULL,   --院系
Math int  NULL ,										  --此处增加约束(0~100)
English int  NULL									
)
INSERT INTO StuInfo(Sname,Ssex,Sdept,Math,English)
SELECT '小红','女','电信系',null,75 UNION
SELECT '小白','男','电信系',75,72 UNION
SELECT '李洋','男','电信系',71,null UNION
SELECT '小黑','男','计算机系',28,75 UNION
SELECT '小强','男','计算机系',64,95 UNION
SELECT '小兰','女','计算机系',null,null UNION
SELECT '小明','男','计算机系',78,71 UNION
SELECT '小花','女','人文系',49,71 UNION
SELECT '小黄','女','人文系',58,85  UNION
SELECT '小绿','男','人文系',46,50 UNION
SELECT '小红红','女','软件系',46,null

--查看导入数据是否成功
SELECT * FROM StuInfo
GO


--(0)对查询结果筛选
   --(0.1)使用WHERE子句
   --例:查看女生信息
 select * from StuInfo where Ssex='女'
   go
   --(0.2)范围运算符 BETWEEN AND      NOT BETWEEN AND
   --例:查询数学成绩在8090之间的学生信息
 select * from StuInfo where Math between 80 and 90
    go
    
   --思考:BETWEEN AND 换成>  <运算符
   select * from StuInfo where Math > 80 or  Math < 90
   go
   --(0.3) 列表运算符 IN
   --例:查询理工科学生信息
   select * from StuInfo where Sdept in ('电信系','计算机系')
   go
   --0.4)空值判断符
   --例:查询未登英语成绩的学生信息
  select * from StuInfo where English is null
  go
  --查询成绩只要为Null的
   select * from StuInfo where English is null or Math is null
  go
  
   --(0.5) 逻辑运算符 AND  OR NOT 

   --(0.6) 模式匹配符 LIKE NOT LIKE
   --查询学生名字中带有'红'字的学生信息
  select * from StuInfo  where Sname like '%红%'
  go
--(1)使用ORDER BY 排序  ASC DESC
--例:对全班数学成绩从大到小排序
select * from StuInfo  ORDER BY Math desc
go
--对性别进行排序 
select * from StuInfo  ORDER BY Ssex desc
go
--女生的数学从小到大排序
select * from StuInfo where Ssex='女'  ORDER BY Math asc
go
--(2)使用ORDER BY 对多列进行排序
--例:数学成绩相同时,按照英语成绩从高到低排
select * from StuInfo ORDER BY Math desc,English desc
go
--(3)ORDER BYTOP关键字一起使用
--例:数学成绩排序之后,只显示前三名。即:查看全班前三名。
select top 3 * from StuInfo order by Math desc
go
--思考:查看全班末三名。
select top 3 * from StuInfo order by Math asc
go
--(4)SUM()函数计算字段累加和   只能用于数值字段
--例:求小白同学两门科目的总分

select SUM(Math+English)  as 求和 from StuInfo where Sname='小白'
--思考:求每位同学两门科目的总分
select Sname,SUM(Math+English) as 求和 from StuInfo group by Sname
go
--(5)使用AVG函数计算字段的平均值
--:求全班数学的平均分
select AVG(Math) as 平均值 from StuInfo

--(6)使用MAXMIN函数计算字段的最大值和最小值
--例:求数学的最高分和最低分
select MAX(Math) 数学最高分 from StuInfo
select MIN(Math) 数学最低分 from StuInfo --最小值没有null

--(7)使用COUN函数统计记录行数
--例:查询表中学生人数
select COUNT(*) from StuInfo
--思考:查询表中有几个院系.提示:利用COUNTDISTINCT(过滤重复)
select COUNT(DISTINCT Sdept) from StuInfo 
go
--(8) 使用GROUP BY对查询结果分组
--例:查询每个系有多少人。
select Sdept,COUNT(*) 人数 from StuInfo group by Sdept
go
--例:各个院系的数学平均分分别显示。
select Sdept,AVG(Math) 平均分 from StuInfo group by Sdept
go
--思考:查询女生人数和男生人数,并显示。GROUP BY COUNT
select Ssex,COUNT(*) from StuInfo group by Ssex
go
--(9)使用HAVING子句
--例:查询各个院系数学的平均分。找出及格的学院。
select Sdept,AVG(Math) from StuInfo group by Sdept HAVING AVG(Math)>60
go 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值