sqlserver 基础与高级教程

alexlee 2023-5-25 352 5/25

一.最近想起了要总结出sqlserver 的入门跟高级教程,以方便新手能避免踩坑,快速入门的效果。

1.0 首先建立好数据库

use master

go

if exists(select * from sysdatabases where name='alexlee')

begin

select '该数据库已存在'

drop database alexlee        --如果该数据库已经存在,那么就删除它

end

else

begin

create database alexlee

on  primary        --表示属于 primary 文件组

(

name='stuDB_data',        -- 主数据文件的逻辑名称

filename='D:\stuDB_data.mdf',    -- 主数据文件的物理名称

size=5mb,    --主数据文件的初始大小

maxsize=100mb,     -- 主数据文件增长的最大值

filegrowth=15%        --主数据文件的增长率

)

log on

(

name='stuDB_log',        -- 日志文件的逻辑名称

filename='D:\stuDB_log.ldf',    -- 日志文件的物理名称

size=2mb,            --日志文件的初始大小

maxsize=20mb,        --日志文件增长的最大值

filegrowth=1mb        --日志文件的增长率

)

end

2.0 建立好数据表

USE [alexlee]
GO
/****** Object:  Table [dbo].[alexleeinfo]    Script Date: 2023-05-25 14:19:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[alexleeinfo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StuNo] [varchar](50) NOT NULL,
[Name] [varchar](20) NOT NULL,
[Sex] [varchar](10) NULL,
[Height] [varchar](10) NULL,
[BirthDate] [varchar](30) NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
USE [alexlee]
GO
/****** Object:  Table [dbo].[alexleeinfo_detail]    Script Date: 2023-05-25 14:19:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[alexleeinfo_detail](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StuNo] [varchar](50) NOT NULL,
[SchoolName] [varchar](200) NOT NULL,
[HomeAddress] [varchar](200) NOT NULL,
[Telephone] [varchar](13) NULL,
[Marriage] [varchar](30) NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'alexleeinfo_detail', @level2type=N'COLUMN',@level2name=N'StuNo'
GO
3.0 接下来就是数据库的简单操作
1 select
2 select distinct
3 where
4 and& or
5 order by
6 insert into
7 update
8 delete
插入数据库记录

insert into alexleeinfo (StuNo,name,sex,Height,BirthDate) values('1','张三','男','170','1990-01-03')
insert into alexleeinfo (StuNo,name,sex,Height,BirthDate) values('2','李四','男','171','1991-01-04')
insert into alexleeinfo (StuNo,name,sex,Height,BirthDate) values('3','王五','男','170','1992-01-05')
insert into alexleeinfo (StuNo,name,sex,Height,BirthDate) values('4','赵六','男','176','1999-01-05')

插入数据库记录

insert into alexleeinfo_detail (StuNo,schoolname,homeAddress,telephone,marriage) values('4','深圳大学','深圳罗湖','18999008567','是')

数据库简单操作的实例

select distinct name,sex from alexleeinfo
select * from alexleeinfo where id='1' and stuno='1' or stuno='2'
select * from alexleeinfo
order by id desc

update alexleeinfo set name='张三1'
where id='1'

select * from alexleeinfo where id='4'
delete from alexleeinfo where id='4'

简单操作实例

--1 select top
--2 select like
--3 通配符
--4 in
--5 between
--6 别名
--7 连接(join)
--8 inner join 如果表中有至少一个匹配,则返回行
--9 left join 即使右表中没有匹配,也从左表返回所有的行
--10 right join 即使左表中没有匹配,也从右表返回所有的行
--11 full join 只要其中一个表中存在匹配,则返回行
--快速注释的快捷键 ctrl+alt+c

--表数据太多,就想看一条数据,我们就可以用到top操作
select top 1 * from alexleeinfo
--永远拿最新的1条,在实际业务开发是很经常的
select top 1 * from alexleeinfo order by
BirthDate desc

--避免使用,索引问题,导致查询慢
select * from alexleeinfo where name like '%李%'

--选择的记录过滤(开发业务系统经常使用)
select * from alexleeinfo where stuno in ('1','2')

--指一个范围里边的过滤 (开发业务系统经常使用)
select * from alexleeinfo where height between '170' and '171'

--让字段名更有开发意义,便于维护
select name as stuname from alexleeinfo

 

 

- THE END -
最后修改:2024年1月31日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论