SqlServer基础知识

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 小数    

 

https://blog.csdn.net/qq_66274152/article/details/127435850

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 tabledrop 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='计算机系')

 

posted @   茜茜87  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示