SQLServer从入门基础

1.数据库管理工具

工具创建数据库

1>登录数据库管理工具【Microsoft SQL Server Management Studio】

 

2>右键【新建数据库】

 

 

3>数据数据库名称,点击确定,就建立好了一个【MyDB】的数据库

 

创建数据表

 

 

代码创建数据库,以及数据表

 

 代码创建数据库

use master--用系统数据库
go
if exists(select * from sys.sysdatabases where name='MyDB')--查询MyDB数据库是否存在
begin
  select '该数据已经存在'
  drop database myDB--如果存在MyDB数据库则drop掉数据库
  end
else--如果不存在
begin 
 create database MyDB
 on primary
 (
 name='MyDB',
 filename='C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB.mdf',
 size=5mb,
 maxsize=100mb,
 filegrowth=15%
 )
log on
(
name='MyDB_log',
 filename='C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB_log.mdf',
 size=5mb,
 maxsize=20mb,
 filegrowth=15%
)
end

 

 代码创建数据表

use MyDB
go
if exists(select * from sys.sysobjects where name='Users')
begin
     select '该表已经存在'
     drop table Users
end
else
begin
create table Users
(
    Id int not null identity(1,1) primary key,
    UserName nvarchar(50) not null,
)
end

简单的查询语句

下图数数据表Users的数据值

 

下图是各种简单的查询语句的使用

use MyDB
select * from Users
--where
select * from Users where Id=1
--不等于,!=或者<>
select * from Users where Id != 2
select * from Users where Id <> 2
--or
select * from Users where Id=1 or UserName='bol'
--and
select * from Users where Id=1 and UserName='col'

--like '%a%'前后模糊查询,只要字母中包含o就行
select * from Users where UserName like '%o%'

--‘%o’前模糊,只要以a开头就行,后面的不管
select * from Users where UserName like 'a%'

--‘o%’后模糊,只要以l结尾就行,前面不管
select * from Users where UserName like '%l'

--not,除了以a开头的,其他啥都行
select * from Users where UserName not like 'a%'
--in,一次请求几个数据
select * from Users where Id in(1,2,3)
View Code

 场景以及解决办法:

1.两个数据库之前,复制数据表

一、如果两个数据库在同一台服务器上

1、复制表结构和数据:SELECT * INTO DatabaseB.dbo.TableB FROM DatabaseA.dbo.TableA

其中DatabaseB目标数据库TableB目标数据表

2、仅仅复制表结构:SELECT * INTO DatabaseB.dbo.TableB FROM DatabaseA.dbo.TableA WHERE 1=2

 

二、如果两个数据库在不同的服务器上

分为导出和导入两种,都需要先连接远程数据库,再进行操作。如何连接远程数据库?

在连接远程数据库之前,需要先打开Ad Hoc服务,依次执行下面四句语句(不要一次执行):

EXEC sp_configure "show advanced options",1
RECONFIGURE
EXEC sp_configure "Ad Hoc Distributed Queries",1
RECONFIGURE

这样就可以连接远程数据库了:

SELECT * INTO DatabaseB.dbo.TableB FROM opendatasource( 'SQLOLEDB', 'Data Source=IP/ServerName;User ID=SA;Password=***' ).DatabaseA.dbo.TableA WHERE 1=2

记住,为了安全起见,执行完成之后,请关闭Ad Hoc服务:

EXEC sp_configure "Ad Hoc Distributed Queries",0
RECONFIGURE
EXEC sp_configure "show advanced options",0
RECONFIGURE

 

模糊查询

1)模糊查询-like

  • 特点:使用like进行查询时,字段中的不同内容并不一定与查询内容完全匹配,只要字段中含有这些内容即可;
  • 注意%的使用,还有单引号的使用;

 

模糊查询-between

  • 把某一字段中的值在特定范围内的记录查询出来;
  • 包含端点值;
  • 日期要加上单引号;

 

 

模糊查询- in

把某一字段中内容与所列出的查询内容列表匹配的记录查询出来;

 

数据库的连接有内连接,外连接,外连接又分为左外连接,右外连接。

内连接:

  • 隐式内连接:select * from 表1,表2 where 主键=外键。
  • 显示内连接:select * from 表1 inner join 表2 on 主键=外键 where 其他条件

例子:语句:select * from a_table a inner join b_table bon a.a_id = b.b_id;

说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

 

 

 

 

外连接:

  • 左外连接:select * from 表1 left join 表2 on 连接条件;相当于查询左边表1所有的数据,包括和表2交集部分的数据;
  • 右外连接:select * from 表1 right join 表2 on 连接条件;相当于查询右边表2所有的数据,包括和表1交集部分的数据;

左外连接例子:

语句:select * from a_table a left join b_table bon a.a_id = b.b_id;

left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。

左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL

右外连接例子:

语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;

right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。

与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

 

posted @ 2021-08-30 20:07  东方承丘  阅读(1312)  评论(0编辑  收藏  举报