16-数据库开发及ado.net

数据库SQl,创建数据库和表,增删改语句,约束,topDistinct,聚合函数介绍

SQL语句入门(脚本、命令)

SQL全名是结构化查询语言(Structured Query Language)

SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法。

Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号。

Sql中的注释“——” 单行注释比较好

判断俩个数据是否相等使用=(单等号)

在sql语句中sql代码不区分大小写

SQL主要分为:

DDL(数据定义语言、建表、建库等语言)(例:Create Table、Drop Table、Alter Table)

DML(数据操作语言)(例:Select、Insert、Update、Delete)

DCL(数据库控制语言)(例:GRANT授权、REVOKE取消授权)

实例代码:

--1.创建一个数据库

create database School;

--删除数据库

drop database School;

--创建数据库的时候指定一些选项

create database School

on primary

(

name='School',

filename='D:\Desktop\置心一处,无事不成。\二、编程\(四)笔记\黑马程序员.NET视频教程-Time\第课-数据库开发及ado.net\School.mdf',

size=5mb,

--filegrowth=10mb,

filegrowth=10%,--按照文件的百分比增长

maxsize=100mb

)

log on

(

name='School_log',

filename='D:\Desktop\置心一处,无事不成。\二、编程\(四)笔记\黑马程序员.NET视频教程-Time\第课-数据库开发及ado.net\School_log.ldf',

size=3mb,

filegrowth=3%,

maxsize=20mb

)

--切换数据库

use School;

--在School数据库中创建一个学生表.TableStudent

Create table TblStudent

(

--表中列的定义在这对小刮号中

tSId int identity(1,1)  primary key,

tSName nvarchar(10) not null ,

tSGender bit not null,

tSAddress nvarchar(300),

tSPhone varchar(100),

tSAge int,

tSBirthday datetime,

tSCardId varchar(18),

tsClassId int not null--最后一行不加“,”

)

go

--创建一个班级表

create table TblClass

(

tclassId int identity(1,1) primary key,

tclassName nvarchar(50) not null,

tclassDesc nvarchar(100)

)

介绍生成脚本工具

数据库→右键→任务→生成脚本

可选择生成什么样的脚本

  1. 选择生成的数据库版本
  2. 是否包含某些脚本等
  3. 是否生成带数据的脚本(2005、2008都有该功能Express没有。)

简单数据插入INSERT

--使用insert语句向数据库的表中插入数据

select * from TblClass

--1.insert向表中插入一条数据

insert into TblClass(tclassName ,tclassDesc ) values('Time第三期','珍惜时光')

--向自动编号列插入数据

set identity_insert tblClass on

insert into TblClass(tclassId ,tclassName ,tclassDesc ) values(101,'Time第三期','珍惜时光')

set identity_insert tblClass off

--Ctrl+R 快捷键

--如果要向该表中的除了自动编号以外的其它所有列都插入数据,则可以省略列名

insert into TblClass values('Time第四期','时光不老,你我不散')

select * from TblStudent

--向TblStudent表中插入数据

----表中列的定义在这对小刮号中

--   tSId int identity(1,1)  primary key,

--   tSName nvarchar(10) not null ,

--   tSGender bit not null,

--   tSAddress nvarchar(300),

--   tSPhone varchar(100),

--   tSAge int,

--   tSBirthday datetime,

--   tSCardId varchar(18),

--   tsClassId int not null--最后一行不加“,”

insert into TblStudent(tSName,tSGender,tSAddress,tSPhone,tSAge,tSBirthday,tSCardId,tsClassId)

values('Time001',0,'上海区','1778918281',18,'1989-10-11','78267287282819829X',1)

insert into TblStudent

values('Time001',0,'上海区','1778918281',18,'1989-10-11','78267287282819829X',1)

--insert语句向表中那些不允许为空的列插入数据(tsClassId 不允许为空,必须插入数据)

insert into TblStudent(tSName,tSGender ,tSAddress ,tsClassId )

values('Time002',0,'上海''郊区',2)

--null值就是表示空值

--insert into语句一次只能向表中插入一条记录,如果通过一条语句向表中插入多条记录,

--则需要使用其它方式insert语句。

select * from TblClass

--通过一条sql语句向表中插入多条sql语句

insert into TblClass(tclassName ,tclassDesc)

select 'Time第五期','珍惜时间,岁月不老' union

select 'Time第五期','珍惜时间,岁月不老' union

select 'Time第五期','珍惜时间,岁月不老' union

select 'Time第五期','珍惜时间,岁月不老' union

select 'Time第五期','珍惜时间,岁月不老' --最后一行不需要union

create table TblClassBak

(

ClsId int identity(1,1) primary key,

ClsName nvarchar(50) not null,

ClsDesc nvarchar(50) null

)

select * from TblClassBak

--将TblClass表中的数据导入(复制)到TblClassBak表中

--也是使用Insert语句

--insert into表(列) select 列,列from 表

insert into TblClassBak (ClsName ,ClsDesc )

select tclassName,tclassDesc from TblClass

--N前缀,在存储中文字符时候,必须加大写字母N。

简单数据更新(数据修改)

use School

select * from TblClass

--更新语句

update 表名 set 列名=值,列名=值 where 条件

--在编写更新语句的时候,如果没有where条件则表示将表中的所有数据都更新为指定的数据。

--所有学生年龄加

update Student set sAge=sAge+1

--这么写tclassName='▲',表示这列的值变为一个‘▲’

--而我们的要求是在原来的列的基础上加上‘▲’

update TblClass set tclassName=tclassName +'▲' where tclassId <100

--更新多列

update TblClass set tclassName=tclassName +'▲',tclassDesc =tclassDesc+'★' where tclassId =100

--where中可以使用其它的运算符:(||)or ,<>(!=), (&&)and,(!)not

简单数据删除(DELETE)

删除表中全部数据:delete from Student

Delete 只是删除数据,表还在,和Drop Table不同

Delete 也可以带whre子句删除一部分数据:例:delete from student where sAage >20

Truncate table student 的作用跟delete from student 一样

都是删除student表中的全部数据,区别在于:

1.  Truncate语句非常高效。由于truncate操作采用按照最小方式记录日志,所以效率比较高。对于数百万条数据使用truncate删除只要几秒钟,而使用delete需要几个小时。

2.  Truncate语句会把表中的自动编号重置为默认值(恢复到种子的位置),而通过delete删除表中的数据后,还是从之前的数据继续添加。

3.  Truncate语句不触发delete触发器。

4.  Truncate 只能将表中所有数据删除,无法添加where,不能根据条件来删除。

--复习

insert into 表(列) values(值)

update 表 set 列=值,列=值 where ...

--删除语句

delete from 表名  where ...

select * from TblClass

--删除tclassId为偶数的数据

DELETE FROM TblClass where tclassId%2=0

--删除表中全部数据

delete from TblClass

truncate table TblClass

--删除表

drop table TblClass

通过设计器增加约束(结束.保证数据完整性)

--通过设计器添加约束

--为EmapEmail添加一个唯一约束

--设计→右键→索引/键(已存在EmpId主键索引)→添加→设置(类型:唯一键;选择对应的列)

--为性别添加一个默认约束,默认为'男'

--设计→选中该列→在下方属性中→默认值或绑定(输入:男)

1.主键约束

2.外键约束

3.唯一约束

4.默认约束

5.检查约束

6.非空约束

7.添加外键时,设置级联更新,级联删除

通过SQL添加约束

--删除表

drop table Employees

drop table Department

--创建表

create table Employees

(

EmpId int identity(1,1),

EmpName varchar(50),

EmpGender char(2),

EmpAge int,

EmpEmail varchar(100),

EmpAddress varchar(500)

)

create table Department

(

DepId int identity(1,1),

DepName varchar(50)

)

-============手动增加约束==========

--手动删除一列(删除EmpAddress列)

alter table Employees drop column EmpAddress --删除、修改时候需要加关键字column,添加时候则不需要。

--手动增加一列(增加一列EmpAddr varchar(1000))

alter table Employees add  EmpAddr varchar(1000) not null

--手动修改一下EmpEmail的数据类型(varchar(200))

alter table Employees alter column EmpEmail varchar(200) not null

--为EmpId添加一个主键约束

alter table Employees add

constraint PK_Employees_EmpId primary key(EmpId)

--非空约束,为EmpName增加一个非空约束

alter table Employees alter column EmpName varchar(50) not null

--为EmpName增加一个唯一约束

alter table Employees add constraint

UQ_Employees_EmpName unique(EmpName)

--为性别增加一个默认约束,默认为'男'

alter table Employees add constraint

DF_Empyloyees_EmpGender default('男') for EmpGender

--为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。

alter table Employees add constraint

CK_Employees_MepAge check(EmpAge>=1 and EmpAge<=120)

--创建一个部门表,然后为Employee表增加一个DepId列。

alter table Employees add DepId varchar(50) not null

--为Department表增加一个主键约束

alter table Department add constraint

PK_Department_DepId primary key(DepId)

--为DepName列增加一个非空约束与唯一约束

--非空约束

alter table Department alter column DepName varchar(50) not null

alter table Department add constraint UQ_Department primary key(EepName)

--为Employee表增加一个DepId列。

alter table Employees add DepId int not null

--增加外键约束

alter table Employees add constraint

FK_Emolopyees_DepId foreign key(DepId) references Department(DepId)

--删除Employee

drop table Employees

drop table Department

truncate table TblClass

--通过sql代码删除约束

alter table Employees drop constraint CK_Employees_EmpAge

--用一句话来删除相应的约束

alter table Employees drop constraint

CK_Employees_EmpAge,

CK_Employees_MepAge,

DF_Empyloyees_EmpGender

--通过一句代码来创建所有约束

alter table Employees add

constraint UQ_Employees_Empname unique(Empname)

constraint CK_Employees_EmpAge check(EmpAge>=1 and EmpAge<=120),

onnstraint DF_Employees_EmpGender default('男') for EmpGender,

constraint FK_Employees_Dempartment foreign key(DepId)

references Department(DepId) on delete cascade on update cascade

数据检索:数据查询

--查询所有数据:表中的所有列的所有行。

select

from TblStudent

--查询指定的列的数据,由于没有加where条件所以这里也是要返回所有行的数据。

select tsname,tsgender,tsage

from TblStudent

--as 可以设置显示的列名

select '黄林' as 姓名,18 年龄,'huanglin@yahoo.com' 邮箱

select 1+1 as '1+1的结果'

--获取当前系统时间(网格型)

select getdate() as 时间

--输出时间(文本型)

print getDATE()

TOPDistinct

TOP/Distinct

--查询前五个

select top 5 * from Employees

--查询ID最大值前五条,降序排序

select top 5 * from Employees order by EmployeeId desc

--查询部分数据前五条

select top 5

Lastname,

FirstName,

[Address]--因为Address是关键,则需加上[]

from Employees

--查询前百分之十(向上取整)

select top 10 percent * from Employees

--获取年级最小的五个学生

select top 5 * from TblStudent order by tsage asc

--获取年纪最大的%的学生

select top 10 * from TblStudent order by tsage desc

--distinct是对查询出的整个结果集进行数据重复处理的,而不是针对某一列

select

distinct

tsname,

tsgender,

tsaddress

from TblStudent

聚合函数                                        

SQL聚合函数:

MAX(最大值)、MIN(最小值)、AVG(平均值)、SUM(和)、COUNT(数量:记录的条数)

第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍的更多相关文章

  1. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  2. 第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case

    第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case SqlHelper using System; using System.Collections.Generic; ...

  3. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  4. 第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

    第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  ...

  5. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

  6. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  7. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  8. GZFramwork数据库层《四》单据主从表增删改查

    同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...

  9. GZFramwork数据库层《三》普通主从表增删改查

    运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...

随机推荐

  1. title

    事实上 @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import ur ...

  2. C#为什么不能像C/C++一样的支持函数只读传参

    C#为什么不能像C/C++一样的支持函数只读传参? 这个问题其实问的人挺多的,我自己也经常想实现这个功能,但是发现总是那么的不尽人意. 有些人倒是给出了一下答案,但是都不能很好的解决像C/C++一样的 ...

  3. .net core 使用 AspectCore 实现简易的AopCache。

    (第一次写博客,好紧张!!!) 源码地址:传送门 项目中有很多缓存的需求,能自己定义缓存key和时间,能根据key去清理缓存. 网上找了一圈,有很多基于aop的缓存组件,但是都不满足我的需求.故造了个 ...

  4. CentOS7下让Asp.Net Core的网站自动运行

    一.安装Nginx yum install nginx 二.配置Nginx vi /etc/nginx/nginx.conf location / { proxy_pass http://127.0. ...

  5. CefSharp 支持mp4

    效果图: 下载链接:创建wpf项目引用 如下:链接:链接: https://pan.baidu.com/s/1UCJmslLPSDph7VrYhXM9gw 密码: j3n4 链接: https://p ...

  6. .net图表之ECharts随笔03-热力地图

    基于01和02 要得到如图所示的热力地图(我从NuGet上下载的包没有heatmap.js文件,没法直接搞热力图,只好暂时先搞着地图.后面尽量搞一下),一般要设置四个参数——title.tooltip ...

  7. 重置identity值

    如果数据库在SQL2008或以上,可以参考下面方法: DBCC CHECKIDENT ( table_name [, { NORESEED | { RESEED [, new_reseed_value ...

  8. Linux的1000个命令

    目录 Linux常用命令 uptime wget uname free who last history pwd cd ls cat head tail tr wc cut diff touch mk ...

  9. 组件基础(插槽slot)—Vue学习笔记

    刚开始我们淡淡提过<slot></slot>现在深入了解一下. slot可以进行父组件传值到子组件. 比如:我们将hiboy通过<slot>传递到组件中. < ...

  10. eclipse安装STS遇到的问题

    eclipse安装STS时,在eclipse marketplase中搜索STS没有结果,从官网下载STS包,然后安装提示找不到JAR包, 解决方式: eclipse需要和STS包版本一致,如果STS ...