14

C# 数据操作系列 - 1. SQL基础操作

 4 years ago
source link: http://www.cnblogs.com/c7jie/p/12862161.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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基本够用了。后续会随着文章内容逐步填补未介绍的部分。

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

uUbmAj7.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK