首页 技术 正文
技术 2022年11月21日
0 收藏 361 点赞 4,728 浏览 7127 个字

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(数量:记录的条数)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,958
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,482
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,328
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,111
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,743
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,777