澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

数据库SQL语句的操作,用SQl语句在指定盘符创建

2019-11-10 作者:数据库网络   |   浏览(144)

SQLServer数据库的幼功知识的回看:

意气风发 :创制数据库

1.私下认可限定
2.主键节制,(唯风度翩翩节制 非空限制卡塔 尔(阿拉伯语:قطر‎,
安装了主键的字段在赋值的时候不可能重新,stuID为主键则1,下三个就不能够为1
3.唯黄金时代节制(允许意气风发行为空卡塔尔国,
4.check约束
5.主外建约束 (主表 子表卡塔 尔(阿拉伯语:قطر‎大器晚成对多

豆蔻梢头:什么是数据库设计?

  1卡塔尔国主数据文件:*.mdf

创办贰个数据文件和叁个日记文件(MySchool)

增加完整性限定
外键约束:
学员宗旨音信表(主表卡塔 尔(英语:State of Qatar)的学员编号是主键
考试成绩表的学子(子表卡塔 尔(阿拉伯语:قطر‎的号子是外键
三个表在区别的涉嫌中不仅能够是主表又足以是子表
主外建是风姿洒脱对多

数据库设计正是将数据库中的数据实体以至这么些多少实体之间的涉嫌,举办典型和结构化的进程.

      2)次要数据文件:*.ndf

create database MySchool
on primary      --暗中认可归属primary主文件组,可粗略
(
--数据文件的实际描述

”数据字典“

二:为啥要实践数据库设计?

  3)日志文件:*.ldf

name = 'MySchool_data'    --主数据库文件的逻辑名称
filename = 'D:projectMySchool_data.mdf', --主数据库文件的情理名称
size = 5MB,     --主数据库文件的起来大小
maxsize = 100MB,     --主数据库文件增加的最大值
filegrowth = 15%     --主数据文件的拉长率

哪二个是外键表,就给她增加外建节制
3个相似:1 外键表外键与主键数据类型生机勃勃致(语法贰只卡塔尔国
2 长度:外键>=主键表;长了也一向不意义
3 名称相像。

1:卓越的数据库设计能够有效的缓和数据冗余的主题素材

  每个数据库最少要含有五个文件:贰个数据文件和贰个日记文件

)
log on
(
--日志文件的现实性呈报,各参数含义同上

如果sql语句写的错误超级多,只须要看率先行和末段后生可畏行错误。
后生可畏旦非常的少,就留神看下。

2:效率高

 怎么着查看SQL Server的拉扯==================飞速键F1

name = 'MySchool_log',    --主数据库文件的逻辑名称
filename = 'D:projectMySchool_data.ldf', --主数据库文件的大意名称
size=2MB,     --主数据库文件的起头大小
filegrowth = 1MB    --主数据文件的增长速度

通配符----

3:便于进一层扩张

 

)
go

select * from employee
-- 插入一条忘记参加的字段 直接在表的末尾添上add
--alter table employee add emName varchar(20) not null
alter table employee
add constraint PK_emId primary key (emId)
alter table employee
add constraint CK_age CHECK(age between 20 and 55)
alter table employee
add constraint DF_address default('地址不详') for address
alter table employee
add constraint UQ_emName unique (emName)
--外键表
alter table employee
add constraint FK_emtypeId
foreign key(emtypeId) references mangertype(mantypeId)
标示列能够不是主键,种子和自增量必得是int,标示列不可能编辑
先自增,再作证,最终插入
在数量涉嫌图里 带钥匙的一方是主键表

4:使得应用程序开采变得轻易

生机勃勃、成立文件夹 

 


三:设计数据库的步调

exec sp_configure 'show advanced options',1

开创四个数据文件和多少个日志文件(employees)
create database employees
on primary
(
--主数据库文件的切实陈诉
name='employee1',
filename='D:projectemployee1.mdf',
size=10,
filegrowth=10%
),
(
--次要数据库文件的跃然纸上描述
name='employee2',
filename='D:projectemployee2.mdf',
size=20,
maxsize=100,
filegrowth=1
)          
log on
(
--日志文件1的切切实实描述
name='employeelog1',
filename='D:projectemployee1_log.ldf',
size=10,
maxsize=50,
filegrowth=1
),
(
--日志文件2的叙说
name='employeelog2',
filename='D:projectempolyee2_log.ldf',
size=10,
maxsize=50,
filegrowth=1
)
go

插入(insert)
1.匹配,
2.多行数据
备份表 select * into student1 from student
就生成二个新的student1

首先步    要求深入分析:  深入分析顾客的事体和数码管理供给(搜罗音讯,标志实体,标记各类实体须求仓储的详细新闻,标记实体间的涉嫌)

go

 

select * into student1 from student
select * from student1
--将字段名备份,然则所建的封锁未有
select stuNoid,stuName,sex,age,address into student2 from student
select * from student2
--将字段名修正,加as就能够
select stuNoid as haha,stuName as gaga,sex as hello,age,address into student3 from student
select * from student3
select * from student1
use wangwang
go
create table employee
(
empId int identity primary key,
empName varchar(20) not null,
sex bit not null,
age int ,
address varchar(20)

其次步    概要规划:  绘制E-君越图,用于与顾客或团队成员的交换

reconfigure

 

)
go
select * from employee
---接下来将student1表中的数值插入到employee中
/*insert into employee
(empId,empName,sex,age,address)
select
(stuNoId,stuName,sex,age,address)
from stdent1
where age>20
*/
----插入多行数据union方法
insert student1
(stuNoId,stuName,sex,age,address)
select--不援助default关键字要用‘’括起来,当两行数据意气风发致时,默感觉黄金年代行
'1','liuzhao','1','31','default' union
select
'1','liu','1','28','default' union
select
'1','zhao','1','31','default'
select * from student1

其三步    详细陈设:  将E-ENVISION图调换到多张表,进行逻辑设计,应用数据库设计的三大范式举办甄别,接收具体的数据库然后建库建表建约束,创造完成起来编写制定代码,开采前端接受程序.

go

二:删除数据库
usr master
if exists(select * from sysdatabases where name='....')
drop database ......

select * from student1 order by age desc(asc)

混淆查询
alter table student add groupId int
select * from student
insert student
(stuNoId,stuName,sex,age,address)
select
'5','zhaoliu','1','30','南昌路' union
select
'6','zhao','1','31','南路' union
select
'7','liu','1','32','昌路'

---模糊查询
select * from student where address like '%南%'
select * from student where stuName like 'wangwu[2-4]'
select * from student where stuName like 'wangwu[^2-4]%'--取反
--加上% 可以将wangwua查出来

四:绘制E-R图

exec sp_configure 'xp_cmdshell',1

 

select * from student where stuName like 'wangwu[^2-4]%'

use wangwang
go
create table person
(
perId int identity primary key,
personId int not null--身份证
)
go
--给身份ID增加约束,假诺身份ID陆位数字
/*select * from person
alter table person
add constraint CK_personId CHECK(personId like [0-4],[0-4],[0-4],[0-4],[0-4])
go*/
--更改
update student set age=age 1
select * from student where groupId=1
update student set age=age 2,stuName=stuName 'mm'
where groupId=1
--删除
delete from student where groupId=1
select * from student

delete from student-- 删除表

  (1) 什么是实体?

go

 

truncate table student--删除表(效率快 )

SQL 结构化查询语言

      实体是指现实世界中有着区分别的东西的特色或性质并与任何实体有联系的实业(实体经常是名词)

reconfigure

三:创设和删除表

T-Sql是SQL的抓实版

查询:
1.基本功查询2.聚合函数3.链接查询4.子查询
--更改
update student set age=age 1
select * from student where groupId=1
update student set age=age 2,stuName=stuName 'mm'
where groupId=1
--删除
delete from student where groupId=1
select * from student

delete from student-- 删除表
truncate table student--删除表(效率快 )
-------------------------------查询
use wangwang
go
select * from student where address='南昌路'
/*select
colname1 as 别名,
colname2 as 别名,
from
tableName
where
条件
group by
分组
having
分组后的筛选
order by
排序
*/
--起别名

select *,'姓名'=stuName from student
select *,stuName as 'as用法' from student
--给表起名
select *,stuName as 'as用法' from student as Stu
alter table student add haha varchar(20)
select * from student
update student set haha='mm' where age>31
select * from student where haha is null
--string a=null与a=''是不均等的 null与空
select * from student where haha is null
select * from student where haha=''
select * from student order by stuNoId asc
-------------------分页管理,关键字--top--percent
select top 5 * from student--每页现身5行
select top 50 percent * from student--每页现身总体的百分之n,进1法
--排序
select * from student order by age desc--降序号
select * from student order by stuNoId asc--升序
-----函数。
select 'aaa' as '列明'
--查询an在末端的英语中冒出的行列
select CHARINDEX('an','my name is wangwang')
--查询an在后头的意大利共和国语中冒出的行列,前面15个不算,从第15开端查找
select CHARINDEX('an','my name is wangwang',14)
-----查询长度
select LEN('123456')
select address,LEN(address) as ' cahngdu' from student
-----------ltrim()可取空格
select * from student where ltrim(address)=' 天津路'--左空格
select * from student where ltrim(ltrim(address))=' 西雅图路'--俩边空各
---截取字符串right
select XC90IGHT('sgdsggueui',4) as '截取后呈现'
select left('sgdsggueui',4) as '截取后呈现'
----------替换
select replace('sfsfhufhsh','sh','AA')--将sh换成AA
select replace('sfsfhufhsh','s','9')--将sh换成AA
------------日期函数
select GETDATE()--获得当前几日期
select DATEADD(DD,10000,'93-07-22')--活豆蔻梢头万天
select DATENAME(DW,GETDATE())--前几天星期几
select DATENAME(WW,GETDATE())--明天是当年的第几周
select * from student
select convert(varchar(2),age) address as '新的列明' from student
select age convert( int,address) as '新的列明' from student--有不当


案例1
create table card
(
cId int identity primary key,
CaId varchar(20) not null
)
go
insert card values ('fifuejf789io0i658')

select * from card
update card set CaId = replace(CaId,'i','1')

--update replace(CaId,'i','1') from card

select REPLACE(replace(CaId,'i','1'),'o','0') from card
select * into card2 from card
select * from card2

      严酷来讲,实体是指表中风姿罗曼蒂克行特定的数量,也常常把表称为多个实体

go

use MySchool    --在Myschool中创立表
go

update card2 set card=REPLACE(REPLACE(CaId,'i','1'),'o','0')

SQL编程
变量分为:1.局地变量,以@符号前缀,先注脚再赋值
赋值:set @变量名=值 select @变量名=值
set @name=zhangsan
select studentNo from student where studentName=@name
李文才:
declare @name varchar(8)
set @name='李文才'
select @No=studentNo from student where studentName=@name

declare @No int//定义
print'学号' @No
询问出学号 -1的隔壁的同班。
select * from student where student.studentNo=@No 1 or student.studentNo=@No-1


insert into Class(GradeId,ClassID) values (4,'201')

  (2)什么是性质?

exec xp_cmdshell 'mkdir E:新建文件'

create table Student
(
StudentNo int not null.   --学号,int 类型,差异意为空
LoginPwd nvarchar(50) not null,  --密码 nvarchar类型,不一样意为空
StudentName nvarchar(50) not null, --名字,nvarchar类型,步允许为空
Sex bit not null,   --性别,取值0或1
Email nvarchar(20)   --邮箱,可为空
)
go

@@IDENTITY

DECLARE @TAG VARCHAR(1)
SET @TAG='*'
PRINT @TAG @TAG
PRINT @TAG @TAG @TAG
PRINT @TAG @TAG @TAG @TAG
------DECLARE @xuehao int
set @xuehao =20011
select * from student where studentNo=@xuehao//学子记录查出来

declare @year int
set @year=DateDiff(DY,'1996-8-7',getdate())/365;年份
select * from student where student.brondate=@year 1 or student.brondate=@year-1;


create database MySchool
on primary
(
name = 'MySchool_data',
filename = 'D:projectMySchool_data',
size = 10mb,
maxsize = 100mb,
filegrowth=15%
)
log on
(
name = 'MySchool_log',
filename = 'D:projectMySchool_log',
size = 3mb,
maxsize = 20mb,
filegrowth=1mb
)

if exists(select * from sysobjects where name = 'Student')
drop table student
create table dbo.Student(
StudentNo int NOT NULL,
LoginPwd nvarchar(50) NOT NULL,
StudentName nvarchar(50) NOT NULL,
sex bit NOT NULL,
GradeId int NOT NULL,
Phone nvarchar(50) NULL,
Address nvarchar(255) NULL,
BornDate datetime NOT NULL,
Email nvarchar(50) NULL,
IdentityCard varchar(18) NOT NULL
)

if exists(select * from sysobjects where name = 'Subject')
drop table subject
create table dbo.Subject(
SubjectNO int IDENTITY(1,1) NOT NULL,
SubjectName nchar(50) NOT NULL,
ClassHour int NOT NULL,
GradeId int NOT NULL
)

if exists(select * from sysobjects WHERE name = 'Result')
drop table Result
create table dbo.Result(
StudentNo int NOT NULL,
SubjectNo int NOT NULL,
StudentResult int NOT NULL,
ExamDate datetime NOT NULL
)

if exists(select * from sysobjects where name = 'Grade')
drop table Grade
create table Grade(
GradeId int IDENTITY(1,1) NOT NULL,
GradeName nvarchar(50) NOT NULL
)

--向Grade表插入数据
INSERT INTO Grade VALUES('S1')
--向Subject表插入数据
INSERT INTO Subject VALUES('Winforms',20,1)

--向Student表插入数据
INSERT INTO Student VALUES('10000','GuoJing','安德森·塔利斯卡',1,1,02088762106,'巴拿马城市河西区','一九九零-09-08 00:00:00','GuoJing@sohu.com',111111)

--向Result表插入数据
INSERT INTO Result VALUES('10001',2,70.6,'2013-02-15 00:00:00')


USE master --设置当前数据库为master,以便访谈sysdatabases表
GO
IF EXISTS(SELECT * FROM sysdatabases WHERE name ='MySchool')
DROP DATABASE MySchool
GO

CREATE DATABASE MySchool
ON (
name='MySchool_data',
FILENAME='F:projectMySchool_data.mdf',
SIZE=10mb, --主数据文件的初始大小
MAXSIZE=100mb, --主数据文件拉长的最大值
FILEGROWTH=15% --主数据文件的增加率
)
LOG ON
(
/*--日志文件的现实描述,各参数含义同上--*/
NAME='MySchool_log',
FILENAME='F:projectMySchool_log.ldf',
SIZE=3mb,
MAXSIZE=20mb, --日志文件增进的最大值
FILEGROWTH=1mb
)
GO

 

/*--查询获得Student表的音信--*/
USE MySchool
GO

SELECT * FROM sysobjects

/*--案例:使用SQL语句删除表Student学子--*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='Student')
DROP TABLE Student
/*--学时2--*/
/*--案例:使用SQL语句创设Student表--*/
CREATE TABLE [dbo].[Student](
[StudentNo] [int] NOT NULL,
[LoginPwd] [nvarchar](50) NOT NULL,
[StudentName] [nvarchar](50) NOT NULL,
[Sex] bit NOT NULL,
[GradeId] [int] NOT NULL,
[Phone] [nvarchar](50) NULL,
[Address] [nvarchar](255) NULL,
[BornDate] [datetime] NOT NULL,
[Email] [nvarchar](50) NULL,
[IdentityCard] [varchar](18) NOT NULL
)
GO

/*--案例:使用SQL语句创设Subject科目表--*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='Subject')
DROP TABLE Subject
CREATE TABLE [dbo].[Subject](
[SubjectNo] [int] IDENTITY(1,1) NOT NULL,
[SubjectName] [nchar](50) NOT NULL,
[ClassHour] [int] NOT NULL,
[GradeId] [int] NOT NULL
)
GO
/*--案例:使用SQL语句创制Result结果表--*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='Result')
DROP TABLE ResultResult
CREATE TABLE [dbo].[Result](
[StudentNo] [int] NOT NULL,
[SubjectNo] [int] NOT NULL,
[StudentResult] [int] NOT NULL,
[ExamDate] [datetime] NOT NULL
)
GO
/*--案例:使用SQL脚本创立Student学子表--*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='Student')
DROP TABLE Student
CREATE TABLE [dbo].[Student](
[StudentNo] [int] NOT NULL,
[LoginPwd] [nvarchar](50) NOT NULL,
[StudentName] [nvarchar](50) NOT NULL,
[Sex] [bit] NOT NULL,
[GradeId] [int] NOT NULL,
[Phone] [varchar](50) NULL,
[Address] [nvarchar](255) NULL,
[BornDate] [datetime] NOT NULL,
[Email] [varchar](50) NULL,
[IdentityCard] [varchar](18) NOT NULL,
)
GO
/*--案例:使用SQL脚本创建Grade年级表--*/
IF EXISTS(SELECT * FROM sysobjects WHERE name='Grade')
DROP TABLE Grade
CREATE TABLE [dbo].[Grade](
[GradeId] [int] IDENTITY(1,1) NOT NULL,
[GradeName] [nvarchar](50) NOT NULL
)
GO
alter table Student
add Constraint pk_StudentNo primary key(StudentNo)
--Student表中的唯生机勃勃节制
alter table Student
add Constraint uq_IdentityCard unique(IdentityCard)
--student表中的默许约束
alter table Student
add Constraint df_Address default('地址不详') for Address
--student表中的检查约束
alter table Student
add Constraint ck_BornDate check(BornDate>'1980-01-01')
--外键限定
alter table Grade
add Constraint pk_GradeId PRIMARY key(GradeId)
alter table Student
add Constraint fk_Grade foreign key(GradeId)
references Grade(GradeId)
go
--向Subjiect增多封锁
alter table Subject
add Constraint pk_SubjectNo primary key(SubjectNo)
alter table Subject
add Constraint ck_ClassHour check(ClassHour>0)
ALTEXC60 TABLE Subject --非空约束(课程名称卡塔尔国
ADD CONSTRAINT CK_SubjectName CHECK (SubjectName is not null)
alter table subject
add Constraint fk_GradeId foreign key(GradeId)
references Grade(GradeId)
go
--使用SQL语句创设Result表的封锁
ALTE昂Cora TABLE Result --主键限定(学号、科目号、日期卡塔尔
ADD CONSTRAINT PK_Result PRIMARY KEY
(StudentNo, SubjectNo, ExamDate)

ALTE奇骏 TABLE Result --私下认可节制(日期为系统当下日子卡塔尔国
ADD CONSTRAINT CK_ExamDate DEFAULT (getdate()) FOR ExamDate

ALTE科雷傲 TABLE Result --检查节制(分数不可能压倒100,小于0卡塔尔
ADD CONSTRAINT CK_StudentResult CHECK
(StudentResult BETWEEN 0 AND 100)

ALTE奥德赛 TABLE Result --外键限制(主表Student和从表Result创立关系卡塔 尔(阿拉伯语:قطر‎
ADD CONSTRAINT FK_StudentNo
FOREIGN KEY (StudentNo) REFERENCES Student (StudentNo)

ALTE奇骏 TABLE Result --外键限制(主表Subject和从表Result创立关系卡塔 尔(英语:State of Qatar)
ADD CONSTRAINT FK_SubjectNo
FOREIGN KEY (SubjectNo) REFERENCES Subject (SubjectNo)
GO


DATEDIFF(DY, BornDate, GETDATE())/365
DatePart()函数用于重返日期或然时间的单身部分,举个例子年、月、日、小时、分
例如 DatePart(YY,BornDate)
归来出生年月初的年份

能够通过DatePart()函数获得学号二零零二1的学员大学一年级岁和小一虚岁的上学的小孩子

declare @year datetime
select @year= BornDate from Student where StudentNo=20011
select StudentName,sex,datepart(YY,BornDate) as BornDate from Student where StudentNo=20011 or datepart(YY,BornDate)= @year 1 or datepart(YY,BornDate)=@year-1

--select * from Student where ABS(DATEDIFF(DAY,@year,BornDate))/365<=1

--select * from Student where DATEDIFF(DAY,@year,BornDate)/365<=1 and DATEDIFF(DAY,BornDate,@year)/365<=1

      属性能够知晓为实体的性状,属性对应表中的列

go

删除表
use MySchool
go
if exists(select * from sysobjects where naem='Student')
drop table Student
  
                                                                                                                                                                                                                                                                                                                                                                                                  
四:创立和删除约束
主键约束(Primary Key Constraint)
非空限定(Not Null)
唯黄金时代约束(Unique Constaraint)
自己商酌节制(Check Constaraint)
暗中同意约束(Default Constaraint)
外建节制(Foreign Key Constarint):用于在两表之间创设关联,供给内定援引主表的哪一列

--select * from Student

--子查询 总是用小括号括起来,先进行螺号里面包车型大巴子查询,然后才实行外围的父查询
--注意:将子查询和相比较运算符联合利用,必得保障子查询的归来结果为四个。
--查看比李思文小的学习者
--declarre @date datetime
--select BornDate as '李Sven的出出生之日期' from Student where StudentName='李Sven'
--select * from Student
--where BornDate > (select BornDate as '李通古文的出生辰期' from

  (3)什么是关联?

 

alter table 表名
add constraint 约束名  约束类型  具体的束缚表达

Student where StudentName='李斯文')

尖端查询
简单子查询的用法
declare @Birthday datetime
select @Birthday = BornDate from student where studentName='李斯文';
select studentName,sex from student where BornDate>@Birthday


select StudentResult from Result
where SubjectNo=(select SubjectNo from Subject where SubjectName='C# OOP') and
ExamDate=(select max(ExamDate) from Result where SubjectNo=(select SubjectNo from Subject where SubjectName='C# OOP'))
--select max(ExamDate) from Result where SubjectNo=(select SubjectNo from Subject where SubjectName='C# OOP')
--1.从课程名称查询出课程编号,2.从学科编号查询出多年来(大卡塔尔日期,从1和2联手查询出考试战表。
--查询Java课程考试战绩为60分的学子名单--in 关键字:查询出来的结果只怕是多个
select StudentName from Student where StudentNo in
(
select StudentNo from Result where SubjectNo=(select SubjectNo from Subject where SubjectName='Java Logic')
and
StudentResult=60
)


--in 用法 查询结果有三个
select StudentNo,studentName from Student where GradeId in (select

      联系是多个或三个实体之间的涉及关系(日常是动词)

二、创造数据库

例:
--加多主键约束
alter table Student
add constraint PK_StudentNo Primary Key(StudentNo)

GradeId from Grade where GradeName = 'S1')

聚合函数:sum avg min max count(null列不计算在rpu内卡塔尔国
分组:select groupId,avg(age) from student
group by groupId
having avg(age)<=30 刷选
where 和 having的分别:where 对表中的原始数据开展帅选,
having对分组后接纳聚合函数总计后的数码实行帅选

  (4)什么是炫丽基数?

1.例子: 

--加多唯黄金时代限定
alter table student
add constraint UQ_IdentityCard unique(IdentityCard)

having经常与group by结合使用

视图
视图名称
creatview view_name(view_colum_name)
As query_expression(查询表明式卡塔尔

      映射基数是表示通过联系与该实体关联的别的实体的个数,具体有 生机勃勃对一 ,  生机勃勃对多,  多对风度翩翩,  多对多.

 --判别,就算有那一个数据库则实行删减

--增多暗中同意限定
alter table Student
add constraint DF_Address default('地址不详') for address

[with check option](增加封锁原则卡塔尔

--分组查询 Group by 在select 语句询问的末段。

select studentResult ,sum(subjectNo) from Result group by studentResult
--现身Group by 常常就能身不由己聚合函数
--查询学生每一门学科的平均战表
--必要出示学子姓名,课程名称,
--科目ji的平分分--如何将studentNo与studentName联系在一同?
select SubjectNo , AVG(studentResult)From Result group by subjectNo --left on student.
select SubjectName ,AVG(studentResult)from Result
left join subject on
subject.SubjectNO=result.subjectNo ///////left join 外表 on 俩表相等的字段
group by SubjectName --学子的平均分

--select studentNo ,AVG(studentResult) from Result where StudentNo=1000 group by studentNo
--查询课程的成绩 展现课程名称以至所对应的实际业绩
--left join 左链接!!!! 主从表的关系左边的是主表 on
select SubjectNo , AVG(studentResult)From Result group by subjectNo
select Result.StudentResult,SubjectName from Result
Left join Subject on --left join 主表 on前面加俩个表相似的字段

  (5)什么是关联实体图?

if exists(select * from sysdatabases where name='MySchool')

--增多检查限定
alter table Student
add constraint CK_BornDate checke(BornDate>='1980-01-01')

subject.SubjectNO=result.subjectNo

事务 视图 索引
begin transaction
declare @error int
set @error=0
update bank set currentmoney=currentmoney-1000 where customername='张三'
set @error=@error @@error 错误消息 全局变量
update bank set currentmoney=currentmoney 1000 where customername='李四'
set @error=@error @@error
给顾客二个可视化的结果,
if(@error<>0)
begin
print '转账失利,重重新操作'
rollback transaction 回滚
end

esle
begin
print '转账成功张三给李四转了1000'
commit transaction 提交给数据库
end
go

1.政工逻辑须要七个T_SQL语句来推行

create table bank
(
customername varchar(5)
currentmoney int
)

事情属性:原子性(种种步骤不可能再分,要么都实践,要么都不施行卡塔尔
大器晚成致性 当事务完毕时,数据必需处于同风姿洒脱状态
隔数离性 并发钱物之间相互隔开,独立,不应重视其余
永久性
发端事务: begin transaction
付给业务:commit transaction
回滚事务:roollback transaction

      E-昂Cora图以图纸的点子将数据库的全套逻辑结构意味着出来.     矩形表示实体集;椭圆代表属性;菱形表示维系集;

begin

--增多外键约束(Result是从表,Student是主表)
alter table Result
add constraint FK_StudentNo
foreign key(StudentNo) references Student(StudentNo)
go

政工是养虎遗患也许存在的主题素材

begin transaction
declare @error int
set @error=0
insert into Result values(113,2,150,GETDATE())
set @error=@error @@error

if(@error<>0)
begin
print '插入失利'
rollback transaction
end

else
begin
print '插入成功'
commit transaction
end

       直线用来连接属性和实体集,也用来维系实体集和关联合公司.

drop database MySchool

删除节制
alter table 表名
drop constraint 约束名

select * from Result

目录:根据索引键查找定数据行
普通话字典中的汉字按“页”贮存,平时都有汉语拼音的目录(索引卡塔 尔(阿拉伯语:قطر‎,偏旁部首目录等
sql中的数据也是按页寄放
目录;shi sql编排数据的格局

 

end 

例:删除学子表中的默许约束
alter tablte Student
drop constraint DF_Address

独一索引,主键索引,集中索引,

仓储进度
系统存款和储蓄过用程的名字平日以sp_开头
闻一知十存款和储蓄平日xp

调用存款和储蓄
execute 过程名 [参数] 或者 exec 过程名 [参数]

create proc[edure] 存款和储蓄进程名
@参数1 数据类型=暗许值 output
。。。。。。。
@参数n 数据类型=私下认可值 output
as
sql语句
go

 

比方,旅舍管理种类中E-牧马人图:

 --创立数据库

怎么向已存在数据的表中增加约束
alter table Employee with nocheck ( whit nocheck不向已存在的数码约束)
add constraint

 

create database MySchool

向已存在的多寡表中插入一列
alter table 表名
add 列名 数据类型  null

 

on primary

 

五:绘制数据库模型图

(

 

譬喻说:酒馆管理连串数据库模型图

--数据文件的现实描述

在数据库中用SQL语句创制文件夹(例:在E盘创立二个project文件夹)

 

 name='MySchool_data',                 --主数据文件的逻辑名称 必得写

exec sp_configure 'show advanced option',1

 

 filename='E:MySchool_data.mdf',   --主数据文件的大要名称 必需写

go

 

 size=5mb,                                 --主数据文件的开端大小

reconfigure

六:数据标准化

  maxsize=100mb,                      --主数据文件拉长的最大值

go

专门的学业设计

  filegrowth=15%                       --主数据文件的增加率

exec sp_configure 'xp_cmdshell',1

率先范式: 

)

go

首先范式的对象是有限协助每列的原子性,如若每列皆以不行再分的小小单元(也堪称最小的原子单元),则知足第后生可畏范式

log on

reconfigure

第二范式:

 (

go

假设多少个关系满意第生机勃勃范式,并且除主键以外的其它列,都信任于该主建,则满意第二范式,第二范式供给一张表只描述生机勃勃件工作

--日志文件的现实陈说,各参数含义同上

exec xp_cmdshell 'mkdir D:project'

其三范式:

name='MySchool_log',

 

万生机勃勃四个涉及知足第二范式,何况除了主键以外的其余列都不传递信任于主键列,则知足第三范式

 filename='E:MySchool_log.ldf',

 

 size=2mb,

注:第二范式是任何列都正视于主键列然而从未证实是一向依赖照旧间接重视,也正是间接注重和直接依赖均可,但第三范式分明提议只好是一贯重视,如若现身直接重视的事态,要独自创造一张表出来

filegrowth=1mb

 

 )

七:规范化和属性的关联

 go

为了满足某种商业目的,数据库品质比标准数据库更要紧

三、创建表

具体政策和方法:

 2 use MySchool --将日前数据库设置为MySchool,以便在MySchool里创制表

(1):通过在给定的表中加多额外字段,以大气滑坡必要从当中搜索新闻所须要的年月

 3 go

(2):通过在加以的表中插入计算列(举例战绩总分),以有扶协助调查询

 4 --推断是或不是存在表,存在则删除

在数据库标准时,要综合构思数据库质量.

 5 if exists (select * from sysobjects where name='Student')

 

 6 drop table Student

 

 7---创建Student表

 

 8 create table Student   

 

 9 (

 

10  StudentNo int identity(1,1)  primary key not null,  --学号 自增 主键,非空

 

11  loginpwd nvarchar(20) not null,

生机勃勃 :创制数据库

12  StudentName nvarchar(20) not null,

成立二个数据文件和三个日记文件(MySchool)

13  Sex bit default'女' not null,      --性别,取值0,1

create database MySchool
on primary      --暗许归属primary主文件组,可粗略
(
--数据文件的现实汇报

14  GradeId int not null,

name = 'MySchool_data'    --主数据库文件的逻辑名称
filename = 'D:projectMySchool_data.mdf', --主数据库文件的情理名称
size = 5MB,     --主数据库文件的起来大小
maxsize = 100MB,     --主数据库文件增加的最大值
filegrowth = 15%     --主数据文件的增加率

15  Phone nvarchar(50) null,

)
log on
(
--日志文件的切实可行陈诉,各参数含义同上

16  Address nvarchar(100) null,

name = 'MySchool_log',    --主数据库文件的逻辑名称
filename = 'D:projectMySchool_data.ldf', --主数据库文件的物理名称
size=2MB,     --主数据库文件的初阶大小
filegrowth = 1MB    --主数据文件的增速

17  BornDate datetime not null,

)
go

18  Email nvarchar(20) null,

 

19  IdentityCard varchar(18) not null

创建两个数据文件和八个日志文件(employees)
create database employees
on primary
(
--主数据库文件的活灵活现描述
name='employee1',
filename='D:projectemployee1.mdf',
size=10,
filegrowth=10%
),
(
--次要数据库文件的切实可行叙述
name='employee2',
filename='D:projectemployee2.mdf',
澳门新萄京官方网站,size=20,
maxsize=100,
filegrowth=1
)           
log on
(
--日志文件1的现实描述
name='employeelog1',
filename='D:projectemployee1_log.ldf',
size=10,
数据库SQL语句的操作,用SQl语句在指定盘符创建文件夹。maxsize=50,
filegrowth=1
),
(
--日志文件2的叙说
name='employeelog2',
filename='D:projectempolyee2_log.ldf',
size=10,
maxsize=50,
filegrowth=1
)
go

20  )

 

21 go

 

四、创建节制

二:删除数据库
usr master
if exists(select * from sysdatabases where name='....')
drop database ......

 

 

语法:

 

 

三:成立和删除表

 1 alter table 表名

use MySchool    --在Myschool中成立表
go

 

create table Student
(
StudentNo int not null.   --学号,int 类型,分歧意为空
LoginPwd nvarchar(50) not null,  --密码 nvarchar类型,不一样意为空
StudentName nvarchar(50) not null, --名字,nvarchar类型,步允许为空
Sex bit not null,   --性别,取值0或1
Email nvarchar(20)   --邮箱,可为空
)
go

2 add constraint 封锁名 节制类型 具体的羁绊表明 

删除表
use MySchool
go
if exists(select * from sysobjects where naem='Student')
drop table Student
  
                                                                                                                                                                                                                                                                                                                                                                                                   
四:创造和删除限定
主键限定(Primary Key Constraint)
非空约束(Not Null)
唯黄金年代约束(Unique Constaraint)
检查约束(Check Constaraint)
暗中认可约束(Default Constaraint)
外建节制(Foreign Key Constarint):用于在两表之间创设关联,供给钦点引用主表的哪一列

 

alter table 表名
add constraint 约束名  节制类型  具体的封锁表明

 

例:
--增多主键节制
alter table Student
add constraint PK_StudentNo Primary Key(StudentNo)

例子:

--加多唯大器晚成节制
alter table student
add constraint UQ_IdentityCard unique(IdentityCard)

 

--增添暗中同意节制
alter table Student
add constraint DF_Address default('地址不详') for address

1、加多默许限定(暗中认可'地址不详')

--增加检查节制
alter table Student
add constraint CK_BornDate checke(BornDate>='1980-01-01')

 

--增加外键约束(Result是从表,Student是主表)
alter table Result
add constraint FK_StudentNo
foreign key(StudentNo) references Student(StudentNo)
go

1 alter table Student

删除节制
alter table 表名
drop constraint 约束名

 

例:删除学子表中的暗许限制
alter tablte Student
drop constraint DF_Address

2 add constraint df_address default('地址不详') for address

哪些向已存在数量的表中加多节制
alter table Employee with nocheck ( whit nocheck不向已存在的数据节制)
add constraint

 

向已存在的数码表中插入一列
alter table 表名
add 列名 数据类型  null

 

 

2、增多检查约束(要求出生在1997年二月十四日)

 

 

在数据库中用SQL语句创立文件夹(例:在E盘创建一个project文件夹)

1 alter table Student

exec sp_configure 'show advanced option',1

 

go

2 add constraint ck_BornDate check (BornDate >='1996-10-26')

reconfigure

 

go

 

exec sp_configure 'xp_cmdshell',1

3、增加唯风华正茂限定(居民身份证全球独有一个)

go

 

reconfigure

 1 alter table Student

go

 

exec xp_cmdshell 'mkdir D:project'

2 add constraint uq_IdentityCard unique (IdentityCard) 

 

 

 

 

 

 

 

4、增添主键限制

 

 

 

 1 alter table Student

行使变量 数据类型转变 逻辑调控语句(begin ...end; case...end; if...else; while)

一:变量

变量分为局地变量和全局变量  (全局变量是系统自定的,是不可手动给值的,若想本身定义全局变量可酌量创造全局一时表!)

一些变量的概念:  declare @变量名  数据类型    (局地变量只好用于同一堆管理当中!!!!!!!)

全局变量: @@

@@error        最后一个T-SQL语句错误的大错特错号

@@identity     末了壹回插入的标记值

@@rowcount   受上一个SQL语句影响的行数

@@servicename   该Computer上SQl服务器的名目

@@version    SQL Server的版本消息

@@transcount   当前接连展开的事务数

@@timeticks    当前Computer上每刻度的飞秒数

@@max_connections 能够成立的,同期连接的最大数据

@@language     当前使用的言语的名号

 二:给变量赋值  (set  和seklect)

set和select的区别

1:set不支持八个变量赋值,select扶植

2:表明式再次回到多少个值时,set出错,select重临最终一条数据

3:表明式未回来任何值时,set赋值为null(未有) select 保持不改变

 

三:输出语句

print @变量名 或

select @变量名

诚如从数据库中索求数据后赋值使用select赋值方法

四:数据类型转变

隐式调换: 类型相符或相称合,自动调换

显式调换: 类型区别,可用convert 函数 或 cast 函数

相仿点: 都用于某种数据类型的表达式转变为另风流罗曼蒂克种数据类型

不一致点: 在更改日期的时候,convert能够转账为钦定的格式

cast (变量名 as 数据类型)

convert(数据类型, 变量名)

五:逻辑调整语句

流程序调整制语句  begin....end  

平时性使用在if剖断和while循环中,也正是C#中的 {}

分层组织   if..else  或

     case ...end(多重选取)

eg:

  select 成绩=case

        when 条件一  then 结果一

        when 条件二  then 结果二

        else 其他结果(可粗略)

 

 

2 add constraint pk_StudentNo primary key(StudentNo) 

 

 

5、增添外键节制(主表 Student 和从表 REsult创设关系,关联列StudentNo)

 

1 alter table Result

 

2 add constraint fk_StudentNo

3     foreign key(StudentNo) references Student (StudentNo)

 

五、sql操作数据库数据的落到实处(增、删、查、改)

 

(风流洒脱卡塔 尔(阿拉伯语:قطر‎插入数据

 

语法:

 

        insert  into  目标表(新表)

 

        select '列名' union

 

eg

 

        insert  into  card(ID,password)

 

        select  ‘0023-ABC’,‘ABC’  union

 

数据库SQL语句的操作,用SQl语句在指定盘符创建文件夹。(二卡塔尔国扩展数据

 

语法:

 

    insert   into   表名

 

    values (‘   ’,‘     ’)

 

eg

 

    insert  into  card

 

    values (‘0023-ABC’,‘ABC’)

 

(三卡塔 尔(英语:State of Qatar)校勘数据

 

语法:

 

     update   表名     set    行名

 

     where     列名

 

eg

 

    update   card    set     password=‘pwd’

 

    where ID=‘0023-ABE’

 

(四卡塔 尔(英语:State of Qatar)删除数据

 

语法:

 

     delete   from   表名

 

     where   行名

 

eg

 

    delete   from   card

 

    where   ID=‘0023-ABE’

 

(五卡塔尔国查看数据

 

语法:

 

     select  *   from   表名  

 

eg

 

    select  *   from  student

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:数据库SQL语句的操作,用SQl语句在指定盘符创建

关键词: