虚拟机: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 列名称 from 表名称
select * from t_student
select name,age from t_student
返回表的某列中不同的值
select distinct 列名 from 表名
select distinct class from t_student
select * from t_student where class='王五'
以下两个包括了表中所有数据,即第一个是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
对搜集的结果进行排序
select 列名 from 表名 order by 列名 顺序/倒序
前面的列名表示想要看到的列,后面的列表表示希望对哪列进行排序处理
注:默认升序asc,降序为desc
select name,age from t_student order by class Desc
insert into 表名 values(值1,值2,值3)
insert into t_student values(
'刘大嘴',41,NULL
)
仅对指定列插入数据
insert into t_student (name,age) values('赵大嘴',23)
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
获取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
select * from t_student1
Union
select * from t_id1
select *
into t_student1_backup
from t_student1
select name,age
into t_student2
from t_student1
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
参考链接
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 index table_name.index_name
删除数据表drop table table_name
删除数据库drop database_name
仅删除表数据,不删除表本身truncate table table_name
用于在已有的表中添加、修改或删除列。
在表中添加列
alter table test
add 列名 数据类型
修改A表中B列的数据类型
alter table A
alter column B int
删除A表中的B列
alter table A
drop column B
t_student5信息如下
仅判断class值为NULL
select *
from t_student5
where class is null
--where class is not null
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) |
|
计算t_student5表中age列的平均值select avg(age) from t_student5
查找age高于平均值的人数
select name,age
from t_student5
where age>(select avg(age) from t_student5)
注:NULL值不参与计算
select count(age) from t_student5
输出数据库中总行数select count(*) from t_student5
表设计如下
select name,sum(monery) from t_lizi
group by name
由于Where函数不能与合计函数一起使用,则增加having子句
select name,sum(monery) from t_lizi
group by name
having sum(monery) < 250
用于返回文本字段中值的长度
select len(name) from t_student5
新建float类型列
语法:select round(列名,要返回的小数长度) from 表名
select round(shi,1) from t_student5
select getdate() from t_student5
如有错误,欢迎指正
本人语雀链接:邓小洲啊
本人CSDN链接:大嘴先生
本人邮箱:[email protected]
如本文对您有帮助的话,麻烦点个赞