0.前言

前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识。这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句。

SQL(Structured Query Language,结构化查询语言)是一种特定的编程语言,用于管理数据库系统,操作数据甚至编写一些程序。

当然,一方面因为时间问题,一方面因为各大数据库的区别(当然了,还有就是个人对SQL研究并不是那么深)所以这一篇就从SQL的基本操作入手,带领大家一起看看SQL的世界。

1. SQL的分类

在SQL的世界里,被分割为两个部分:DML(Data Manipulation Language 数据操纵语言)、DDL(Database Definition Language 数据定义语言)。当然,也有很多其他的分法,这里参照了机械工业出版社出版的《计算机科学丛书- 数据库系统概念》。

1.1 DML

数据操纵语言,用户可以凭此来访问或者操纵那些被结构化存储起来的数据。DML提供了以下功能:

  • 对存储在数据库的数据进行检索(select)
  • 在数据库中添加新的数据(insert)
  • 修改数据库中的数据(update)
  • 删除数据库中的某些数据(delete)

简单的概括起来就是增删改查,对于开发而言这是一项枯燥乏味的工作,当然也是每个程序必不可少的工作。如果你见到这个词:crud,不要诧异,这是开发对增删改查的一种缩写(create,read,update,delete)。

在技术的演变过程中,为了更快更好的增删改查,有一些大牛开发出了一系列的ORM框架,比如C#里最出名的EntityFramework、与Hibernate同源的NHibernate等等。

1.2 DDL

数据定义语言,用户可以用来创建数据库、修改数据库属性、删除数据库,新建表、视图,修改表、视图,删除表、视图等。与DML不同的是,DDL操作的对象从数据转变成了承载数据的实体或者与操作数据的实体。

还有与DML不同的一点是,DDL更多的会使用 create、alter、drop等关键字(分别用来 创建、修改、销毁)。

1.3 方言

如今的城市人们来自五湖四海,有的人用普通话,有的人还是一口流利的家乡话。与之相同的就是在数据库这个江湖里,各大门派都在标准SQL里添加了自己的东西,让SQL成了一个操持着五湖四海的方言的大家族。比如说微软的Transcat-SQL和PL/SQL。

2. 一些简单操作

这里先简单介绍一下通用SQL下的操作:

2.1 创建数据库

create database test;

这是一个简单的创建数据库的SQL语句,这是标准SQL的一部分。效果就是创建一个名字为test的数据库,字符集等属性是系统的默认值。

当然,在SQL Server里可以通过以下方式指定字符集:

create database 数据库名 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; -- 使用gbk
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- 使用utf8

这是在开发过程中最常用的创建数据库方式。

2.2 创建表

数据表是数据库里最重要的一个实体,我们大概演示一下如何通过sql语句创建一个表:

create table demo
(
[key] int identity primary key ,
[name] varchar(20)
)
go

SQL 创建表的格式如下:

create table <表名>
(
[属性名] <类型> [params...配置]
)

如果有第二个属性,则在第一个之后添加一个逗号,然后继续按照格式声明。

其中 属性名和类型是必须的,配置则可有可无。

常见配置项:

  • identity 表示该列是个自增列,一般是起始1,增长步长为1
  • primary key 表示该列是主键列,只能有一个主键
  • not null 表示该字段非空,如果是空值进来则会报错
  • unique 表示该字段的值不能出现重复

而数据类型则因为数据库不同会有一些细微的差别,所以这里就不错过多介绍了。

2.3 查询

一个简单的查询:

select * from demo;

表示查询该表的所有数组。

然后更进一步,可以限制查询条件:

select * from demo where <条件>;

注意一下这里的条件里的等值判断用的是一个等号,而不像开发语言里用的是双等号。

这时候发现我们用不了那么多的字段,然后筛选出要显示的字段:

select <字段01>,<字段02>,<字段03> from [表名] where <条件>

这里简单介绍一下查询,当然还有很多没有一一介绍,在后续的章节会把这部分补齐的。

2.4 添加数据

在查询之前,我们得先保证数据表里有数据,所以我们看看如何插入数据吧。

插入单条记录:

insert into [表名](<字段1>,<字段2>,<字段3>) values('值1','值2','值3')

在表名后面跟括号,括号内写入要插入值的字段,然后values关键字后面用括号包裹起来的一组值便是要插入的值。插入值要与字段名一一对应。

如果要插入多条记录呢?

insert into [表名](<字段1>,<字段2>,<字段3>) values('值1','值2','值3'),('值1','值2','值3')

如果需要插入多条的话,将数据用括号包裹起来,然后依次跟在values后面。

2.5 修改数据

当我们发现插入的数据有问题的时候或者因为业务的进行,数据库表里的数据需要更新,这时候我们可以参照以下方式写自己的sql:

update [表名]
set <字段1> = <值1>

如果需要更新多个字段,可以在更新字段后面添加一个逗号,然后跟在后面,简单实例:

update AdditionalService
set storeid = 1 , name = '23'

目前所以的更新都是全表更新,当然我们一样可以使用 where来限制。

2.6 删除数据

删除数据的关键字是delete,所以删除的写法是:

delete [表名]
where <条件>

如果不设置where 条件,则删除的是全表数据。

2.7 删除表

删除表的操作:

drop table [表名]

这个操作会把表结构和表里的数据都删除。

3.总结

这一篇大概介绍了SQL的基本用法,开发过程中的SQL基本够用了。后续会随着文章内容逐步填补未介绍的部分。

更多内容烦请关注我的博客《高先生小屋》

C# 数据操作系列 - 1. SQL基础操作的更多相关文章

  1. Oracle知识梳理(三)操作篇:SQL基础操作汇总

    Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:       CREATE TABLE  table_name ( col_ ...

  2. SQL基础操作汇总

    SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:    CREATE TABLE  table_name ( col_name    datatype, -- ...

  3. MySQL数据分析-(8)SQL基础操作之库操作

    前面我们讲了学习SQL的两个逻辑框架,jacky说了这样一个逻辑:库是为了存储表的,所以一定是先有库才有表:同样的道理,有表才有表中的数据,是吧,肯定是这个逻辑:那么,今天jacky就捋着这个逻辑从库 ...

  4. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

  5. Elasticsearch学习系列二(基础操作)

    本文将分为3块讲解Es的基础操作.分别为:索引(index).映射(mapping).文档(document). 索引操作 创建索引库 语法: PUT /索引名称{ "settings&qu ...

  6. MySQL数据分析-(10)SQL基础操作之表操作

    大家好,我是jacky,很高兴跟大家继续分享MySQL数据分析实战课程,前面我们学习了库层面增删改查的SQL语句,这次课jacky将给大家介绍表层面的增删改查, (一)本课时的学习逻辑 表层面的增删改 ...

  7. C# 数据操作系列 - 2. ADO.NET操作

    0.前言 在上一篇中初略的介绍了一下SQL的基本写法,这一篇开始我们正式步入C#操作数据库的范围.通过这一系列的内容,我想大家能对于数据库交互有了一定的认识和基础.闲话不多说,先给大家介绍一个C#操作 ...

  8. SQL基础操作

    SQL是操作数据的语言 增加记录: insert into 数据表名称(字段1,字段2,字段3....)values(值1,值2,值3.....) 查看表结构:desc 表名 inset into x ...

  9. Pytorch系列之常用基础操作

    各种张量初始化 创建特殊类型的tensor a = torch.FloatTensor(2,3) a = torch.DoubleTensor(2,3) ... 设置pytorch中tensor的默认 ...

随机推荐

  1. python初学(三)

    1.以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取,并按照排名先后顺序输出不同年份的前10位大学信息,要求对输出结 ...

  2. vuepress+gitee 构建在线项目文档

    目录 快速入门 在现有vue项目中安装本地开发依赖vuepress 在现有vue项目根目录下创建docs目录 创建并配置文档首页内容 运行,查看效果 可能会出现vue和vue-server-rende ...

  3. 实验一 熟悉IDLE和在线编程平台

    实验目的 1.掌握python IDLE集成开发环境的安装与使用 2.熟悉在线编程平台 3.掌握基本的python程序编写.编译与运行程序的方法 实验内容 1.按照实验指导安装IDLE,尝试交互式运行 ...

  4. Linux-Deepin 下开启SSH远程登陆

    #### 关于deepin系统安装ssh后,root超级用户登录报错的完美解决方案! 最近刚刚接触到deepin,觉得,wow,除了mac,还有这么好看的非win系统,而且第测出那个Linux,宽容度 ...

  5. eclipse 集成git工具

    1.eclipse git插件下载 打开Eclipse,然后点击Help>Install New Software>Add name:git location:http://downloa ...

  6. python爬取优美图库海量图片,附加代码,一键爬取

    优美高清图片为大家提供高清美女套图赏析,非高清不录入,大家的网速要给力. 今天教大家爬取优美图库网站中高质量的图片!! 简单易上手哦~ 使用工具: Python 3.6 pycharm 相关环境: r ...

  7. 【已解决】error setting certificate verify locations报错

    目录 1.问题描述 2.问题分析 3.解决方法 1.问题描述 在公司的电脑上从Github上clone项目的时候git黑窗口报错"error setting certificate veri ...

  8. 在php中如何实现cookie即时生效,不用刷新就可以使用

    参考:https://www.jianshu.com/p/0468ef5dbf4d 今天在用php设置cookie的时候,发现cookie如果只是赋值一次的话,要手动刷新一下浏览器才能把数据及时更新, ...

  9. tp3.2 事务 和 tp5.0事务

    tp3.2: 来源:https://www.kancloud.cn/thinkphp-development/tp323/423369 和: https://blog.csdn.net/mengzuc ...

  10. curl请求本地域名问题

    curl在本地虚拟机上请求本地接口时候,出现域名解析问题,换为ip即可,可用curl_error() 或者curl_errno来调试: vue单个文件在引入时候自己的逻辑js文件一定要放在html后引 ...