一、语句操作的基本方法

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. [置顶] P2P网贷对推动社会发展的影响

    P2P网贷对推动社会发展的影响 1 真正的支持了实体经济,一般借款人就在几万或者50万以下 2 关照小微经济,新型行业.一般小微经济的创新更高,对社会的发展最大化. 3盘活存量 放到银行.保险.国债一 ...

  2. Android多线程断点续传下载

    这个月接到一个项目.要写一个像360助手一样的对于软件管理的APP:当中.遇到了一个问题:多线程断点下载 这个 ,因为之前没有写过这方面的应用功能.所以.不免要自学了. 然后就在各个昂站上收索并整理了 ...

  3. out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from

    编译出错: out/target/common/obj/PACKAGING/public_api.txt:22549: error 17: Field android.view.KeyEvent.KE ...

  4. Sql语句之select 5种查询

    select 5种子句:注意顺序where / group by /having / order by / limit / 清空表中的数据:truncate 表名: 导入表结构(不含数据): crea ...

  5. C# MyNewQueue 消息队列

    C# using System; using System.Messaging; using System.Drawing; using System.IO; namespace MyProject ...

  6. UVa---------10935(Throwing cards away I)

    题目: Problem B: Throwing cards away I Given is an ordered deck of n cards numbered 1 to n with card 1 ...

  7. leetcode208 happynumber

    19 is a happy number 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 class Solution {public ...

  8. Java基础之编程语法(二)

    1.常量: 整型:整数,4个字节. 长整型:整数,8个字节.以L结尾. 单精度浮点数:小数,4个字节.以F结尾. 双精度浮点数:小数,8个字节. 布尔:只有两个值,真(true)或假(false),1 ...

  9. [置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】

          有几天没和大家分享博客了,原因很简单,就是我在运行第12章所写的代码时:(开始一切正常,不过没多久就出现了内存泄露!.可能求成心切吧,当时没多加考虑就把代码发上去了.我在此对看过第12章得 ...

  10. 转载纯真ip库

    http://blog.csdn.net/clin003/archive/2007/08/14/1743157.aspx 利用 QQWry.Dat 实现 IP 地址高效检索(PHP) 根据 LumaQ ...