SQLserver基础知识点整理

目录

数据库的创建与删除:

基本SQL语句

数据类型:

约束:

函数

高级查询:

子查询:

多行数据插入:

视图:


数据库的创建与删除:

创建数据库:create  database 数据库名;
创建数据表:create table 数据表名;

删除数据表:drop table 数据表名;
删除数据库:drop database 数据库名;

use 数据库名//切换数据库


基本SQL语句


查询:

  • 查询所有:select * from 表名; * 表示所有字段/列;
  • 模糊查询:select * from 表名 where 列名 like '%关键字%';

增加:

  • insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);
  • select (值1,值2,值3) union,
  • select (值1,值2,值3) union,
  • select (值1,值2,值3)

删除:

  • 删除所有数据:delete from 表名;
  • 根据条件删除数据:delete from 表名 where sid  = 1;

修改:

  • update 表名 set 字段1 = 值1,字段2 = 值2 where sid = 1;
  • 创建表:create table 表名(字段1 数据类型,字段2 数据类型);
  • 删除表:drop table 表名;

数据类型:

    整形:int
    非整形:float
    字符串:varchar(10)
    日期和类型:datetime


约束:

外键约束-用主表某个字段约束从表某个字段
主键约束-primary key(PK)
非空约束-is not null
唯一约束-unique
默认值约束-default
检查约束-check


显示前几:top;
百分比: percent;
消除重复项:distinct;
between 值1 and 值2:用来判断字段的数值是否在指定范围内;


Select 语句的使用方法:

  1. 查询时选择所有列
  2. 查询时选择特定列 
  3. 查询时指定结果集的列名
  4. 查询时可以使用 distinct 消除重复项
  5. 在查询时可以使用 top 限制结果集中记录的数量
  6. 使用 from 子句
  7. 查询时用 where 语句作为查询条件
  8. 查询时用 order by 对记录进行排序 
  9. 查询时用 order by 对记录进行排序
  10. 在select语句后加上order by 子句,将按查询结果中的一列或多列对查询结果进行排序。排序可以是升序的 (asc),也可以是降序的 (desc)

例:

--查询数据按升序
select * from '表名' order by '列名' asc
--查询数据按升降
select * from '表名' order by '列名' desc

函数:

字符串函数:
CHARINDEX-用来寻找一个指定的字符串在另一个字符串中的起始位置;

举例:

SELECT CHARINDEX('SQL','My SQL Course',1);
--返回:4


LEN-返回传递给它的字符串长度;

举例:

SELECT LEN('SQL Server');
--返回:10


LOWER-把传递给它的字符串转换为小写;

举例:

SELECT LOWER('SQL Server');
--返回:sql server


UPPER-把传递给它的字符串转换为大写;

举例:

SELECT UPPER('sql server');
--返回:SQL SERVER


LTRIM-清除字符左边的空格;

举例:

SELECT LTRIM ('  靓仔  ');
--返回:靓仔  (后面的空格保留)


RTRIM-清除字符右边的空格;

举例:

SELECT RTRIM ('  靓仔  ')
--返回:  靓仔(前面的空格保留)


RIGHT(LEFT)-从字符串右边(左边)返回指定数目的字符;

举例:

SELECT RIGHT('我非常.爱学习',3);
--返回:爱学习


REPLACE-替换一个字符串中的字符;

举例:

SELECT REPLACE('我不是小黑子','黑','坤');
--返回:我不是小坤子

日期函数:
GETDATE-取得当前的系统日期;

举例:

SELECT GETDATE();
--返回:今天的日期


DATEADD-将指定的数值添加到指定的日期部分后的日期;

举例:

SELECT DATEADD(mm,4,'2023/01/1');
--返回:以当前的日期格式返回2023-05-01


DATEDIFF-两个日期之间的指定日期部分的区别;

举例:

SELECT DATEDIFF(mm,'2023/01/1','2023/05/1');
--返回:4


DATENAME-日期中指定日期部分的字符串形式;

举例:

SELECT DATENAME(DW,'2023/01/1');
--返回:星期日


DATEPART-日期中指定日期部分的整数形式;

举例:

SELECT DATEPART(DAY,'2023/01/1');
--返回:1


YEAR/MONTH/DAY-日期中指定年、月、日部分;

举例:

SELECT YEAR(GETDATE());
--返回:2023


数学函数:

日期部分

缩写

年份:YEAR

yyyy

月份:MONTH

mm

每年的某一日

dy

日期:DAY

dd

星期

wk,ww

工作日

dw

小时:HOUR

hh

分钟:MINUTE

mi,n

秒:SECOND

ss,s

毫秒

ms
季度ms

系统函数:
CONVERT/CAST 用来转变数据类型;

举例:

SELECT CONVERT (VARCHAR(5),12345);
--返回:字符串12345


DATALENGTH-返回用于指定表达式的字节数;

举例:

SELECT DATALENGTH ('我是中国人');
--返回:10

高级查询:

统计函数:
    5个聚合函数:会自动忽略为null的列

sum()求和;

SELECT SUM(score) FROM score;
--对列中的值求和,只能对数值数据类型的列求和. 

max()最大值;

SELECT MAX(score) FROM score;
--返回组中的最大值,只能用于数值,日期和时间数据类型.

min() 最小值;

SELECT MIN(score) FROM score;
--返回组中的最小值,只能用于数值,日期和时间数据类型.

avg() 平均值;

SELECT AVG(score) FROM score
--返回列中值的平均值,只能对数值数据类型的列求平均值.

count()   计数;

SELECT COUNT (score) FROM score;
--返回组中项目的数量

分组: group by;
分组前过滤:where;
分组后过后过滤:having;


联表查询:

    内联: inner join 取表的共同部分

select a.scode,a.sname ,b.course,b.score 
from student  as a 
inner join score as b 
on a.scode=b.studentid 

    左联:left join 以左表为基准,不管右表有不有,左表的数据全部显示

select a.scode,a.sname,b.course,b.score
from student as a
left join score as b
on a.scode=b.studentid

    右联:rught join  以右表为基准,不管左表有不有,右表的数据全部显示

select a.scode,a.sname,b.course,b.score
from student as a
right join score as b
on a.scode=b.studentid

    全联:full  join  两个表的所有部分显示

select a.scode,a.sname,b.course,b.score
from student as a
full join score as b
on a.scode=b.studentid

子查询:

  • 如果子查询用的是比较运算符合,则子查询中返回的必须是单行单列

例:

--查询比刘年富学号大的学生
select * from表名where scode>(
    select scode from表名where sname='刘年富')  

--将年龄比'李斯文'大的年龄加6岁
update stuinfo setstuage=stuage+6 where stuage>(
    select stuage from stuinfo where stuname='李斯文')

多行数据插入:

  • union
insert into stuInfo(stuNo, stuName, stuSex, stuAge, strAddress) 
select  's25325','曾金龙','女',28,'北京海淀'
union 
select 's25328','周帅','女',28,'北京海淀'
union
select 's25329','刘阳','女',28,'北京海淀'

复制表格(连带数据一起复制):

select * into newb from stuinfo;

只复制表,不复制数据:   

select * into newbb from stuinfo where 1=0;

视图:

  • 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上。
  • 视图中并不存放数据,而是存放在视图所引用的原始表(基表)中同一张原始表,根据不同用户的不同需求,可以创建不同的视图。
  • 视图(view)是在基本表之上建立的虚拟表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
  • 视图内的数据不能修改以及删除,但是视图可以删除,用drop。

创建视图

create view v_name 
as
select a.stuname,a.stusex,b.writtenexam,b.labexam
from stuinfo as a
left join stumarks as b
on a.stuno=b.stuno 

删除视图:drop view 视图名;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server是由Microsoft开发的关系型数据库管理系统(RDBMS)。它是一种功能强大且广泛使用的数据库平台,用于存储、管理和处理大量结构化数据。以下是SQL Server的一些基础知识点: 1. 数据库SQL Server是基于数据库的,数据库是一个组织和存储数据的容器。它可以包含多个表、视图、存储过程等对象。 2. 表:表是SQL Server中存储数据的基本单位。它由行和列组成,每列定义了表中的一个属性,每行则表示一个记录。 3. SQL语言:SQL(Structured Query Language)是用于与数据库进行交互的标准语言。SQL Server支持标准的SQL语法,包括数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)和数据删除(DELETE)等操作。 4. 主键:主键是表中用于唯一标识每个记录的列或列组合。它的值必须是唯一且非空的,用于确保数据的完整性和一致性。 5. 外键:外键是表中的一列,用于建立表与表之间的关系。它引用了另一个表中的主键,用于维护数据之间的引用完整性。 6. 索引:索引是一种数据结构,用于提高查询性能。它可以加快数据检索速度,类似于书的目录,可以快速找到需要的数据。 7. 视图:视图是基于一个或多个表的查询结果集。它类似于虚拟表,可以简化复杂的查询操作,并提供了一种安全性控制机制。 8. 存储过程:存储过程是一组预编译的SQL语句集合,可以被多次调用。它可以接受参数、执行复杂的逻辑操作,并返回结果。 9. 触发器:触发器是与表相关联的一段代码,当表中的数据发生变化时自动执行。它可以用于实现数据约束、数据审计等功能。 10. 事务:事务是一组数据库操作的逻辑单元,要么全部执行成功,要么全部回滚。它用于确保数据的一致性和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值