您的位置:首页 > 数据库

SQL数据库—<2>数据库基本操作(CRUD)

2015-05-28 11:42 441 查看

学习基本操作语句之前先简单了解数据库的基本数据类型:

数据类型:
二进制数据:以十六进制形式存储
固定长度:binary
可变长度:varbinary
字符数据:
char:定长
varchar:长度不同时,但是任何项长度不能超过8KB
日期时间数据:
datatime(1753-1-1,9999-12-31)smalldatetime(1900-1-1,2079-6-6)




数值型数据
整型数据:bigintintsamllinttinyint
实型数据:decimal:decimal[p(,s)]其中p为总位数,即精度,s为小数位数,小数点算一位
float
货币数据:
money
特殊数据类型:
bit:true、false;Yes、No

文本和图像数据类型:
文本:text
图像:image




简单书写规范

SQL语言中不区分大小写,SQL数据库中的数据是区分大小写的



遇到关键字可以用[]括号扩起来

注释:
--:单行注释

/**/:多行注释



更详细内容可以查阅资料


一、数据库操作:创建、删除、修改等基本操作


数据库的CRUD操作,C是指create新增,R是指retrieve检索,U是指update更改,D是指delete删除

使用SQL语句

createdatabase数据库名--建,完成可用USE打开数据库。
dropdatabase数据库名--删
alterdatabase数据库名--改
sp_renamedb'旧名字','新名字'--修改名字



二、数据表操作:增、删、改、查


一个表至少有1列,最多有1024列,每个数据库中最多可创建200万个表
表名最多有128个字符组成
语法:
--创建表简单语法,identity:自增长列关键字,从一开始增长,每多一列自增一。

createtable数据表名(列名数据类型约束[NULL|NONULL][identity(1,1)])
sp_renamedb'旧名字','新名字'--改名
altertable表名add列名列类型--添加列
altertable表名dropcolumn列名--删除列
altertable表名altercolumn列名新类型--修改列的类型
droptable表名--删除表
7    truncatetable表名--是清空、重置表;delete会产生很多日志,而truncate只会产生一行日志。



约束:主键约束、唯一约束、外键约束、非空约束、check约束

防止同一条数据完全重复:
一、主关键字约束:主键约束。主键:primarykey
  1.能够唯一的区分每一行数据。——不许重
  2.表中的数据按照主键字排序的。——有序
  3.主键字不能为空——不为空
  4.一个表只能有一个主键,但可以设置组合主键。
可视化操作:在表的设计界面,在相应的列上,右击-"设为主键"/"删除主键":

二、唯一键约束。候选键。唯一键:UNIQUE
  1.不许重,可以为空。
  2.可以有多个唯一键
  3.唯一键不自动排序。
可视化操作:在表的设计界面上,右击--“索引/键”在弹出窗口上,点击左下角“添加”,右侧属性列表,修改类型——唯一键,设置列

三、自增长列:标识列,Identity列
  1.不能手动向里面填值。如果要写insert语句的话,则语句应当把这一列忽略
  2.自增长列主要用于整型、长整型,Decimal类型。
  3.不要随便把自增长列作为主键。
可视化操作:在表的设计界面中,选中相应的列,在下面的属性面版——“标识规范”--选择是

防止有些该填的没有填
一、非空约束
  不能为NULL。
可视化操作:在表的设计界面中“允许NULL值”中的复选框去掉。

二、默认值。(区别NULL与“”的区别)默认值可以是函数
  如果不给列赋值的话,会使用默认值填上。
可视化操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值

防止乱填:
一、Check约束。
  按照某种规则对数据进行检查。
可视化操作:在表的设计界面中,右击相应的列,选择“CHECK约束”在弹出的对话框中,设置约束的名称和表达式。

二、外键约束。主表,从表。
  主表是用来约束从表的。外键应当建在从表上。
  使用主表的主键来约束从表外键。
  从表中的外键列是不能随便乱填内容的,它只能填写主表主键中存在的数据。

  一旦建立起外键关系来,从表的外键不能乱填,反过主表中的主键列也不能乱删除乱改。

  级联删除的设置——整理

可视化操作:先建好主表,在从表的设计界面上,右击-“关系”,在弹出的对话框中选择“添加”,在右边属性列表中设“表和列的规范”



ØGo批处理语句
用于同时执行多个语句
Ø使用、切换数据库
usemaster
go

Ø创建、删除数据库
方法1、
--判断是否存在该数据库,存在就删除
if(exists(select*fromsys.databaseswherename='testHome'))
dropdatabasetestHome
go
--创建数据库,设置数据库文件、日志文件保存目录
createdatabasetestHome
on(
name='testHome',
filename='c:\data\students.mdf'
)
logon(
name='testHome_log',
filename='c:\data\testHome_log.ldf'
)
go

方法2(设置文件大小)、
if(exists(select*fromsys.databaseswherename='testHome'))
dropdatabasetestHome
go
createdatabasetestHome
--默认就属于primary主文件组,可省略
onprimary(
--数据文件的具体描述
name='testHome_data',--主数据文件的逻辑名
fileName='c:\testHome_data.mdf',--主数据文件的物理名
size=3MB,--主数据文件的初始大小
maxSize=50MB,--主数据文件增长的最大值
fileGrowth=10%--主数据文件的增长率
)
--日志文件的具体描述,各参数含义同上
logon(
name='testHome_log',
fileName='c:\testHome_log.ldf',
size=1MB,
fileGrowth=1MB
)
go

方法3(设置次数据文件)、
if(exists(select*fromsys.databaseswherename='testHome'))
dropdatabasetestHome
go
createdatabasetestHome
--默认就属于primary主文件组,可省略
onprimary(
--数据文件的具体描述
name='testHome_data',--主数据文件的逻辑名
fileName='c:\testHome_data.mdf',--主数据文件的物理名
size=3MB,--主数据文件的初始大小
maxSize=50MB,--主数据文件增长的最大值
fileGrowth=10%--主数据文件的增长率
),
--次数据文件的具体描述
(
--数据文件的具体描述
name='testHome2_data',--主数据文件的逻辑名
fileName='c:\testHome2_data.mdf',--主数据文件的物理名
size=2MB,--主数据文件的初始大小
maxSize=50MB,--主数据文件增长的最大值
fileGrowth=10%--主数据文件的增长率
)
--日志文件的具体描述,各参数含义同上
logon(
name='testHome_log',
fileName='c:\testHome_log.ldf',
size=1MB,
fileGrowth=1MB
),
(
name='testHome2_log',
fileName='c:\testHome2_log.ldf',
size=1MB,
fileGrowth=1MB
)
go
Ø基本数据类

精确数字类型

类型

描述

bigint

bigint数据类型用于整数值可能超过int数据类型支持范围的情况,范围:-2^63到2^63-1,存储空间8字节

int

整数数据类型,范围在-2^31到2^31-1,存储空间4字节

smallint

整数,范围在-2^15到2^15-1,存储空间2字节

tinyint

范围在0到255,存储空间1字节

bit

可以取值为1、0或NULL的整数数据类型,每8个bit占一个字节,16bit就2个字节,24bit就3个字节

decimal

带固定精度和小数位数的数值数据类型,有效值从-10^38+1到10^38-1

numeric

同上

money

货币或货币值的数据类型,范围在-922,337,203,685,477.5808到922,337,203,685,477.5807

smallmoney

货币类型,-214,748.3648到214,748.3647

近似数字类型

类型

描述

float

表示浮点数值数据的大致数值数据类型。浮点数据为近似值;范围-1.79E+308至-2.23E-308、0以及2.23E-308至1.79E+308

real

real的SQL-92同义词为float(24),范围在-3.40E+38至-1.18E-38、0以及1.18E-38至3.40E+38

日期时间类型

类型

描述

datetime

表示某天的日期和时间的数据类型,范围在1753年1月1日到9999年12月31日

smalldatetime

范围在1900年1月1日到2079年6月6日

字符串类型

类型

描述

char

固定长度或可变长度的字符数据类型,范围在范围为1至8,000字节

text

最大长度为2^31-1

varchar

固定长度或可变长度的字符数据类型,最大存储大小是2^31-1个字节

Unicode字符串类型

类型

描述

nchar

字符数据类型,长度固定,在必须在1到4,000之间

nvarchar

可变长度Unicode字符数据。最大存储大小为2^31-1字节

ntext

长度可变的Unicode数据,最大长度为2^30-1(1,073,741,823)个字符

二进制字符串类型

类型

描述

binary

长度为n字节的固定长度二进制数据,范围从1到8,000的值。存储大小为n字节。

varbinary

可变长度二进制数据。n可以取从1到8,000的值。最大的存储大小为2^31-1字节

image

长度可变的二进制数据,从0到2^31-1(2,147,483,647)个字节

Ø判断表或其他对象及列是否存在
--判断某个表或对象是否存在
if(exists(select*fromsys.objectswherename='classes'))
print'存在';
go
if(exists(select*fromsys.objectswhereobject_id=object_id('student')))
print'存在';
go
if(object_id('student','U')isnotnull)
print'存在';
go

--判断该列名是否存在,如果存在就删除
if(exists(select*fromsys.columnswhereobject_id=object_id('student')andname='idCard'))
altertablestudentdropcolumnidCard
go
if(exists(select*frominformation_schema.columnswheretable_name='student'andcolumn_name='tel'))
altertablestudentdropcolumntel
go
Ø创建、删除表
--判断是否存在当前table
if(exists(select*fromsys.objectswherename='classes'))
droptableclasses
go
createtableclasses(
idintprimarykeyidentity(1,2),
namevarchar(22)notnull,
createDatedatetimedefaultgetDate()
)
go
if(exists(select*fromsys.objectswhereobject_id=object_id('student')))
droptablestudent
go
--创建table
createtablestudent(
idintidentity(1,1)notnull,
namevarchar(20),
ageint,
sexbit,
cidint
)
go
Ø给表添加字段、修改字段、删除字段
--添加字段
altertablestudentaddaddressvarchar(50)notnull;
--修改字段
altertablestudentaltercolumnaddressvarchar(20);
--删除字段
altertablestudentdropcolumnnumber;

--添加多个字段
altertablestudent
addaddressvarchar(22),
telvarchar(11),
idCardvarchar(3);

--判断该列名是否存在,如果存在就删除
if(exists(select*fromsys.columnswhereobject_id=object_id('student')andname='idCard'))
altertablestudentdropcolumnidCard
go
if(exists(select*frominformation_schema.columnswheretable_name='student'andcolumn_name='tel'))
altertablestudentdropcolumntel
go
Ø添加、删除约束
--添加新列、约束
altertablestudent
addnumbervarchar(20)nullconstraintno_ukunique;
--增加主键
altertablestudent
addconstraintpk_idprimarykey(id);
--添加外键约束
altertablestudent
addconstraintfk_cidforeignkey(cid)referencesclasses(id)
go
--添加唯一约束
altertablestudent
addconstraintname_ukunique(name);
--添加check约束
altertablestudentwithnocheck
addconstraintcheck_agecheck(age>1);
altertablestudent
addconstraintck_agecheck(age>=15andage<=50)
--添加默认约束
altertablestudent
addconstraintsex_defdefault1forsex;
--添加一个包含默认值可以为空的列
altertablestudent
addcreateDatesmalldatetimenull
constraintcreateDate_defdefaultgetDate()withvalues;

-----多个列、约束一起创建--------
altertablestudentadd
/*添加id主键、自增*/
idintidentityconstraintidprimarykey,
/*添加外键约束*/
numberintnull
constraintuNumberreferencesclasses(number),
/*默认约束*/
createDatedecimal(3,3)
constraintcreateDatedefault2010-6-1
go

--删除约束
altertablestudentdropconstraintno_uk;
Ø插入数据
insertintoclasses(name)values('1班');
insertintoclassesvalues('2班','2011-06-15');
insertintoclasses(name)values('3班');
insertintoclassesvalues('4班',default);

insertintostudentvalues('zhangsan',22,1,1);
insertintostudentvalues('lisi',25,0,1);
insertintostudentvalues('wangwu',24,1,3);
insertintostudentvalues('zhaoliu',23,0,3);
insertintostudentvalues('mazi',21,1,5);
insertintostudentvalues('wangmazi',28,0,5);
insertintostudentvalues('jason',null,0,5);
insertintostudentvalues(null,null,0,5);

insertintostudent
select'bulise'name,age,sex,cid
fromstudent
wherename='tony';

--多条记录同时插入
insertintostudent
select'jack',23,1,5union
select'tom',24,0,3union
select'wendy',25,1,3union
select'tony',26,0,5;
Ø查询、修改、删除数据
--查询数据
select*fromclasses;
select*fromstudent;
selectid,'bulise'name,age,sex,cidfromstudent
wherename='tony';
select*,(selectmax(age)fromstudent)fromstudent
wherename='tony';

--修改数据
updatestudentsetname='hoho',sex=1whereid=1;

--删除数据(from可省略)
deletefromstudentwhereid=1;
Ø备份数据、表
--备份、复制student表到stu
select*intostufromstudent;
select*intostu1from(select*fromstu)t;
select*fromstu;
select*fromstu1;
Ø利用存储过程查询表信息
--查询student相关信息
execsp_helpstudent;
execsp_helpclasses;


代码内转载---地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航