• C# 培训之零基础入门 09:SQL必知必会


    仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题。我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下:

    1:内存中。缺点,退出游戏,数据就没了;

    2:文件中。好办法!缺点,自己解析文本,把文本变成我们程序中的数据,这个解析的过程叫做协议。协议这个词听上去够恐怖吧,实际上说白了无非就是数据格式怎么样,API接口怎么样之类的东东。

    3:数据库。好办法!好吧,数据库文件其实也就是硬盘上的文件,只不过数据库本身就已经为我们定义好了数据格式和API接口。那么,关系型数据库提供给我们的API接口或者说协议,就是SQL语句,我们利用SQL语句来存储和更新我们的数据。什么?关系型数据库已经落伍了,我们要面向对象数据库?好吧,你继续,我们的课程还是要先学习关系型数据库,还是要学习针对关系型数据库的SQL语句。

    一:什么是关系型数据库?

    关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系 均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的 传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

    那么什么又是SQL?

    结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统;

    以上关于什么是关系型数据库以及什么是SQL的定义摘自网络,如有侵权,不胜荣幸。实际上到目前为止我们还一直没说我们为什么要学习SQL,那么, 原因只有一个:程序员要开发传统应用系统,只要涉及到数据存储的,最普遍的就是使用关系型数据库以及操作它的SQL语句。所以,一个典型的开发应用系统的 程序员,除了掌握一门编程语言,SQL也是必须要掌握的。这就是我们的课程虽然名为C#零基础入门,但是同时也要讲解SQL必知必会的原因。我们的打老鼠 游戏,也会用到SQL来存储每次的成绩,等等。

    那么,学习SQL,有没有快速途径呢?很简单,每日一练,就跟我们学习英语一样。我们今天的课程结束之后就是要建立一个模拟数据库,然后根据这个模 拟数据库,我们以后会每日一练,在每日一练中,慢慢精通SQL。TIP,想花一个礼拜攻克SQL?没问题,但是,下一个礼拜不用,下下礼拜我们就会忘掉。 所以,精通SQL的秘诀就是每日必练。

    二:SQL SERVER

    使用微软的平台进行开发,首选的就是SQL SERVER数据库。我们当前最容易找到(或者说网络上最容易找到的),使用最频繁的是2005和2008版本。最新的是2012,这次我们没要求下载最 新版本。为什么呢?因为数据库的更替对与我们开发来讲并不是那么的必要,如果我们没有特殊需要的话。我们假设你已经安装完毕SQL SERVER了,2005或者2008都无所谓,如果你不知道怎么安装SQL SERVER,我建议bing.com之“sql server 2005 安装图解”。

    那么,数据库安装完毕,第一件事情是不是就是想创建一个数据库进行连接呢?OK,来看我们的示例:

    Lesson9.wmv(我已在线发送给你)

    备注:本文是课程《.NET C# 零基础入门》的免费部分,详细请参见TMJ .NET在线培训

    三:创建示例数据库

    接下来就要创建我们的示例数据库了,用作我们的每日必练项目。请按照视频Lesson9.wmv中的样子,创建数据库TestSample,然后:

    image

    点击1“新建查询”,点击2,选择我们创建的TestSample,然后在3处空白处,输入如下SQL语句:

    CREATE TABLE emp
    (
    EMPNO INT NOT NULL ,
    ENAME VARCHAR(32) DEFAULT NULL ,
    JOB VARCHAR(32) DEFAULT NULL ,
    MGR VARCHAR(32) DEFAULT NULL ,
    HIREDATE DATETIME DEFAULT NULL ,
    SAL int DEFAULT NULL ,
    COMM VARCHAR(16) DEFAULT NULL ,
    DEPTNO VARCHAR(8) DEFAULT NULL ,
    PRIMARY KEY ( EMPNO )
    )
    --
    -- Dumping data for table emp
    --
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7369 ,
    'SMITH' ,
    'CLERK' ,
    '7902' ,
    '1980-12-17' ,
    '800' ,
    NULL ,
    '20'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7499 ,
    'ALLEN' ,
    'SALESMAN' ,
    '7698' ,
    '1981-02-20' ,
    '1600' ,
    '300' ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7521 ,
    'WARD' ,
    'SALESMAN' ,
    '7698' ,
    '1981-02-22' ,
    '1250' ,
    '500' ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7566 ,
    'JONES' ,
    'MANAGER' ,
    '7839' ,
    '1981-04-02' ,
    '2975' ,
    NULL ,
    '20'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7654 ,
    'MARTIN' ,
    'SALESMAN' ,
    '7698' ,
    '1981-09-28' ,
    '1250' ,
    '1400' ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7698 ,
    'BLAKE' ,
    'MANAGER' ,
    '7839' ,
    '1981-05-01' ,
    '2850' ,
    NULL ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7782 ,
    'CLARK' ,
    'MANAGER' ,
    '7839' ,
    '1981-06-09' ,
    '2450' ,
    NULL ,
    '10'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7788 ,
    'SCOTT' ,
    'ANALYST' ,
    '7566' ,
    '1982-12-09' ,
    '3000' ,
    NULL ,
    '20'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7839 ,
    'KING' ,
    'PRESIDENT' ,
    NULL ,
    '1981-11-17' ,
    '5000' ,
    NULL ,
    '10'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7844 ,
    'TURNER' ,
    'SALESMAN' ,
    '7698' ,
    '1981-09-08' ,
    '1500' ,
    '0' ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7876 ,
    'ADAMS' ,
    'CLERK' ,
    '7788' ,
    '1983-01-12' ,
    '1100' ,
    NULL ,
    '20'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7900 ,
    'JAMES' ,
    'CLERK' ,
    '7698' ,
    '1981-12-03' ,
    '950' ,
    NULL ,
    '30'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7902 ,
    'FORD' ,
    'ANALYST' ,
    '7566' ,
    '1981-12-03' ,
    '3000' ,
    NULL ,
    '20'
    )
    INSERT INTO emp
    ( EMPNO ,
    ENAME ,
    JOB ,
    MGR ,
    HIREDATE ,
    SAL ,
    COMM ,
    DEPTNO
    )
    VALUES ( 7934 ,
    'MILLER' ,
    'CLERK' ,
    '7782' ,
    '1982-01-23' ,
    '1300' ,
    NULL ,
    '10'
    )
    --
    -- table dept
    --
    CREATE TABLE dept
    (
    DEPTNO INT NOT NULL ,
    DNAME VARCHAR(32) DEFAULT NULL ,
    LOC VARCHAR(32) DEFAULT NULL ,
    PRIMARY KEY ( DEPTNO )
    )
    INSERT INTO dept
    ( DEPTNO, DNAME, LOC )
    VALUES ( '10', 'ACCOUNTING', 'NEW YORK' )
    INSERT INTO dept
    ( DEPTNO, DNAME, LOC )
    VALUES ( '20', 'RESEARCH', 'DALLAS' )
    INSERT INTO dept
    ( DEPTNO, DNAME, LOC )
    VALUES ( '30', 'SALES', 'CHICAGO' )
    INSERT INTO dept
    ( DEPTNO, DNAME, LOC )
    VALUES ( '40', 'OPERATIONS', 'BOSTON' )
    --
    -- table t1
    --
    CREATE TABLE T1
    (
    ID INT NOT NULL ,
    PRIMARY KEY ( ID )
    )
    INSERT INTO t1
    ( ID )
    VALUES ( '1' )
    --
    -- table t10
    --
    CREATE TABLE T10
    (
    ID INT NOT NULL ,
    PRIMARY KEY ( ID )
    )
    INSERT INTO t10
    ( ID )
    VALUES ( '1' )
    INSERT INTO t10
    ( ID )
    VALUES ( '2' )
    INSERT INTO t10
    ( ID )
    VALUES ( '3' )
    INSERT INTO t10
    ( ID )
    VALUES ( '4' )
    INSERT INTO t10
    ( ID )
    VALUES ( '5' )
    INSERT INTO t10
    ( ID )
    VALUES ( '6' )
    INSERT INTO t10
    ( ID )
    VALUES ( '7' )
    INSERT INTO t10
    ( ID )
    VALUES ( '8' )
    INSERT INTO t10
    ( ID )
    VALUES ( '9' )
    INSERT INTO t10
    ( ID )
    VALUES ( '10' )
    CREATE TABLE emp_bonus
    (
    empno INT ,
    received DATETIME ,
    TYPE INT
    )
    go
    INSERT INTO emp_bonus
    VALUES ( 7934, 2005 - 5 - 17, 1 )
    INSERT INTO emp_bonus
    VALUES ( 7934, 2005 - 2 - 15, 2 )
    INSERT INTO emp_bonus
    VALUES ( 7839, 2005 - 2 - 15, 3 )
    INSERT INTO emp_bonus
    VALUES ( 7782, 2005 - 2 - 15, 1 )

    然后点击4处的“执行”,这样,就能够创建我们的示例数据库了。

    现在,试着清空3处的文本,然后输入:

    select * from emp

    然后点击执行,看看会查询出什么来?

    四:SQL之必知必会

    今天我们将对最简单的SQL语句进行介绍,有了今天的介绍,我们将会给我们的打老鼠游戏增加数据库存储的内容。它们分别如下:

    4.1 select

    顾名思义,是查询,最简单的查询我们刚才已经学会了,是从数据库中取出所有的数据:

    select * from emp

    那么,第二个必须要掌握的就是条件查询:

    select * from emp where ename='smith'

    4.2 insert

    插入一条语句用如下的操作:

    insert into dept (deptno,dname,loc) values (500, 'testdname', 'testloc')

    第一个括号中的是表的字段,第二个括号中的就是对应的值。

    4.3 update

    update dept set dname='testdname2', loc='testloc2' where deptno=500

    该更新语句,我们将deptno为500的那条记录更新为想要的值。

    4.4 delete

    delete dept where deptno=500

    以上是删除语句,注意啊,删除的时候一定要小心,如果不加上条件的话,就会把整个表都删除掉了,后悔也就来不及了。

    TML培训本节知识点

    1:创建数据库用户;

    2:创建数据库;

    3:创建表;

    4:SQL必知必会;

    5:使用C#程序连接数据库,并查询出值来;

    --------------------------------------

    欢迎您,进入 我系程序猿 的cnBlog博客。

    你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。

    You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.

    --------------------------------------

    分享到QQ空间  

  • 相关阅读:
    [转] CSocket 和CAsyncSocket类介绍
    error C2275: 'SOCKET' : illegal use of this type as an expression
    tagVARIANT、VARIANT、_variant_t和COleVariant
    使用MFC WinInet进行FTP中文件的简单上传和下载功能
    【转】VS2008快速将代码中字符串改为_T(“”)风格的方法
    【转】Internet与Intranet区别
    POSIX是什么?
    Ocx控件注册不成功?可能是tlb文件导致~
    十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)
    图像匹配之欧式距离算法(转)
  • 原文地址:https://www.cnblogs.com/jqmtony/p/2910844.html
Copyright © 2020-2023  润新知