sql学习

发布 2021-05-02 03:05:28 阅读 8005

53学习笔记---sql server总结(基本涵盖sql的所有操作)

sqlserver总结(基本涵盖sql的所有操作ddl(databasedefinitionla;dml(databasemanipulation;dcl(databasecontrollangu;dtm(databasetrasactionma;知识概要:;|1.查询select;|-2.

数据库。

sql server总结(基本涵盖sql的所有操作)

缩写:ddl(database definition language): 数据库定义语言。

dml(database manipulation language): 数据库操作语言。

dcl(database control language): 数据库控制语言。

dtm(database trasaction management): 数据库事物管理。

知识概要:---1.查询select

---2.数据库定义语言ddl: 对表,视图等的操作, 包括create,drop,alter,rename,truncate

数据库操作--|3.数据库操作语言dml: 对记录进行的操作, 包括insert,delete,update

---2.数据库控制语言dcl: 对访问权限等的操作, 包括grant,revoke

---2.数据库事物管理dtm: 对事物的操作, 包括commit,rollback,s**epoint

事物的是由dml(insert,delete,update)开启的;

而引起事物的提交或结束原因有:

dtm操作: commit,rollback,s**epoint

系统崩溃宕机: 隐式rollback

正常: 隐式commit

ddl和dcl操作: ddl(create,drop,alter,rename,truncate)

dcl(grant,revoke)

注意ms-sql的特殊处:

ms-sql中的事物: 自动事物(commit)和手动事物(begin transaction).

在sql中dml(insert,delete,update)会引起自动事物commit, 而oracle中不会 ms-sql的参数: 只能返回0或非0(如: 1,2)数字。

ms-sql的存储过程: 一定会有返回值(return value), 默认返回0(成功). 在程序获取改值, 需要创建return参数对象(添加到参数列表), 并设定其方向。

mssqlserver的登录过程分两种:

windows集成验证: windows用户名和口令 ->sqlserver登录列表 ->映射到用户列表 ->登录成功。

sqlserver验证: sql用户名和口令 ->映射到用户列表 ->登录成功。

两种登录方式的连接串:

string connectionstr = data source=.;database=test;user id=sa;password=sa"; string connectiongstr ="data source=.\sqlexpress;database=test;integrated security=true";

数据库设计原则:

数据库设计指导原则(关系数据库中的数据通过表来体现): 先确定表后确定业务字段。 每个业务对象在数据库中对应一张表(若业务对象复杂则可对应多张表), 业务对象间每有一个关系也要对应一张表。

注意: 业务字段需要跟项目结合, 例如: 学生的健康情况可以用一个字段(优、良等)表示, 但针对健康普查, 学生的健康情况需进一步划分为身高、体重、血压等。

如: 学校中的学生对象: 学院表(学院id, 专业id); 专业表: 专业表(专业id, 专业名);学生表(学生id, 学院id,专业id)

数据库设三大计原则:

a. 完整性: 设计方案能够保存项目中的各种信息(要全)

b. 低冗余: 通过主键保证记录的不重复、通过表间关系减少冗余字段。

c. 尽可能满足3范式(normalform):

1nf: 1个字段只能包含一个业务信息片(即项目中的业务字段表示的信息不可再分) nf: 能找到1个或多个字段的组合, 用来唯一的确定表中的记录(即必须有主键).

nf: 主键唯一且直接确定表中的其他字段(即无传递依赖, 如: 教师id, 办公室id, 办公室**关系中存在传递依赖)

注意事项: 尽可能不用业务字段做主键, 通常的手段为自增列当主键, 并且末尾添加默认时间字段(getdate())

尽量采用sql92**, 保证可移植性。 如: 在sql2000中, top函数只能跟常量(sql2005可跟变量).

通用的解法为拼query串, 用exec(query串)取结果。

备注:sql中使用+拼接字符串, oracle中使用||拼接字符串。

c#数据类型:

整数: sbyte,byte,short,ushort,int,uint,long,ulong

实数: float,double,decimal

字符: char,string

布尔: boolean

日期: datetime

对象: object

全局唯一标识: guid

sql数据类型:

整数: bit(0,1),tinyint(8),smallint(16),int(32),bigint(64)

实数: float,real,numeric

字符: char(8000),nchar(4000),varchar(8000),nvarchar(4000),ntext

日期: smalldatetime(1900,1,1-2079,6,6),datetime(1753,1,1-9999,12,31)

货比: money

二进制: binary

图像: image

标识: uniqueidentity

-创建数据库:

ifexists(select*from sysdatabases where[name]='teststudent')

dropdatabase teststudent

gocreatedatabase teststudent

onname ='teststudent_db', 数据库逻辑名。

filename ='d:\workcode\db\',size =3,filegrowth =10,maxsize =100logon

name ='teststudent_log',filename ='d:\workcode\db\',size =3,filegrowth =10,maxsize =100

gouse teststudent

go-创建表, 约束类型: 主键、外键、唯一、check约束、非空约束。

ifexists( select*from sysobjects where[name]='t_student'and[type]='u') droptable t_student

gocreatetable t_student

sno intidentity(100,1) primarykey, -可以使用scope_identity获得刚生成的id sname nvarchar(50) notnull,sgender nchar(1),sage tinyintcheck(sage >=20and sage <=30),home nvarchar(100) default('北京'),idcard nvarchar(18) unique

goifexists( select*from sysobjects where[name]='t_score'and[type]='u')

droptable t_score

gocreatetable t_score

id intprimarykey,sno intidentity(100,1) foreignkeyreferences t_student(sno),score tinyint

go-修改表结构。

altertable t_student

add education nchar(3)

goaltertable t_student

dropcolumn education

go-修改表约束。

altertable t_student

addconstraint pk_sno primarykey(sno),constraint ck_gender check(gender in('男','女'))constraint df_home default('北京') for home,constraint uq_idcard unique(idcard)

goaltertable t_score

addconstraint fk_sno foreignkeyreferences t_student(sno)

go-创建联合主键。

altertable t_sc withnocheck

addconstraint[pk_t_sc]primarykeynonclustered(

studentid,courseid

go-新增(插入)数据。

insertinto t_student(sname,sgender,sage) values('张三','男',23)

insertinto t_student(sname,sgender,sage)

select'李四','男',25union

select'王五','女',26union

select'赵六','男',28

go-删除数据。

truncatetable t_student --只删除表的数据。

SQL学习

distinct 用于返回唯一不同的值。从 company 列中仅选取唯一不同的值,我们需要使用 select distinct 语句。order by 语句。order by 语句用于根据指定列对结果集进行排序,默认为升序排序,desc为降序排序。以字母顺序显示公司名称 以逆字母顺序显示 以逆字母...

SQL学习

sql备份和还原。sql备份。1 sql数据库恢复模型。1 完全恢复模型。1 备份时要备份数据库的数据文件和日志文件。2 还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。3 能还原全部数据,并可以将数据库恢复到任意指定的时刻。4 为保证实现即时点恢复,对数据库的所有 作都将完整地记入...

sql学习

存储过程入门与提高。什么是存储过程呢?定义 将常用的或很复杂的工作,预先用sql语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。讲到这里,可能有人要问 这么说存储过程就是一堆sql语句而已啊?microsof...