一、语句操作的基本方法

1、选中执行。

2、注释的方法‘--’。

二、数据类型

整数:int,bigint,smallint

小数:float,decimal(长度,精度)

字符:char(n),varchar(n)

text——大文本。

逻辑:bit 0,1(true/false)

二进制类型:binary 8000,image

日期:datetime(1753-1-1~9999,12,31),smalldatetime(1900.1.1--2079.6.6)

数据类型的作用:建表,SQL编程

三.、数据库的创建

1.创建数据库

create database MyDB
on primary
(
Name=MyDB,
FileName="D:\MyDB.MDF"
), --创建主数据文件叫MyDB,放在D盘中.
(
Name=MyDB1,
FileName="E:\MyDB1.NDF"
), --创建次数据文件叫MyDB1,放在E盘中.
log on
(
Name="MyDB_Log",
FileName="E:\MyDB.Log"
) --创建MyDB的日志文件,放在E盘中.

2.打开数据库
use MyDB
use master

3.修改数据
alter database MyDB --修改MyDB数据库
add file --添加file文件
(
Name="MyDB2", --创建次数据文件叫MyDB1.

FileName="C:\MyDB2.ndf" --将MyDB次数据文件放在C盘中.
)

4.删除数据库

drop database mydb

5.查看数据库的信息
sp_helpdb mydb
6.重命名数据库
sp_renamedb 'NewMyDB','MyDB'

三、表格的创建

1.创建表格
create table Login
(
UserName varchar(20) primary key, --建主键.

primary key(Code,ChengWei)--联合主键
Password varchar(20) not null, --不能为空值.
Name varchar(20) unique, --建惟一键.
Sex bit default 1, --建默认约束(缺省约束).
Birthday datetime check(birthday>'1900-1-1') --建检查约束.
)

注意:

primary key与unique key都是唯一性约束。但二者有很大的区别:

1.作为primary key的1个或多个列必须为NOT NULL,

如果建表时此列设为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。

而unique key约束的列可以为null,这是primary key与unique key最大的区别。

2.一个表只能有一个primary key(单列或多列,多列主键叫联合主键),但可以有多个unique key。

2.修改表格
alter table Login Add 列名(Money)变量类型 (float) --添加
alter table login drop column Money --删除
alter table Login alter column Money Real --修改

3.删除表
drop table Login

四、数据库设计的三大范式

第一范式:(1NF):列的原子性,每一列不能再往下拆分

第二范式:(2NF):针对于联合主键,其中某些列只和一个主键列有关系违反了第二范式。

第三范式:(3NF):该表中,不能出现与主键间接关联的列,只能有直接关系的列

关键字:
primary key :主键
identity:自增长
references表名(列名):外键关系

三、范式应用举例

 第一范式(1NF):要求关系模式R的所有属性都是不可分的基本数据项,指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

例如:比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式,如下表所示。

用户信息表

编号  姓名 性别  年龄  联系电话 省份  城市  详细地址
1 张红欣  男 26 0378-23459876  河南  开封  朝阳区新华路23号
2 李四平  女 32 0751-65432584  广州  广东  白云区天明路148号
3 刘志国  男 21 0371-87659852  河南  郑州  二七区大学路198号
4 郭小明  女 27 0371-62556789  河南  郑州  新郑市薛店北街218号 

上表所示的用户信息遵循了第一范式的要求,这样在对用户使用城市进行分类的时候就非常方便,也提高了数据库的性能。

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)首先要求数据库表中首先必须有主键。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。其次要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

订单信息表

订单编号  商品编号  商品名称  数量  单位  商品价格
001 1 挖掘机 1 台 1200000¥ 
002 2 冲击钻 8 个 230¥
003 3 铲车 2 辆 980000¥

这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,就非常完美了。如下面这两个所示。

订单信息表

订单编号  商品编号  数量 
001 1 1
002 2 8
003 3 2

商品信息表

商品编号  商品名称  单位  商品价格
1 挖掘机 台 1200000¥ 
2 冲击钻 个 230¥
3 铲车 辆 980000¥

这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

第三范式3NF是第二范式(2NF)的一个子集,即满足第三范式必须满足第二范式。第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关,即任何非主属性不得传递依赖于主属性。简而言之,就是要求一个关系中不包含已在其它关系已包含的非主关键字信息。(不满足时常采用投影分解法解决)

比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。

订单信息表

订单编号  订单项目  负责人  业务员  订单数量  客户编号 
001 挖掘机 刘明 李东明  1台 1
002 冲击钻 李刚 霍新峰  8个 2
003 铲车 郭新一  艾美丽  2辆 1

客户信息表

客户编号  客户名称  所属公司  联系方式
1 李聪 五一建设 13253661015 
2 刘新明 个体经营 13285746958 

这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

数据库基础学习3-T-SQL语句的更多相关文章

  1. 数据库基础,表及SQL语句

    数据库基础及T-SQL语句 字符类型: int 整型 float 小数 double 小数 varchar(20) 字符串 bit 布尔型数据 datetime 日期时间类型 text 长文本 (以下 ...

  2. mybatis基础学习1---(配置文件和sql语句)

    1:配置文件(主要配置文件) 2:配置文件(引入) 3:sql语句解析: <mapper namespace="/"> <!-- 1 -->根据id查对象 ...

  3. Oracle 数据库基础学习 (八) PL/SQL综合练习

    1.定义游标:列出每个员工的姓名.部门名称并编程显示第10个到第20个记录. declare cursor zemp_cursor is (select temp.ename, temp.dname ...

  4. mybatis基础学习3---特殊sql语句(备忘)

    1: 2: 3:resultMap的用法

  5. Oracle 数据库 基础学习 (一) SQL基本知识

    Oracle 从零开始,不知所措.要掌握一种技能,最好的方式是先学会怎么使用它,然后再深入学习,先有样子,再有技术.   一,什么是数据库? 为什么需要数据库? 数据库实质上是一个信息的列表,或者是一 ...

  6. 【初学Java学习笔记】SQL语句调优

    1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...

  7. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  8. 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器

    一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...

  9. (转载)异构数据库之间完全可以用SQL语句导数据

    <来源网址:http://www.delphifans.com/infoview/Article_398.html>异构数据库之间完全可以用SQL语句导数据 告诉你一个最快的方法,用SQL ...

  10. Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句(原创)

    Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句 查找活动的事务以及活动事务关联的会话信息 select s.sid 会话ID, s.serial# 会话序列号, s.usernam ...

随机推荐

  1. android基础篇------------java基础(12)(多线程操作)

    <一>基本概念理解 1.什么是进程? 进程就是在某种程度上相互隔离,独立运行的程序.一般来说,系统都是支持多进程操作的,这所谓的多进程就是让系统好像同时运行多个程序. 2.什么是线程呢? ...

  2. ActionScript3游戏中的图像编程(连载二十四)

    总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477 2.1.1 投影样式的制作 点击左側列表的"投影"系列 ...

  3. 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)

    大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四): ...

  4. T-SQL函数及用法--转

    转自http://www.cnblogs.com/qixuejia/archive/2010/07/14/1777105.html 1. 聚合函数 (1) AVG 函数功能返回组中值的平均值.空值将被 ...

  5. 在SAE上搭建自定义版本WordPress, 并用SAE Storage代替WordPress Uploads

    问题由来: 1. SAE中默认的WP for SAE版本太低, 导致某些基于新版本WordPress的插件不能使用. 2. SAE中单个APP的代码空间仅有100M. 将WordPress中uploa ...

  6. HTML5 总结-Web存储-7

    HTML 5 Web 存储 在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 ses ...

  7. javascript定义函数不同方式的区别

    学习javascript中遇到了这么一个问题,代码如下: var test = 'a'; function test() { alert('Hello World!'); } alert(test); ...

  8. [LeetCode]题解(python):021-Merge Two Sorted Lists

    题目来源: https://leetcode.com/problems/merge-two-sorted-lists/ 题意分析: 题目给出两个排好序的链表,将这两个链表整合成一个新的有序的链表. 题 ...

  9. 迪杰斯特拉算法c语言实现

    /*http://1wangxiaobo@163.com 数据结构C语言版 迪杰斯特拉算法  P189 http://1wangxiaobo@163.com 编译环境:Dev-C++ 4.9.9.2  ...

  10. AutoCAD 2014简体中文版官方正式版x86 x64下载,带注册机,永久免费使用

    注册机使用说明:会有部分杀毒软件报病毒,请无视.操作步骤:1.安装Autodesk AutoCAD 20142.使用以下序列号666-69696969安装.3.产品密码为001F14.安装完成后,启动 ...