您的位置:首页 > 数据库

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

2015-10-24 12:15 507 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: