首页 > 数据库 >SqlServer基础知识

SqlServer基础知识

时间:2023-03-21 11:37:16浏览次数:60  
标签:name constraint -- SqlServer 约束 table 基础知识 alter

1.数据类型映射(https://learn.microsoft.com/zh-cn/sql/

SQL Server 数据库引擎类型 .NET Framework 类型   Oracle 数据类型 SQL Server 数据类型
bit(0、1或空值) 布尔 RAW([1-2000]) VARBINARY([1-2000])
tinyint(0到255 ) Byte BFILE VARBINARY(MAX)
smallint(-32768-32767) Int16 BLOB VARBINARY(MAX)
int(- 2的31次幂(-2147483648)到2的31次幂 (2147483 647)) Int32 ROWID CHAR(18)
bigint Int64 CHAR([1-2000]) CHAR([1-2000])
FLOAT Double NCHAR([1-1000]) NCHAR([1-1000])
char String,Char[] VARCHAR2([1-4000]) VARCHAR([1-4000])
nchar String,Char[] NVARCHAR2([1-2000]) NVARCHAR([1-2000])
varchar String,Char[] NCLOB NVARCHAR(MAX)
nvarchar String,Char[] CLOB VARCHAR(MAX)
text String,Char[] DATE DATETIME
ntext String,Char[]    
binary Byte[]    
image Byte[]    
varbinary Byte[]    
FILESTREAM attribute (varbinary(max)) Byte[]    
date(yyyy-dd-MM) DateTime    
datetime(yyyy-dd-MM HH:mm:ss.000) DateTime    
numeric(number(4,5),123.45) 小数    
Decimal 小数    

2.数据库表操作

--创建表
create table 数据库名字.DBO.学生表
(
学号 varchar(10) primary key,
姓名 char(10) not NULL,
年龄 int null ,
性别 char(5) check (性别='男' or 性别='女') unique --唯一约束
单位 char(20) default '计算机科学与技术学院', --默认约束的写法
)

--添加列
alter table 表名
add 属性 数据类型(长度)[null notnull]

--修改数据类型
alter table 表名
alter column 属性 数据类型

--删除列属性
alter table 表
drop column 属性

--修改列名
exec sp_rename '表名.列名','新列名'

--修改表名
exec sp_rename '原表名','新表名'

 3.约束

  • 主键约束:primary key 唯一确定表中每一条记录的标识符
  • 外键约束:foreing key  用于建立和加强两个表数据主键的连接
  • 唯一约束:unique(可以为空)指定一个列或多个列的值具有唯一性
  • 检查约束:check  设置基础条件,以限制输入值
  • 默认约束:Default 插入操作中没有提供输入值时系统会自动加上指定值
--创建约束的语法:
alter table 表名
add constraint 约束名 约束类型 具体的约束说明

-- 对学号添加主键约束primary KEY
alter table student
add constraint PK_学号 primary key (学号)

-- 给成绩表的学号创建一个外键约束
alter table 成绩表
add constraint FK_学号 foreign key (学号)
references student(学号)

-- 检查约束
alter table student
add constraint CH_age check (年龄>18)

-- 对姓名添加一个唯一约束
alter table DISTRIBUTEDadd constraint UN_name UNIQUE (name)

-- 给性别添加默认约束为男
alter table student
add constraint DF_性别 default '男' for 性别

--删除约束
alter table 表名
drop constraint 约束名

 4.增删改查

--增
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
--删
DELETE FROM table_name WHERE condition;
--改
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
--查
SELECT column1, column2, ... FROM table_name;

--Top 5
SELECT TOP 5 * FROM table_name;--sqlserver
SELECT * FROM Persons WHERE ROWNUM <=5;--oracle
SELECT * FROM Persons LIMIT 5;--MySQL 

--返回唯一不同的值
SELECT DISTINCT column1, column2, ... FROM table_name;

-- % 替换0个或多个字符
SELECT name FROM student WHERE name LIKE '王%' -- 查询姓王的学生

-- - 代替一个字符
SELECT name FROM student WHERE name LIKE '王_' -- 查询出姓名是两个字的学生

--聚合函数,对一列值执行计算,并返回单个值。
--sum():计算列值的总和
--avg():计算列的平均值
--max():计算列的最大值
--min():计算列值最小值
select 聚合函数(column_name) from 表名

--group by根据一个或多个列对结果集进行分组,HAVING 子句可以让我们筛选分组后的各组数据
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200 
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;--查找总访问量大于 200 的网站,并且 alexa 排名小于 200

--order by
select *from 成绩表 order by 成绩[desc]

--union [all] all筛选所有的值,否则筛选不重复的值
SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country; 

--关联查询[inner|left|right join...on...]
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;

--嵌套查询
select  *from sc where sno in(select 学号 from student where sdept='计算机系')

 

标签:name,constraint,--,SqlServer,约束,table,基础知识,alter
From: https://www.cnblogs.com/xixi-in-summer/p/17239363.html

相关文章

  • Java基础知识点(方法的重写)
    一定义:当父类的的方法不能满足子类现在的需求时,需要进行方法重新。 在我看来方法的重写就是父类的方法中的行为不能表达出子类的特征,而子类还需要进行行为而对父类的方法......
  • Java基础知识点(继承中构造方法的的访问特点
    一:概述​1.父类的构造方法不会被子类继承。2.子类中的构造方法默认先访问父类中的无参构造,在执行自己。换句话来说,子类不能得到父类的的构造方法,子类进行构造方法默认先访问......
  • Oracle/Mysql/SqlServer 常用函数区别
    1.类型转换   --Oracle  select to_number('123') from dual;  --123;   select to_char(33) from dual;       --33;  select to_date('......
  • sqlserver触发器的使用以及inserted和deleted详解
    背景:最近在项目中有需求是当人员表中有变动时(比如:增加人员、修改人员信息、删除人员信息)需要把这张表中的变动的信息同步到它对应的日志表中。那么如果用代码写逻辑的话在执......
  • 造价基础知识和流程
    前期:计量(计算人工,材料,机械数量)和计价(计算需要花费多少钱),过去称之为预算,现在计价方式主要是清单计价 施工图预算:一般包括平面图,系统图,大量图,详细图 材料预算价格,材料......
  • 性能测试基础知识体系
    转载:https://www.cnblogs.com/imyalost/p/14966389.html谈起性能测试,大家经常聊的是高并发、高可用、性能优化、全链路压测等Topic,听起来都挺高大上,但这些概念追本溯源,还......
  • CentOs7 安装 Sqlserver
    title:CentOs7安装Sqlserver2019date:2023-03-1914:47:00categories:安装教程tags:SqlserverCentOs7安装Sqlserver2019特别鸣谢哔哩哔哩博主:程序员小......
  • Kubernetes学习之基础知识
    Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了许多功能,例如服务发现、负载均衡、自动伸缩、滚动更新等,使得运维人员可以轻松地......
  • Java面试系列:基础知识点
    一、List、Set、Collection的区别 二、ArrayList和LinkedList的区别 三、HashMap和HashTable的区别TRANSLATEwithxEnglishArabicHebrewPolish......
  • SqlServer练习
    /*创建数据库创建数据库包含两个文件(数据库文件和日志文件)*/usemastergo--创建数据库createdatabaseDragonDawsongo--修改数据库字符集alterdatabase......