sql
Posted 林新i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql相关的知识,希望对你有一定的参考价值。
第一章数据库的设计
x-y数据的几种关系
有四种方式:
一对一:假设每一辆个停一个车位,每一辆车停一个车位 1:1
一对多:x中的一个实体y中的任意数量就是说一个客房可以住多个客人就是一对多 1:N
多对一:客房可以住多个客人就是一对多反过来说就是客房实体之间就是多对一关系 N:1
多对多:图书可以借给多个读者,读者可以借阅多本书,图书和读者就是多对多的关系 M:N
1.第一范式:的目标是确保每列的原子性,如果每列或者多个属性值都是不可再分的最小值
数据单元 满足第一范式
2.第二范式
第二范式(2NF)在第一范式的基础跟进一步其目标是确保中的每列都和主键相关如果满足
第一范式并且除了主键以外的其他都依赖该主键,者满足第二范式
3.第三范式
第三范式(3NF)在第二范式更进一步 如果满足主键 的列与列之间的相互依赖则满足第三范式
E-R图就是关系图 有属性值 有实体 有连接线 用形状描述的图行叫E-R图
设计E-R图的作用就是可以看清楚图行中的系统需要什么样的属性 需要什么要的实体和连接什么样的
实体相连和关系位置一眼看清
设计数据库的步骤:
1.信息重复 2.更新异常 3.插入异常 4.删除异常
绘图的进本操作
属性 表示椭圆 有联系表示菱形 实体是指 一种一行特定的数据,但是我们开发时,也常常把一个表称为一个实体 表示一个 矩形
数据的重复被称为冗余 pk 表示主键 标识就是设置主键
E-R视图就是 绘图 visio2007绘图工具 在创建数据库的时候我们要经过绘图 绘图可以让我们的思路更加清晰 让我们的效率更加有所提高
实体: 可以这么理解就是一个孩子叫宝宝 他是人 就是一个实体
属性: 属性就是一个游戏中有角色 角色有武器 和装备 和名字 就是属性
联系: 可以这么理解一个男孩子和女孩子是情侣关系就是联系
第二章 数据库的实现
INSERT [INTO] 表名 {列名1,列名2}
select ‘张可‘,7,1 UNION
select dasd‘ 4,0 UNION
select ‘gds‘. 5,0
删除表中数据
truncate table PurchasepaymentItem
insert 表名 vaLues{值一,值二.....}
其中 INTO 可选 ‘ ‘ union
修改数据
update 表名 set 列=更新值 where (更新条件)
update 表名 set StudentName=‘葛天中‘ where StudentName=‘王小毛‘
查询数据 SELECT * FROM 表名 查询表所以列 *
单条插入
insert into 表名(字段1,字段2……) values (内容1,内容2……);
SELECT 列名1,列名2....FROM 表名 where [条件] ORDER BY 表名 按升序排列
like 模糊查询
--使用like 进行模糊查询
select * from Student where StudentName like ‘%木%‘
删除语句
DELETE FROM 表名 WHERE 条件 +id+
delete 表名 where 条件 列 =什么?
主数据文件 *.mdf
次数据库文件 *.ndf
日志文件 *.ldf
创建数据库 基本步骤
CRATE DATABASE 数据库名
ON[PRIMARY]--可以省略
{
<数据库参数> [,....n] [<文件组参数>]
NAME=‘MySchool_data‘, 文件组名
FILENAME=‘D\project\MySchool_data.mdf‘, 储存IP地址
SIZE=5MB, 初始化的文件大小
MAXSIZE=100MB, 最大值为100
FILEGROWTH=15% 文件的增长率
}
LOG ON
{
(<日志文件参数>[.....n])
日志文件的具体描述,各参数含义同上
NAME=‘MySchool_log‘, 文件名
FILENAME=‘D:\project\MySchool_log.ldf‘, 储存的Ip地址
SIZE=2MB,初始化的大小
FILEGROWTH=1MB 增长的量
}
((NAME=逻辑文件名))
FILENAME=物理文件名
[,SIZE=大小]
[,MAXSIZE={最大容量|UNLIMITED}]
[,FILEGROWTH=增长量])[.....n]
PRIMARY:选择项目是一个关键字,指定主文件组中的文件
LOG ON:指明事物日志文件的明确定义
NAME 指定数据库的逻辑名称,这是在sqlServer中使用的名称,是数据库在sqlServer中的标识符
FILENAME:指定数据库所在文件名称和路径,改操作系统文件名和NAME的逻辑名称一一对应
size:指定数据库的初始化容量大小
MAXIZE:指定操作系统文件可以增长到的最大值
文件日志有分号隔开()
删除数据库 的基本语法 DROP database 数据库名
删除表 的基本语法 DROP table 表名
整型: int smallint tinyint
浮点型 feal 近似值类型 float 近似数值类型 deimal固定精度和范围是小数点左右
字符型:varchar text char
带n的表示unicode的字符编号 带var表示长度可变 nvarchar varchar 的区别
nvarchar 的固定长度是 unicode 的字符编码级 长度不可变是固定值 可以最大值8000个字符
varchar 可以表长度 长度 不是unicode的字符编码级 可与最大4000个字符
约束
主键约束(primary key constraint) 要求主键列的数据唯一 并且不允许为空 如学号能唯一确定一名学生
非空约束(Not Null) 要求列不能存在空值,如学生的姓名不能为空
检查约束 (Check Constraint)要求某列的取值范围限制,格式限制等 如有关年龄的约束
唯一约束 (Unique Constraint)要求该列的值必须唯一 允许为空但是能出现一个空值
默认约束 (Default Constraint)某列的默认值,如男性学生较多该性别默认为男"男",
外键约束 (Foreign Key constraint)用于在两表之间建立关系 需要指定引用主键表的那一列
--添加主键约束将 (Student 作为主键)
ALTER TABLE Student
ADD constraint pk_StudentNo primary key (StudentNo)
--添加唯一约束 (身份证号唯一,因为每个人的身份号全国唯一的)
AlTer Table student
ADD constraint UQ_IdentitCard uNIQUE (identitCard)
--添加默认设置(如果不填定地址,默认认为“地址不详”)
AlTER table student
ADD constraint DF_Address default (地址不详) FOR Address
--添加检查约束 (要求出生日期在1980年1月1日之后)
ALTER TAble student
ADD Constraint CK_BornDate CHECK (BornDate >=‘1980-01-01‘)
--添加外键约束 (主表和从表Result 建立关系,关联列为StudentNo)
Alter table student
ADD constraint FK_StudentNo foreign KEy(StudetNO) PrFERENCES Student(StudentNo)
Go
非空约束 是在键表时自己定的
删除约束
语法
ALTER table 表名
DROP constraint 约束名
--添加主外键
alter table DEPT add constraint PK_deptno primary key(deptno);
alter table EMP add constraint PK_empno primary key(empno);
alter table EMP add constraint FK_deptno foreign key(deptno) references DEPT(deptno);
DOP DATABASE 数据库名
DOP table 表名
主数据 添加约束 ALTER TABLE 表名 studnet
ADD conStraint 约束名 CK_你的列名 约束类:primary key(你的列名)
当然不同的约束添加的东西也就不一样 想检查约束要给判断值 添加外键约束就要给表中的关联建立好关系
添加默认值就要给默认值 DEFAULT (‘地址不详‘)for Address
删除的约束
Alter table 表名 Student
drop constraint 约束名 约束列名就可以了
--创建表如果表中有数据就删除 可以一值执行此命令
use Master
use MySchool
GO
if ExisTs(SElect * from sysobjects WHERE Name=‘Student‘)
DROP Table student
CREATE Table student (
.........
变量命名 数据类型 Not null ,
StudentID int Not null,
)
第三章 SQL 编程
1.使用变量
在sqlserver 中声明变量必须遵循变量前加上 @符号 如果加上两个@@个符号 就是系统变量
declare @name varchar(8) 声明变量并且给变量类型
set @name=‘帅哥‘ 给变量赋值
Select @name=‘帅哥‘ 给变量赋值 给变量赋值有两种方式
print @name 有两种显示方式 一种是消息框弹出
SELECT @name 还有一种是 表格框弹出
SET 和 SELECT 的语句区别
SET | SELECT | |
同时对多个变量值 | 不支持 | 支持 |
表达式返回多个变量时 | 出错 | 将返回的最后一个值 赋给变量 |
表达式未返回多个值 | 变量被赋值为NUL | 变量保持原值 |
GO
declare @linxin varchar(10)
set @linxin=‘90‘
IF(@linxin>85)
BEGIN
print ‘老师奖励一部iphone6s‘
END
ELSE
BEGIN
print ‘罚抄试卷10遍‘
END
GO
if 选择结构 当数据大也85就执行第一条语句 假若85>变量的话 就执行第二条语句
因为只会 else 不会进行判断
以上是关于sql的主要内容,如果未能解决你的问题,请参考以下文章