SQL Server基础操作

对数据库的操作

对数据库的操作可分为图形界面的操作和脚本操作,本章主要总结关于脚本的操作。

数据库的创建

create datebase [数据库名]
on primary(					//主文件
name='主文件名',
filename='主文件路径'		    //如'D:\zerotwo\zerotwo.mdf'
size=10MB,
maxsize=100MB,
filegrowth=5MB
);

log on (					//日志文件
name='日志文件名'
filename='日志文件名',		//如'D:\zerotwo\zerotwo.ldf'
size=10MB,
maxsize=100MB,
filegrowth=5MB
);

需要注意主文件和日志文件的后缀名。

数据库的修改与删除

exec sp_helpdb [数据库名]

其作用为查询数据库的状态(属性等是否发生改变)

exec sp_helpdb 数据库名;

数据库的修改

数据库的修改要用到关键字alter,注意是先说明对数据库的修改,再用modify说明要修改数据库的具体内容。下面举几个对数据库修改的例子:

alter database 数据库名
modify name=修改后的数据库名;
alter database 数据库名
modify file(
name=原名,
size=,
maxsize=,
filegrowth=);

注意,修改数据库中的数据文件的话,数据文件名不能更改,在这样将其名字写出来是为了在数据库中找到叫这个名字的文件。

数据库的删除

数据库的删除需要用到drop关键字

drop database 数据库名;

数据库的备份与还原

数据类型

在SQL Sever中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型:整形数据、字符数据、货币数据、日期和时间数据、二进制字符串等。

数字类型

数据类型范围存储
bigint − 2 63 -2^{63} 263~ 2 63 − 1 2^{63}-1 26318字节
int − 2 31 -2^{31} 231~ 2 31 − 1 2^{31}-1 23114字节
smallint − 2 1 5 -2^15 215~ 2 15 − 1 2^{15}-1 21512字节
tinyint 0 0 0~ 255 255 2551字节
float

时间类型

数据类型输出
time17:20:20.1234567
date2022-6-20
smalldatetime2022-6-20 17:21:21
datetime2022-6-20 17:21:54.123
datetime22022-6-20 17:22:11.1234567

字符串类型

  1. char(n)
    固定长度。n用于定义字符串长度,并且它必须为1到8000之间的值。
  2. varcahr(n|max)
    可变长度。n用于定义字符串长度,并且它可以为1到8000之间的值。
  3. nchar(n)
    固定长度的Unicode字符串数据。n用于定义字符串长度,并且它必须为1到4000之间的值。
  4. nvarchar(n|max)
    可变长度的Unicode字符串数据。n用于定义字符串长度,并且它可以为1到4000之间的值。

数据表

新建表

  • 若要创建表,必须要提供该表的名称以及该表中每个列的名称和数据类型。指出每个列中是否允许空值,也是一种很良好的做法。
  • 大多数表有一个主键,主键由表的一列或多列组成。主键始终是唯一的。数据库引擎将强制实施以下限制:表中的任何主键值都不能重复。
create table 表名
(ID int primary key not null,
name varchar(10) not null,
age int null
);

修改表

  • 更改列的类型长度
alter table 表名
alter column 列名 列长度
  • 更改列的类型
alter table 表名
alter column 列名 更改后的类型 
  • 添加not null约束
alter table 表名
alter column 列名 列的类型 not null;   //null/not null都是可选项,注意列的类型不可省略
  • 设置主键
alter table 表名
alter constraint 主键名 primary key(列名);
  • 更改列名
exec sp_rename '表名.列名','修改后的列名','column';
  • 添加列名
alter table 表名
add 列名 类型 default not null;   //后面两个可选项
  • 删除表
drop table 表名;

定义主键、外键

  • 增加主键(没有主键的情况下)
alter table 表名 add constraint 主键名 primary key(列名);
  • 删除主键
alter table 表名 drop constraint 主键名;
  • 删除外键
alter table 表名
add constraint 外键名
foreign key(列名)
references 外表名(依赖的外表列)
  • 删除外键
alter table 表名 drop constraint 外键名

新增表记录

  • 插入单行数据
insert into 表名(列名1,列名2,...)
values(1,2,...)

注意,插入的值与列名的顺序是一一对应的,还应注意符号是英文状态的符号。
如果值是字符的话记得加单引号’ ’

  • 插入多行数据
insert into 表名(列名1,列名2,...)
values(1,2,...),(1,2,...),(1,2,...),...
  • 从其他表复制数据
insert into 表名1 (列名1,列名2,...)
select 列名1,列名2,...
from 表名2

注意是将标表2的数据复制到表1的数据。

查询数据库中的表记录

  • 查询某一列或几列值
select 列名1,列名2,...
from 表名
  • 查询全部列值
select * 
from 表名
  • 消除重复值
select distinct 列名1,列名2,...
from 表名
  • 查询前几或几十行数据
select top 行数 列名1,列名2,...
from 表名

修改表记录

update 表名
set 列名1=新的列值,列名2=新的列值,...
where 条件限制

删除表记录

delete from 表名      //from可省略
where 条件限制

where条件限制语句

查询条件

where语句并不是所有查询条件都能使用的,下面我们给出一些where常用的查询条件。

查询条件谓词
比较=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符
确定范围between and, not between and
确定集合in, not in
字符匹配like,not like
空值is null,is not null
多重条件and,or,not

需要注意的是,where子句中是不能用聚集函数作为条件表达式的。

字符匹配

where 列名 like '匹配串'

其中,匹配符可以是一个完整的字符串,也可以含有通配符%和_。

  • %(百分号)代表任意长度的字符串(长度可以为0)。例如a%b表示以a开头,以b结尾的任意长度的字符串。b%表示任意开头,以b结尾的字符串。
  • _(下横线)表示任意单个字符。例如a_b表示以a开头,以b结尾的长度为3的任意字符串。

BETWEEN语法

用于限制条件的表达式,指示表示指定范围。除了数字外,字符(字母、时间等)也可用between限制。

where 列名 between 100 and 200
where 列名 not between 100 and 200
where 列名 between 'acd' and 'acz'

子查询IN

select *
from 表名
where 列名 in (列值1,列值2,...)
select1中的列名
from1
where1中的列名 in (select2中的列名 from2);

同样,in前也可以加not来表示。

子查询EXISTS

exists用来检测子查询中的行是否存在,若存在,则返回Ture;若不存在,则返回false。
在子查询中得到了Ture之后,才能再打印出主查询所查询的行。

select b.name,b.age,b.num from Student1 as b
where exists(select * from Student2 as a where a.num=b.num);

返回记录的排序

order by

select *
from 表名
order by 列名 asc|desc			//系统默认是asc,所以升序时不用将asc打出来
order by 列名1,列名2

若是按照两个属性来排序,则先按列名1排序,再在列名1中相同的序号里按列名2排序。

关联查询

交叉关联(inner join)

只返回两个表中属性列相等的行

select * 
from1 inner join2 on1.属性列=2.属性列

左关联(left join)

返回左表中的所有记录和右表中联结属性列相等的记录

select *
from1 left join2 on1.属性列=2.属性列

右关联(right join)

返回右表中的所有记录和左表中联结属性列相等的记录

通过两表连接进而又可以进行多表连接

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值