sql入门(3)------SQLServer3

sql入门(3)------SQLServer3

--SQL语句的分类:

1、DDL  数据定义语言
create  ---创建对象
drop ----删除对象
2、DML  数据操作语言
insert ----向数据表中添加数据
select ----查询数据表中的数据
update ----修改数据表中的数据
delete ----删除数据表中的数据
3、DCL  数据控制语言

grant --给用户授权
revoke--撤销用户拥有的权限

--切换数据库
use mydb5;
--创建数据库
create database mydb5;
--删除数据库
drop database mydb5;

--在master数据库,有一张表sysdatabases,这个表中,存放的是所有数据
--库的名称

if exists(条件判断语句)
要执行什么语句


go--这是一个批处理关键字,它用于指定,哪一块语句是一个整体,应
--该独立运行


sysdatabases表---用于存放所有数据库的名称,它位于master数据库中

在每一个数据库中,都有一张表:sysobjects,它用于存放当前数据库中所有的表

---------------------

delete 用于删除数据,删除的时候可以用where有条件的删除

truncate 用于截断表,它删除数据,不能带条件,必须截断整个表的数据,
截断表以后,标识列会重新生成

如果要删除所有数据:truncate速度更快

如果要有条件删除,只能选择delete




--如果数据库存在,删除存在的数据库再创建新的数据库
use master; --切换到系统数据库
go
if exists(select * from sysdatabases where name='mydb5')
drop database mydb5;
go
create database mydb5;--创建数据库
go
use mydb5;--切换数据库
go
--如果数据表存在,删除存在的数据表
if exists(select * from sysobjects where name='inf')
drop table inf
go
--创建数据表
create table inf
(
id int primary key identity(1,1),
name varchar(20) not null,
age int
)
go
--添加数据  insert
insert into inf(name,age) values('bruce',23);
insert into inf(name,age) values('andy',26);
insert into inf values('lee',23);
insert into inf values('mariah',23);
insert into inf values('chris',23);
insert into inf values('christina',25);
insert into inf values('mariah kelly',21);
--查询所有数据  select 
select * from inf;
select name from inf;
select * from inf where age=23;--查询年龄是23岁的信息
select * from inf where age=23 and name='bruce';
--修改数据 update
update inf set name='kelly',age=100 where id=1;
--删除数据
delete from inf where id=5;
delete from inf;
--截断表
truncate table inf
-----------------------------------------
--查询年龄在22-26之间
select * from inf where age between 22 and 25;

create table inf2
(
id int primary key identity(1,1),
name int not null,
address varchar(20)
)
--修改表中的字段--name
alter table inf2 alter column name varchar(20) not null
--向表中添加新字段
alter table inf2 add age int not null;
--删除数据表中已有字段
alter table inf2 drop column address;
------------------------------------------
--创建表的时候,向表中添加约束  constraint(约束,限制)

主键约束、唯一键约束、检查约束、非空约束、默认值约束、外键约束

if exists(select * from sysobjects where name='inf3')
drop table inf3
go
create table inf3
(
id int primary key ,--添加主键约束
name varchar(20) not null check(len(name)>1 and len(name)<7),
age int check(age between 1 and 120),
gender char(2) check (gender='男' or gender='女'),
idCard varchar(5) unique,
address varchar(20) default '湖北省武汉市',
cid int  references class(classId)
)
insert into inf3  values(3,'bruce',21,'男','11111',default,1);

select * from inf3;

drop table class;

create table class --班级表
(
classId int primary key,--班级的编号
className varchar(20) not null--班级名称
)
insert into class values(1,'s115');
insert into class values(2,'s116');
select * from class;

select * from inf3;

注意:两表如果有主外键关系

先创建主键表,再创建外键表
先添加主键表的数据,再添加外键表的数据


先删除外键表的数据,才能删除主键表的数据
先删除外键表,再删除主键表


---------------------------------查询数据

create table inf4
(
id int primary key identity(1,1),
uname varchar(20) not null,
age int,
address varchar(20)
)
insert into inf4 values('jack',23,'湖北省武汉市');
insert into inf4 values('tom',25,'湖北省襄樊市');
insert into inf4 values('chris',23,'湖北省武汉市');
insert into inf4 values('christina',27,'湖北省宜昌市');
insert into inf4 values('bruce',28,'湖北省荆州市');
insert into inf4 values('mariah',22,'湖北省武汉市');
insert into inf4 values('rose',21,'广东省广州市');
insert into inf4 values('kelly',29,'四川省成都市');

select * from inf4;
--查询年龄大于23岁
select * from inf4 where age>23;
--查询年龄在23-27区间
select * from inf4 where age between 23 and 27

--查询年龄是23,25,27,28     in---判断值是否在某一个范围
select * from inf4 where age in (23,25,28)

--查询不在指定范围  not in
select * from inf4 where age not in(23,25,28);

-----------模糊查询  like 
模糊查询的通配符:
%----代表任意长度的任意内容
_ ---代表任意的一个字符

select * from inf4 where uname like 'jack' --精确查询

select * from inf4 where uname like '%c%' --任何位置出现字符c的

select * from inf4 where uname like 'c%' --字符c开始的

select * from inf4 where uname like '%s' --以结尾

select * from inf4 where uname like 'c%a'

select * from inf4 where uname like '__r%';

create table info
(
id int primary key identity(1,1),
name varchar(20) not null,
gender varchar(20) not null,
class varchar(20),
score int
)
go

insert into info values('余胜军','男','s1t80',92)
insert into info values('黄辉','男','s1t80',91)
insert into info values('汪保国','男','s1t80',78)
insert into info values('商宇彤','男','s1t80',98)
insert into info values('应明珠','女','s1t81',95)
insert into info values('廖一帆','男','s1t81',52)
insert into info values('陈杰','男','s1t80',83)
insert into info values('胡文鑫','女','s1t81',82)
insert into info values('刘坤','男','s1t80',53)
insert into info values('蒋文哲','男','s1t81',64)
insert into info values('冷泽华','男','s1t81',72)
insert into info values('曹敏','女','s1t81',66)
insert into info values('陈秦定','女','s1t80',89)
insert into info values('赵娇','女','s1t80',73)
insert into info values('柳星','男','s1t82',77)
insert into info values('胡月','女','s1t82',87)
insert into info values('郑克','男','s1t82',68)
--查询班级是s1t81班的男学生
select * from info where class='s1t81' and gender='男';
--2、查询以学生姓名以"刘"开始的男学生
select * from info where name like '刘%' and gender='男';
--查询姓名是2个字的学生

select * from info where name like '__';

select * from info where len(name)=3;

select * from info;

-----------------------
查询排序的语法: asc--升序           desc--降序    
order by 排序的关键字 默认升序排序

select *  from 表名 order by 字段名 asc

例:

select * from info order by score desc;--降序排列
select * from info order by score;--升序排列

带条件查询以后再排序

select * from 表名 where 条件  order by 字段  desc或者asc

--查询s1t80班考试合格的学生,成绩降序排序
select * from info where class='s1t80' and score>=60 
order by score desc
-------------------------------------------------------
聚合函数----------------它用于查询唯一的结果

count----------用于查询记录总数
sum------------求总和的一个函数
avg-----------用于求平均数的函数
max-----------求最大值的函数
min-----------求最小值的函数

--查询总记录数
select count(*) from info;
--查询最高分数
select max(score) from info;
--查询最低分
select min(score) from info;
--统计总分数
select sum(score) from info;
--平均分
select avg(score) from  info;


查询s1t80班考试合格的学生,分别统计最高分,最低分,总分,平均分,以及几个学生


select count(*) from info where class='s1t80' and score>=60;

查询考试成绩分数最高的学生信息

top :查询最靠前的数据

select top 1 * from 表

找到s1t81班,考试成绩最低分的学生信息

select top 3 * from info where class='s1t81' order by score asc;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值