SQL Server基础操作 语法

SQL Server基础操作 语法

库、表、约束

学习视频来自b站吱吱1007

建库

create database name --数据库名
on primary
(
	name='myfirst_data',
  	filename='E:\sql server\first\myfirst_data.mdf',--mdf为数据文件
    size=5MB,--默认MB		--文件大小
    maxsize=100MB,		 -- 文件最大值 无限值无语设置
    filegrowth=15%		 --文件增长率
)
log on
(
	name='mysecond_data',
    filename='E:\sql server\first\mysecond_data.ldf',--ldf为数据文件
    size=5MB,
    maxsize=100MB,
    filegrowth=10%
)
go--批处理

建表 约束

use Myfirst --调用此库
Go
create table Stuinfo  --信息表
(
	Stunum int not null primary key, --学号,非空,主键
	Stuname char(10) not null unique, --姓名,非空,唯一键
	Stusex char(2) not null default '男' -- 性别,非空,默认值
)
create table Stuexam
(
	Examnum int not null,
	Stunum int not null references Stuinfo(Stunum), --学号外键约束 关联学生信息表
	Score int not null check(Score>=0 and Score<=100)  --分数 检查约束
)

查询、插入、修改数据

--查询数据行语法
-- select 列名 from 表名 where+条件表达式      where条件表达式 此句为限定条件 可省略
select * from Stuinfo; -- *代表通配符即所有数据
select Stunum from Stuinfo;
select Stusex from Stuinfo where Stusex='男';

--查询指定列数据
-- select (指定列名) 列名1,列名2 from 表名 where+条件表达式   
select Stunum,Stusex from Stuinfo where Stusex='男';

--查询自动排序指定列数据
-- select 列名 from 表名 where+条件表达式 order by 排序的列名(ASC升序/DESC降序)
select * from useinfo order by beginday ASC;

--自动拼接指定列数据  +连接的数据类型必须兼容才能连接在一起
-- select 列名 = 列名1 + '-' +列名2 from 表名
-- select 列名 = 列名1 + '-' +列名2 from 表名
select 学生信息 = stuname + '-' +stuzz from Stuinfo

--筛选查询  
select top3 列名 from 表名  //这里的top为关键字 前三行
select top 20 percent 列名 from 表面 //这里为百分比

--模糊查询	like 为关键字 后面跟的%为模糊作用即后面不管是什么都选定
--1.获取张字开头员工的所有信息
select * from useinfo where name like '张%'
select * from useinfo where name like '%艺%' --名字中含有艺的员工
--2.查询日期在某个范围内的数据 between day1 and day2  day2-day1之间的
select * from useinfo where birth between '1999-01-01' and '2000-12-31'
--3.查询地址在青岛、东北、河南员工的信息
select * from useinfo where address in('青岛','东北','河南')  --重点在in


--插入数据行语法
--insert into  表名 (列名)values(值列表) 
insert into Stuinfo(Stunum,Stuname,Stusex) values(1,'李四','男');
insert into Stuinfo(Stunum,Stusex,Stuname) values(2,'男','张三');
insert Stuinfo values(3,'王二','男');   --省略into 必须按建表的顺序 插入数据

--插入多行数据
--insert into <表名>(列名)
--select <列名> union
--select <列名> union
--select <列名> union
--select <列名>     最后一个去掉union!!!!

insert into Stuinfo(Stunum,Stuname,Stusex)
select 4,'奥里给','女' union
select 5,'王五','男'

--使用updata更新数据行
--updata 表名 set 列名 = 更新值 [where 更新条件]
update Stuinfo set Stusex = '男' where Stuname='奥里给'

--使用updata更新多列
--updata 表名 set 列名 = 更新值,列名 = 更新值,列名 = 更新值 [where 更新条件]
update Stuinfo set Stuname ='奥利奥',Stusex='女' where Stunum=1

连接查询

use Myfirst
go
create table department  --部门表
(
	depid int not null primary key identity(1,1),
	depname nvarchar(50) not null
)
create table useinfo --员工表
(
	userid int not null primary key identity(1,1),
	username nvarchar(50) not null,
	depid int not null references department(depid),
	beginday datetime,
	userage int not null
)

insert department values('开发部')
insert department values('销售部')
insert department values('行政部')

insert useinfo values('张三',1,'2021-03-30',18)
insert useinfo values('王二',1,'2021-03-30',18)
insert useinfo values('李四',2,'2021-03-30',18)

select * from department
select * from useinfo

--内连接!!!
--select 列名  
--from 表1
--inner join 表2 on 表1和表2主外键关系
--inner join 表3 on (主外键关系)

select u.username as 员工姓名,d.depname as 部门名称,u.beginday as 入职日期,u.userage as 员工年龄
from department d
inner join useinfo u on d.depid=u.depid

--左连接,以显示主表数据为主,分两钟情况
--1.有关联数据的从表数据,会匹配主表显示数据
--2.无匹配关联数据的主表数据,自动填充null字段
--select 字段
--from 表1
--left join 表2
--on  表1和表2之间的主外键关系

select u.username as 员工姓名,d.depname as 部门名称,u.beginday as 入职日期,u.userage as 员工年龄
from department d
left join useinfo u
on d.depid = u.depid

集合关系

--1.两个select查询中间加一个 union取并集(自带distinct--去掉重复) union all(不去重复) A∪B
--2.intersect 交集  A∩B
--3.except减集 即集合中作减运算 A-B
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值