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)
场景以及解决办法:
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。