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