.NET零基础入门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,来看我们的示例。
使用微软的平台进行开发,首选的就是SQL SERVER数据库。我们当前最容易找到(或者说网络上最容易找到的),使用最频繁的是2005和2008版本。最新的是2012,这次我们没要求下载最新版本。为什么呢?因为数据库的更替对与我们开发来讲并不是那么的必要,如果我们没有特殊需要的话。我们假设你已经安装完毕SQL SERVER了,2005或者2008都无所谓,如果你不知道怎么安装SQL SERVER,我建议bing.com之“sql server 2005 安装图解”。
那么,数据库安装完毕,第一件事情是不是就是想创建一个数据库进行连接呢?OK,来看我们的示例:
四:视频
非公开部分,请联系最课程(www.zuikc.com)
五:创建示例数据库
接下来就要创建我们的示例数据库了,用作我们的每日必练项目。请按照视频中的样子,创建数据库TestSample,然后:
点击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语句进行介绍,有了今天的介绍,我们将会给我们的打老鼠游戏增加数据库存储的内容。它们分别如下:
select
顾名思义,是查询,最简单的查询我们刚才已经学会了,是从数据库中取出所有的数据:
select * from emp
那么,第二个必须要掌握的就是条件查询:
select * from emp where ename='smith'
insert
插入一条语句用如下的操作:
insert into dept (deptno,dname,loc) values (500, 'testdname', 'testloc')
第一个括号中的是表的字段,第二个括号中的就是对应的值。
update
update dept set dname='testdname2', loc='testloc2' where deptno=500
该更新语句,我们将deptno为500的那条记录更新为想要的值。
delete
delete dept where deptno=500
以上是删除语句,注意啊,删除的时候一定要小心,如果不加上条件的话,就会把整个表都删除掉了,后悔也就来不及了。
.NET零基础入门09:SQL必知必会的更多相关文章
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现
075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...
- 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现
074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...
- 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现
073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法
071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...
- 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据
070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
- 069 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 01 综合案例-数组移位-案例需求
069 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 01 综合案例-数组移位-案例需求 本文知识点:综合案例-数组移位-案例需求 说明:因为时间紧张,本人写博客 ...
- 047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用
047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用 本文知识点:嵌套while循环应用 什么是循环嵌套? 什么是循环嵌套? ...
随机推荐
- 【LOJ】#6433. 「PKUSC2018」最大前缀和
题解 神仙的状压啊QAQ 设一个\(f[S]\)表示数字的集合为\(S\)时\(sum[S]\)为前缀最大值的方案数 \(g[S]\)表示数字集合为\(S\)时所有前缀和都小于等于0的方案数 答案就是 ...
- bzoj 1103
题目大意:有一棵树根为1,刚开始每条边的权值为1, 现在有m + n - 1 个操作, A :x y , 将x和y相连的边权值变为1, W:x, 询问x到1路径上的权值和. 思路 : 方法一: ...
- Floyd求最小环!(转载,非原创) 附加习题(原创。)HDU-1599
//Floyd 的 改进写法可以解决最小环问题,时间复杂度依然是 O(n^3),储存结构也是邻接矩阵 int mincircle = infinity; Dist = Graph; ;k<nVe ...
- CentOS图形界面下如何安装Eclipse和使用maven
不多说,直接上干货! http://www.eclipse.org/downloads/packages/release/Kepler/SR2 下载到/usr/local/下,解压完成之后,我们想用这 ...
- Vue.js组件遇到的那些坑
对于绝大多数开发人员来讲,组件是使用Vue.js不能逃避的话题,当然实际开发也会有很多需要注意的地方,一下均为实际操作中遇到的坑,接下来逐一为大家分享: 1.定义并注册组件必须要在声明Vue实例之前, ...
- jqplot利用ajax传值画图表(利用jsp连接数据库)
实现从数据库中取得数据,再把数据传给画jqplot的jsp界面!jsp界面再进行画图,画出我们所需的图表! 有两个jsp界面,7-12.jsp用来连接数据库,并把数据传给ajaxauto.jsp,aj ...
- 基于图文界面的蓝牙扫描工具btscanner
基于图文界面的蓝牙扫描工具btscanner btscanner是Kali Linux内置的一款蓝牙扫描工具.它提供图文界面,更便于渗透测试人员查看扫描信息.该工具会自动使用主机所有的蓝牙接口,并 ...
- iOS 11开发教程(十六)iOS11应用视图之删除空白视图
iOS 11开发教程(十六)iOS11应用视图之删除空白视图 当开发者不再需要主视图的某一视图时,可以将该视图删除.实现此功能需要使用到removeFromSuperview()方法,其语法形式如下: ...
- 项目冲刺Second
Second Sprint 1.各个成员今日完成的任务 蔡振翼:完成管理员界面 谢孟轩:完成用户界面 林凯:完成登录界面 肖志豪:完成主界面 吴文清:创建数据库 刘华强:完成连接数据库,编写查询语句 ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...