数据库的整理


title: 数据库的整理
date: 2018-02-15 22:02:34
categories: Database
tags: [数据库]

SQL语句(sql server)

关于数据库的操作

建立数据库
简单建立:create database 名字
高级方法:
create database <myDB> -- 数据库的名称
on -- 指定用于存储数据库(数据文件) 数据的部分的磁盘文件
primary -- 指定在主要文件组中定义文件的关联的 filegroup 列表
(
  name='myDB',-- 指定文件的逻辑文件
  filename='D:\myDB_MDF.mdf' , -- 指定文件的操作系统文件名
  size=5mb,-- 指定 在 filespec 列表 中定义的文件的初始大小
  maxsize=50mb,-- 指定 在 filespec 列表 中定义的文件可以增加到最大大小
  filegrowth=10% -- filegrowth=growth_increment 指定 在 filespec 列表 中定义的文件的增量
  -- 备注:filegrowth设置不能超过maxsize设置
),
filegroup myDB_FG1 -- 指定文件组的逻辑名称,在数据库中 
(
  name='myDB_FG1',-- 此名称是唯一的,不可以有重复值
  filename='D:\myDB_NDF1.ndf' ,
  size=4mb,
  maxsize=50mb,
  filegrowth=10%
),
filegroup myDB_FG2
(
  name='myDB_FG2',
  filename='D:\myDB_NDF2.ndf' ,
  size=4mb,
  maxsize=50mb,
  filegrowth=10%
)
log on -- 指定用于存储日志文件的磁盘文件
(
  name='myDB_LOG',
  filename='D:\myDB_LOG.ndf' ,
  size=4mb,
  maxsize=50mb,
  filegrowth=10%
)
使用数据库: use <database name>
删除数据库: drop database <name>
filegroup //次数据库 主数据库过于庞大时创建次数据库
//修改数据库 默认的次数据库
alter database myDB modify filegroup myDB_FG1 default
filestream 为储存非结构化数据而产生
创建过程
create database yourDB
on primary (
  name='yourDB',
  filename='D:\yourDB.mdf'
),
filegroup filestreamgroup  -- 在D盘生成文件夹filestreamgroup
contains filestream -- 指定文件在文件系统中存储 filestream 数据
(
     name='yourDB Data',
	   filename='D:\yourDB_Data'   -- FILESTREAM功能允许我们讲BLOB文件直接存储在Windows文件系统中
 )
 log on(
  name='yourDB_Log',
  filename='D:\yourDB.log'
 )
 重命名数据库:sp_renamedb 现名 ,新名

关于表的操作

创建表:
create table <table name>(
    //数据名  数据类型  约束
    ID int primary key identity(1,1),
    name varchar(20) not null,
    birthday Date,
    sex varchar(10),
    age int
)
约束:
 primary key  在插入数据的时候 主键唯一
 identity(起始,步长)  自动增长列 此列在插入值时必须忽略
 not null    不为空
 unique       唯一
 default <value>    默认
向表中加数据:
    //这里可以提前指定列名顺序 可以省略 按默认顺序插入
insert into Teachers(生日,姓名,性别,年龄,工资,工作年限) 
values ('1990-09-09','xxx','F',19,4000.78,1) 
      //插入多个数据要以逗号隔开 日期类型要用‘单引号’隔开
向表中删数据:
delete <表名> where 条件(例:ID=1……)
向表中改数据:
update <表名> set 列名=<修改后的值> where 条件(例:id=2)
修改表:
alter table <表名> alter column 列名 修改后的数据类型
alter table <表名> add 列名 数据类型
删除表:drop table <表名>
架构:   xxxxxx.xxxxxx
创建架构:create schema 架构名
创建表时在名字前加架构名再加.即可
create table 架构名.表名(
   id int primary key identity(1,1) not null,--主键约束  自动编号 
   pro_name varchar(100) unique ,-- 唯一约束
   pro_ID int check (pro_ID between 1001 and 2001),-- 检查约束
   pro_date date default getDate() -- 默认约束
)


增删改查

查询数据:(未完)
select * from 表名   // * 代表所有列
select 列名 from 表名  //不查询所有列
where 子句:
select *from 表名 where 条件(例:EmployeeID =1)//按条件查询
//条件支持的比较运算符 >,<,=,>=,<=,!=,!>,!<(不小于)
//多条件链接 or至少一个满足即可,and所有条件都满足,not不满足条件的
//between 下限and 上限  在下限和上限之间的,not between 下限and 上限 相反
//in (‘值表’)在值表中的值  not in (‘值表’)不在的
//通配符 %任何字符串 _表示单个字符 []指定范围内的字符 [^]指定范围外的字符
//与通配符连用的like关键字   like后内容不分大小写
//例:like '%ion'以ion结尾的任何值  like ‘%rt%’ 包含rt的任何值 
//like ‘_rt’以rt结尾的,三个字的值  like ‘[dk]%’以d,k开头的 
//like ‘[a-d]ear’ 以ear结尾并开头第一个字母在a-d之间,四个字母
//like ‘d[^c]%’  以d开头 第二字母不是c的任意值
//is null 查找为空的  is not null 相反
别名:
select ‘学校’=school,‘地址’=address from 表名 //给列起别名 也可以用 (列名 as 别名)
select e.address,e.age,e.sex from 表名 as e //给表起别名 便于输入列名
select name+‘的工资是’+money as 工资情况 from 表名 //并置文字,提高列的可读性,用加号链接,文字要用‘双引号’隔开,类似语言的printf格式化输出
select money/8 as rate from 表名 //对列进行运算后输出 支持+-*/%
coalesce(列名,列名……)  找出列名中第一个不为空的
isnull(列名,替换值) 可以吧null换为替换值  作为列输出
order by 子句(排序):
select *from 表名 order by name asc/desc 升序/降序 不加就是升序
top关键字:
select top 10 *from 表名  //前10行
select top 10 percent *from 表名  //前10%行
select top 3 with ties 列名 from 表名 order by 排序条件 
//加with ties意思是在列出top指示的行数后再显示排名最靠后的数据  用with ties时必须用order by子句排序
select top 10 *from 表名 where 条件 order by 条件 //top可以和where子句连用
offset&fetch:  (必与order by子句连用)
order by 列名 offset X rows  fetch next Y rows only  //从第x行开始以后y行数据
select  EmployeeID, Title, BirthDate
from [HumanResources].[Employee]
order by EmployeeID
offset 5 rows    //除去从第5行前的所有
检索不重复的数据(distinct):
select distinct  EmployeeID , Title
from [HumanResources].[Employee]

这些是我自己整理的,常用的。

查询部分有好多东西,整理不完了

范式

挺重要的~

可以参考这里的高赞回答。

这里是维基百科的解释,我下载为了pdf打包在这:下载

下面是我的理解

首先明确为什么要规范化,何谓规范化?
放下标准定义,简言之就是要简化表结构,使增删改查的效率提高,减少冗余,减少出错率,
其实就是把大表拆成小表。
各种范式:
第一范式:属性不可再分。不解释了~ 保证表里的数据都是”单一的“就行了。
第二范式:在第一范式的前提下,所有非键属性都完全依赖于全部键。若是键只由一个属性构成,那这个表就必定是符合第二范式的,找找有没有不符合的,将其单独拿出,组成新表,转化就完成了。
第三范式:在第二范式的基础上,非键属性与键(主、候选)之间无传递依赖。反过来说就是非键属性之间都互相无关。只和键有关
BC范式:在第三范式的基础上,无主属性与键之间的部分、传递依赖。

名词解释:
1.非键属性:不是主键、候选键的属性。
2.键,可唯一确定一个元组的属性,可由多个属性构成,也分为主键与候选键。
3.属性:就是列。
4.元组:行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值