Sql 数据库的新建,表的新建,约束操作,简单查询

1.数据库的建立

2.带有if判断语句的表的建立,若表存在则删除重建

3.查看表所有的约束

4.添加和删除约束

5.表的查询:模糊插叙like等...


create database SchoolDB;
use SchoolDB 
go

-- 学生信息表
if OBJECT_ID(N'StuInfo',N'U') is not null        -- 如果该表已经存在,则现删除再建立
	drop table  StuInfo
	create table StuInfo(
		StuID int primary key,  -- 学号
		StuName nvarchar(10),   -- 姓名
		StuCity nvarchar(50),   -- 所在城市
		StuAge int,             -- 年龄
		MajorID int          -- 专业编号
	);

-- 专业信息表
if OBJECT_ID(N'MajorInfo',N'U') is not null     -- 如果该表已经存在,则先删除该表,再重新建立该表
	drop table MajorInfo
	create table MajorInfo(
		MajorID int primary key not null,-- 专业编号
		MajorName nvarchar(30)           -- 专业名称
	);
-- 课程表
if OBJECT_ID(N'CourseInfo',N'U') is not null    -- 如果该表已经存在,则先删除再建立
	drop table CourseInfo
	create table CourseInfo(
		CourseID int not null,      -- 课程编号
		CourseName nvarchar(20)     -- 课程名称
	);
-- 选课表
if OBJECT_ID(N'SelCourse',N'U') is not null
	drop table SelCourse
	create table SelCourse(
		StuID int not null,               -- 学生学号
		CourseID int not null,            -- 课程编号
		Score float                       -- 课程分数
	);
	
-- 查看所有约束
select *from sysobjects where parent_obj in(select id from sysobjects where name='SelCourse');
-- 添加主键约束
alter table CourseInfo add constraint PK_CourseInfo primary key(CourseID);
alter table SelCourse add constraint PK_SelCourse primary key(StuID,CourseID);
-- 添加外键约束
alter table  StuInfo add constraint FK_StuInfo_MajorInfo foreign key (MajorID) references MajorInfo;
alter table SelCourse add constraint FK_CourseInfo foreign key(CourseID) references CourseInfo;
alter table SelCourse add constraint FK_SelCourse_StuInfo foreign key(StuID) references StuInfo;
-- 删除主键
alter table SelCourse drop constraint PK_SelCourse;

-- 添加数据
-- 向StuInfo添加数据
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1001,'Hello','江西南昌',21,20001); -- 哲学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1002,'Amli','巴基斯坦',22,20006);  -- 物理学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1003,'War','阿欧斯',21,20005);     -- 数学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1004,'Warys','阿修罗',24,20004);   -- 化学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1005,'Piesf','北京',14,20003);     -- 文学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1006,'Fusnas','上海',34,20002);    -- 音乐
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1007,'Mlks','南昌',12,20002);      -- 音乐    
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1008,'Pols','海南',36,20000);      -- 天文学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1009,'oosa','龙南',26,20001);      -- 哲学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1010,'ddawa','长沙',25,20004);     -- 化学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1011,'Dwad','常熟',24,20005);      -- 数学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1012,'Osjsa','美国',23,20006);     -- 物理学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1013,'Posangdas','纽约',28,20004); -- 化学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1014,'Yhndsg','休斯敦',21,20001);  -- 哲学
insert into StuInfo(StuID,StuName,StuCity,StuAge,MajorID)values(1015,'Cgajjd','印度',55,20003);    -- 文学
-- 查询
select*from StuInfo;

-- 插入专业表
insert into MajorInfo(MajorID,MajorName)values(20001,'哲学');
insert into MajorInfo(MajorID,MajorName)values(20002,'音乐艺术');
insert into MajorInfo(MajorID,MajorName)values(20003,'文学');
insert into MajorInfo(MajorID,MajorName)values(20004,'化学');
insert into MajorInfo(MajorID,MajorName)values(20005,'数学');
insert into MajorInfo(MajorID,MajorName)values(20006,'物理学');
insert into MajorInfo(MajorID,MajorName)values(20007,'核物理学');
insert into MajorInfo(MajorID,MajorName)values(20009,'计算机科学');
insert into MajorInfo(MajorID,MajorName)values(20000,'天文学');
-- 查询
select *from MajorInfo;

-- 插入课程表
insert into CourseInfo(CourseID,CourseName) values(101,'大学英语');
insert into CourseInfo(CourseID,CourseName) values(102,'信号与系统');
insert into CourseInfo(CourseID,CourseName) values(103,'高等数学');
insert into CourseInfo(CourseID,CourseName) values(104,'数字电路基础');
insert into CourseInfo(CourseID,CourseName) values(105,'电机学');
-- 查询
select *from CourseInfo;

-- 插入选课表
insert into SelCourse(StuID,CourseID,Score) values(1001,101,89.5);
insert into SelCourse(StuID,CourseID,Score) values(1002,102,99.5);
insert into SelCourse(StuID,CourseID,Score) values(1003,103,87.9);
insert into SelCourse(StuID,CourseID,Score) values(1004,104,76.7);
insert into SelCourse(StuID,CourseID,Score) values(1005,105,99.2);
insert into SelCourse(StuID,CourseID,Score) values(1006,101,68.7);
insert into SelCourse(StuID,CourseID,Score) values(1007,102,54.6);
insert into SelCourse(StuID,CourseID,Score) values(1008,103,12.3);
insert into SelCourse(StuID,CourseID,Score) values(1009,104,90);
insert into SelCourse(StuID,CourseID,Score) values(10010,105,100);
insert into SelCourse(StuID,CourseID,Score) values(10011,101,90.2);
insert into SelCourse(StuID,CourseID,Score) values(10012,102,98.2);
insert into SelCourse(StuID,CourseID,Score) values(10013,103,66.5);
insert into SelCourse(StuID,CourseID,Score) values(10014,104,77.8);
insert into SelCourse(StuID,CourseID,Score) values(10015,105,89.2);
insert into SelCourse(StuID,CourseID,Score) values(1001,101,89.4);
insert into SelCourse(StuID,CourseID,Score) values(1002,102,89.5);
insert into SelCourse(StuID,CourseID,Score) values(1003,103,99.3);
insert into SelCourse(StuID,CourseID,Score) values(1004,104,92);
insert into SelCourse(StuID,CourseID,Score) values(1005,105,93);
--查询
select *from SelCourse;
select *from CourseInfo;
select *from MajorInfo;
select *from StuInfo;

-- 二、查询操作
--1.基本查询
--从表中查询某些列的值,这是最基本的查询语句
--语法:select 列名1,列名2,列名3,...... from 表名
select *from CourseInfo;
update CourseInfo set CourseName='计算机网络' where CourseID='101';

select StuID,StuCity,StuName from StuInfo;
update StuInfo set StuCity='台湾' where StuID=1004;

--2.where条件
--作用:按照一定的条件查询数据
--语法:
/* 
	select 列名1,列名2...
	from 表名
	where 列名 运算符 值
	
	运算符 描述
	= 等于
	<> 不等于
	>  大于
	<  小于
	>= 大于等于
	<= 小于等于
	between 在某个范围内
	like    相似,搜索某种模式
 */
 
 select *from StuInfo;
 -- 例如:查询年龄小于22岁的学生所有信息
 select *from StuInfo where StuAge between 0 and 21;
 select *from StuInfo where StuAge<22;
 select *from StuInfo where StuAge<=21;
 
 --3.between
 select *from StuInfo;
 -- 从学生中查询年龄在20-30岁之间的人的学号,姓名和专业信息
 select StuID '学号',StuName '姓名',MajorID '专业',StuAge '年龄'
 from StuInfo
 where StuAge between 20 and 30; 
 
 --4.like
 -- 作用:模糊查询。like关键字与通配符一起使用
 --   通配符         描述
 --     %        替代一个或多个字符 
 --     _        替代一个字符
 --[charlist]    字符列中的任何单一字符
 --[^charlist]   不在字符列中的任何单一字符
 
 -- 1) 查询姓名为P开头为的学生信息
 select *from StuInfo where StuName like 'P%';
 -- 2) 查询姓名最后一个字母为D的同学
 select *from StuInfo where StuName like '%d';
 -- 3) 查询姓名带有字母a的同学
 select *from StuInfo where StuName like '%a%';
 -- 4) 查询姓名为4个字母的同学,并且开头为A
 select *from StuInfo where StuName like '____';
 select *from StuInfo where StuName like 'A___';
 -- 5) 查询姓名开头为P或W的同学
 select *from StuInfo where StuName like '[PW]%';
 -- 6) 查询姓名开头字母不为P和W的学生信息
 select *from StuInfo where StuName like '[^PW]%';
 
 -- 5、and
 -- and在where子语句把两个或者多个条件结合起来,表示和的意思,多个条件可以同时执行
 -- 查询年龄大于18岁,并且开头字母为d的同学
 select *from StuInfo where StuAge>18 and StuName like 'd%';
 
 --6、or
 -- or在where语句中可以把两个或者多个条件结合起来
 -- 查询姓名开头为'A','W'或'P'的学生信息
 select *from StuInfo where StuName like 'A%' or StuName like 'W%' or StuName like 'P%';
 
 --7、not
 -- 否定 ,取反的意思。
 -- 查新姓名开头字母不为'A'的同学的信息
 select *from StuInfo where StuName not like 'A%';
 
 -- 8、order by
 -- 排序,对需要查询后的结果集进行排序
 -- 标志    含义    说明
 -- ASC     升序    默认值  ascend
 -- DESC     倒序           descend

 -- 查询学生信息的表的学号,姓名,年龄,并且分别按年龄升序,降序排序
 select StuID,StuName,StuAge from StuInfo order by StuAge DESC;
 select StuID,StuName,StuAge from StuInfo order by StuAge ASC;
 
 -- 9、as       (Alias)
 -- 为指定列名称和表名指定别名
 -- 作用:将查询的列,或者指定需要的名字,如果表名太长,就可以用别名简称
 
 -- 1)将结果列改为需要的名称
 Select StuID as '学号',StuName as '姓名' 
 from StuInfo;
 -- 2) 用表名的别名,直接标志列的来源
 select S.StuID,S.StuName, S.StuCity,S.MajorID,M.MajorName  
 from StuInfo as S 
 left join 
 MajorInfo as M 
 on S.MajorID=M.MajorID;
 -- 3) 在合计函数中,结统计记录的条数
 select COUNT(StuID) as '学生人数' from StuInfo;
 
 -- 10、distinct
 -- 含义不同
 -- 作用查询是忽略重复的值
 -- 语法: select distinct 列名 from 表名

 -- 查询学生所在的城市名称,排除重复
select distinct StuCity from StuInfo;
 
 -- 查询成绩分布情况
select *from SelCourse; 

select distinct(Score) '分数', count(StuID) as '人数'
from SelCourse
group by Score;
 
 -- 11、max、min
 -- max函数返回一列中的最大值,NULL值不包括在计算当中
 -- min函数返回一列中的最小值,NULL值不包含在计算当中
 -- 备注:max和min也可以用于文本列,以获得按字母顺序的最高值和最低值
 -- 1) 查询学生中的最高分数
 select MAX(Score) '最高分数', MIN(Score) '最低分数'
 from SelCourse;
 
 -- 12、sum
 -- 求和
 -- 求平均分
 select SUM(Score)'总分',COUNT(StuID)'总人数' , SUM(Score)/COUNT(StuID) '平均分'
 from SelCourse;
 
 -- 13、avg           average
 -- 返回列的平均值
 select SUM(Score)'总分',COUNT(Score)'人数',AVG(Score) '平均分' 
 from SelCourse;
 
 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值