SQL Server安装+基础命令看这篇就够了!

虚拟机:Windows 10 x64,Microsoft SQL Server Management Studio

学习资源:SQL教程 https://www.w3school.com.cn/sql/sql_top.asp

前言:本文中使用的一些数据表是个人这边用于测试创建的数据表,各位可根据自己情况进行创建表等操作。


目录

安装

基础

select 查询语句

distinct 返回不同值

查找数据

基础用法

between用法

order by 排序

insert into 插入数据

update 修改数据

删除

SQL语句

从两表中查找指定数据

UNION 操作符

into 备份

通常用于制作表的备份文件

仅拷贝name,age列的数据到t_student2中

使用where子句,将age=12的数据保存到表t_student3中

将两个表信息整合到一个表中

创建数据库

创建数据表

数据类型

约束条件

INDEX语句

DROP删除

ALTER

判断是否NULL值

SQL 函数

AVG平均值函数

count计数

Gourp by

sum合计

HAVING子句

Len函数

round函数

NOW函数


安装

安装教程1

基础

select 查询语句

select 列名称 from 表名称

select * from t_student
select name,age from t_student

distinct 返回不同值

返回表的某列中不同的值

select distinct 列名 from 表名

select distinct class from t_student

查找数据

  • select 列名 from 表名 where 列 运算符 值
  • 两个特殊的运算符 between-在某个范围内 like-搜索某种模式

基础用法

select * from t_student where class='王五'

between用法

以下两个包括了表中所有数据,即第一个是age大于5小于20;第二个是不在5-20范围内

between 均不包括自己本身

select * from t_student where age >5 and age<20
select * from t_student where age not between 5 and 20

order by 排序

对搜集的结果进行排序

select 列名 from 表名 order by 列名 顺序/倒序

前面的列名表示想要看到的列,后面的列表表示希望对哪列进行排序处理

注:默认升序asc,降序为desc

select name,age from t_student order by class Desc

insert into 插入数据

insert into 表名 values(值1,值2,值3)

insert into t_student values(
'刘大嘴',41,NULL
)

仅对指定列插入数据

insert into t_student (name,age) values('赵大嘴',23)

update 修改数据

update 表名 set 列名=新值 where 列名=原值

where后面的内容尽量使用表中的主键值,即唯一值

update t_student set class='five' where class='印刷'
update t_student set class='鼠年' where age=41
修改一行中的多项值
update t_student set name='赵柳',class='账期' where age=15

删除

delete from 表名 where 列名=值

delete from t_student where age=23

SQL语句

从两表中查找指定数据

获取t_student1表中的谁有ID值

t_student1表中的age属性为主键,t_id1表中的age属性为外键

select t_student1.age,t_student1.name,t_id1.id 
from t_id1,t_student1 
where t_student1.age=t_id1.age

下面实现效果与上述相同

select t_student1.age,t_student1.name,t_id1.id 
from t_student1 
inner join t_id1 
on t_student1.age=t_id1.age order by t_student1.name

 

 

UNION 操作符

  • 用于将两条SQL语句执行后的结果合并在同一个结果集中
  • 注意点
    • 使用Union/InTERSECT/EXCEPT运算符的查询必须在列表中有相同数目的表达式
    • UNION默认显示不重复的字符、UNION ALL 显示全部字符
select * from t_student1
Union 
select * from t_id1

 

into 备份

通常用于制作表的备份文件

select *
into t_student1_backup
from t_student1

仅拷贝name,age列的数据到t_student2中

select name,age
into t_student2
from t_student1

使用where子句,将age=12的数据保存到表t_student3中

select name,age
into t_student3
from t_student1
where age=12

将两个表信息整合到一个表中

select t_student1.name,t_student1.age,t_student1.class,t_id1.id
into t_student5
from t_student1
inner join t_id1
on t_student1.age=t_id1.age

 

 

创建数据库

create Database newtest

 

创建数据表

create table t_students
(
    id int NOT NULL
)

数据类型

数据类型

描述

integer

int

smallint

tinyint

仅整数

decimal(size,d)

numeric(size,d)

容纳带有小数的数字;

size规定最大位数,d表示小数点右侧的位数

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)

日期

 

约束条件

约束

备注

NOT NULL

不允许为空值

UNIQUE

唯一表示数据表中每条记录

与主键区别:每个表只能有一个主键,但能有多个UNIQUE值

 

 

NOT NULL设置

id int NOT NULL

UNIQUE设置

create table test
(
    id int NOT NULL UNIQUE,
)

当表已创建,设置方法

alter table test
add unique(id)

撤销UNIQUE约束

alter table test
drop constraint id

参考链接

 

Primary key主键约束

create table test
(
    id int NOT NULL PRIMARY KEY
)

当已存在主键,修改方法如下

alter table test
add primary key (id)

撤销主键设置

alter table test
drop primary key

FOREIGN KEY 外键约束

以下为子级中创建外键,(以父级test表中id为主键)

create table test1
(
    id int PRIMARY KEY references test(id),
)

如已创建值,增加约束方法如下

alter table test1
add foreign key (id)
references test(id)

撤销外键约束

alter table test1
drop constraint id

CHECK约束

CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

create table test
(
    age int NOT NULL check(age>0)
  
)

如表中已存在,则使用

alter table test
add check (age>0)

撤销约束

alter table test
drop check 约束名

参考链接

 

DEFAULT约束

DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新记录。

create table test
(
    city varchar(255) default 'BeiJing',
  
  --插入系统时间
  date default getdate()
)

如表中已存在,则使用下列方法

alter table test
alter column city set default 'BeiJing'

撤销约束

alter table test
alter column cty drop default

 

 

INDEX语句

参考链接

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

使用index可以创建一个简单的索引,允许使用重复值

使用 unique index可以创建一个唯一的索引

alter table test
alter column cty drop default

降序排列

create index TestIndex
on test(name desc)

希望索引多个列

create index TestIndex
on test(name,id,class)

 

DROP删除

删除索引drop index table_name.index_name

删除数据表drop table table_name

删除数据库drop database_name

仅删除表数据,不删除表本身truncate table table_name

 

ALTER

用于在已有的表中添加、修改或删除列。

在表中添加列

alter table test
add 列名 数据类型

修改A表中B列的数据类型

alter table A
alter column B int

删除A表中的B列

alter table A
drop column B

 

判断是否NULL值

t_student5信息如下

SQL Server安装+基础命令看这篇就够了!_第1张图片

仅判断class值为NULL

select * 
from t_student5
where class is null
--where class is not null

 

SQL 函数

select function(列名) from 表名

例:计算t_student5表中age列的平均值select avg(age) from t_student5

SQL Server的合计函数

AVG(列名)

返回某列平均值

BINARY_CHECKSUM

 

CHECKSUM

 

CHECKSUM_AGG

 

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数
COUNT(DISTINCT column) 返回相异结果的数目

FIRST(column)

返回在指定的域中第一个记录的值(SQLServer2000 不支持)

LAST(column)

返回在指定的域中最后一个记录的值(SQLServer2000 不支持)

MAX(column)

返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)  

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

 

 

AVG平均值函数

计算t_student5表中age列的平均值select avg(age) from t_student5

查找age高于平均值的人数

select name,age
from t_student5
where age>(select avg(age) from t_student5)

 

count计数

注:NULL值不参与计算

select count(age) from t_student5

输出数据库中总行数select count(*) from t_student5

 

 

Gourp by

表设计如下

SQL Server安装+基础命令看这篇就够了!_第2张图片

sum合计

select name,sum(monery) from t_lizi
group by name

SQL Server安装+基础命令看这篇就够了!_第3张图片

HAVING子句

由于Where函数不能与合计函数一起使用,则增加having子句

select name,sum(monery) from t_lizi
group by name
having sum(monery) < 250

image.png

 

Len函数

用于返回文本字段中值的长度

select len(name) from t_student5

 

round函数

新建float类型列

SQL Server安装+基础命令看这篇就够了!_第4张图片

语法:select round(列名,要返回的小数长度) from 表名

select round(shi,1) from t_student5

SQL Server安装+基础命令看这篇就够了!_第5张图片

 

NOW函数

select getdate() from t_student5

SQL Server安装+基础命令看这篇就够了!_第6张图片

 

如有错误,欢迎指正


本人语雀链接:邓小洲啊

本人CSDN链接:大嘴先生

本人邮箱:[email protected]

 

如本文对您有帮助的话,麻烦点个赞

 

你可能感兴趣的:(数据库,数据库,sqlserver)