-------安装环境 SQL Server Management Studio 推荐使用SQL2008 -----(SQL)从入门最基础开始
-----搭配环境 Microsoft Visual Studio 2008 可以做出各类牛X软件
---------创建一个简单的数据库:属性用默认值
create database stu
--------创建一个包含一个主要数据文件,一个次要数据文件,一个日志文件create database stu1
on primary-----------------默认主要数据文件要放在主要文件组
(
name=stu_data,
filename='d:\stu11.mdf',------主要数据文件
size=5,
maxsize=100, бfilegrowth=1
),-----------主要数据文件和次要数据文件要有逗号
(
name=stu_data1,
filename='d:\stu12.ndf',
size=3,
maxsize=unlimited,
filegrowth=10%
)
--------------日志文件与数据文件之间没有逗号
log on
(
name=stu_data2,
filename='d:\stu13.ldf',
size=5,
maxsize=unlimited,
filegrowth=2
)
--------------
create database员工管理数据库
on primary
(
name='员工',
filename='d:\员工.mdf',
size=5
),
(
name='员工',
filename='d:\员工.ndf',
size=5,
maxsize=unlimited,
filegrowth=1
)
log on
(
name='员工',
filename='d:\员工.ldf'
)
-------------查看数据库的信息
exec sp_helpdb---------查看所有数据库的信息
exec sp_databases
------查看指定数据库
exec sp_helpdb stu1
----查看数据文件的信息(在当前数据库下)
use stu1
exec sp_helpfile
exec sp_helpfile stu_data
------查看文件组信息
exec sp_helpfilegroup
----------------修改数据库
create database xiugai
on primary
(
name=xiugai1,
filename='d:\xiugai1.mdf',
size=5,
maxsize=100,
filegrowth=1
)
log on
(
name=xiugai2,
filename='d:\xiugai2.ldf'
)
use xiugai
exec sp_helpfile
----------增加一个数据文件
alter database xiugai
add file
(
name=xiugai3,
filename='d:\xiugai3.ndf'
)
-------------增加一个日志文件
alter database xiugai
add log file
(
name='xiugai4',
filename='d:\xiugai4.ldf'
)
----------------增加一个文件组
alter database xiugai
add filegroup abc
exec sp_helpfilegroup
------------增加一个数据文件放入指定的文件组
alter database xiugai
add file
(
name=xiugai5,
filename='d:\xiugai5.ndf'
)to filegroup abc
exec sp_helpfilegroup
-------------移除文件组
alter database xiugai
remove file xiugai5
alter database xiugai
remove filegroup abc
-------------修改文件的属性值
alter database xiugai
modify file
(
name='xiugai3',
maxsize=100
)
exec sp_helpfile
------------修改数据库的名称
exec sp_renamedb'xiugai','xiugai1'
-----------删除数据库
drop database xiugai1
---------------数据类型
create database数据类型
use数据类型
---------整型
create table整型
(
big bigint,
int_n int,
small smallint,
tiny tinyint
)
SELECT*FROM整型
insert into整型values(100,1500,200,20)
insert into整型values(100,1500,200,255)
insert into整型values(100,1500,200,256)---发生数据类型tinyint 的算术溢出错误
insert into整型values(100,1500,200000,255)
-------------浮点型
create table浮点
(
fl float,
re real,
de decimal(5,2),
nu numeric(6,2)
)
select*from浮点
insert into浮点values(2.3,15.2,123.12,1234.12)
insert into浮点values(2.3,15.2,123.1269,1234.1242)---四舍五入
insert into浮点values(2.3,15.2,1231.12,1234.12)--将numeric 转换为数据类型numeric 时出现算术溢出错误。
------------------字符型
create table字符
(
char_n char(6),
varchar_n varchar(6),
text_n text,
nch nchar(6),
nvar nvarchar(6),
nt ntext
)
select*from字符
insert into字符values('a','r','w','f','r','y')
insert into字符values('中国人','中国人','w','中国人民万岁','r','y')
insert into字符values('中国人民','中国人','w','中国人民万岁','r','y')--将截断字符串或二进制数据。
-----------1、char \varchar区别(固定空间\可变空间)
----------2、char\nchar区别:输入汉字时,nchar为双字节
-------------------日期与时间
型:datetime(1753-9999),smalldatetime(1900-2079):要单引号create table日期
datetime_n datetime,
small smalldatetime
)
select*from日期
insert into日期values (2008-08-08,2010-12-4)
insert into日期values ('2008-08-08 20:08:00','2010-12-4')
--------------------------货币类型:money,smallmoney
create table货币
(
mo money,
small smallmoney
)
select*from货币
insert into货币values(200.5,300)
insert into货币values($200,$300)
insert into货币values(¥,¥)
----------------二进制型:binary,varbinary,image(图像)
-------------------特殊:sql_variant(万能):除了二进制类型和text类型
create table特殊
(
mn sql_variant
)
select*from特殊
insert into特殊values(200)
insert into特殊values(200.56)
insert into特殊values('aa')
insert into特殊values('2008-5-8')
insert into特殊values(200)
----------建表加约束
create database student
use student
create table t_student
(
sno char(10),
sname varchar(10),
ssex char(4),
sage int,
sdep char(20),
sphone char(15)
)
select*from t_student
insert into t_student values('01','张三','男',25,'软工
','110')
insert into t_student values('01','张三feng ','猫',2588,'软工','110')
-------------添加约束:保证数据的完整性
drop table t_student
--------------第一种加约束的方法
create table t_student
(
sno char(10)primary key,------主键约束:具有唯一性,他能够决定一条记录,不能为空
sname varchar(10)not null,----非空约束
ssex char(4)check(ssex='男'or ssex='女')default'男',----检查约束:范围
sage int check(sage>=0 and sage<=150),
sdep char(20),
sphone char(15)unique,-----唯一约束
)
select*from t_student
insert into t_student values('01','张三','男',25,'软工
','110')
insert into t_student values('01','张三','男',25,'软工
','118')-----违反了主键约束
insert into t_student values('02','张三风','猫',25,'软工','118')-----违反了检查约束
insert into t_student values('02','张三风','男',2500,'软工','170')----违反了检查约束
insert into t_student values('02','聂英鹏','男',25,'软工','110')-----违反了唯一约束
insert into t_student values('02','聂英鹏',default,25,'软工','119')-----验证默认约束
insert into t_student values('03',null,'男',19,'网工
','150')----违反了非空约束
insert into t_student values('03','张浩','男',19,'网工
','150')
----------查看所有约束
exec sp_helpconstraint t_student
-----------------第二种加约束的方法
drop table t_student
create table t_student
(
sno char(10),
sname varchar(10)not null,----非空约束
ssex char(4)default'男',
sage int,
sdep char(20),
sphone char(15),
constraint pk primary key(sno),
constraint ch_ssex check(ssex='男'or ssex='女'),
constraint ch_age check(sage>=0 and sage<=150), constraint un unique(sphone)
)
exec sp_helpconstraint t_student
----------------第三种方法
drop table t_student
create table t_student
(
sno char(10),
sname varchar(10),
ssex char(4),
sage int,
sdep char(20),
sphone char(15),
)
exec sp_helpconstraint t_student
-----修改表加约束
--------------加主键约束
------先修改列的属性:非空
alter table t_student
alter column sno char(10)not null--------非空约束
alter table t_student
add constraint pk1primary key(sno)
----------加检查约束
alter table t_student
add constraint ch_ssex check(ssex='男'or ssex='女')
alter table t_student
add constraint ch_age check(sage>=0 and sage<=150)
-----------加唯一约束
alter table t_student
add constraint un unique(sphone)
---------加默认约束
alter table t_student
add constraint de default'男'for ssex
-------------外键约束:确保两个表中的数据的一致性
select*from t_student
insert into t_student values('01','张三','男',25,'软工
','110')
insert into t_student values('02','聂英鹏','男',21,'软工
','119')
insert into t_student values('03','王鹏','男',17,'软工','17')
insert into t_student values('04','李书豪','男',22,'网工
','11045')
insert into t_student values('05','溜溜','女',20,'软工
','110777')
----课程表
create table course
(
cno char(10)primary key,
cname varchar(20)-------------课程名字
)
insert into course values('01','网站开发')
insert into course values('02','C语言')
insert into course values('03','JSP')
insert into course values('04','JAVA')
insert into course values('05','C#')
select*from course
-------------学生成绩表
create table t_score
(
sno char(10),
cno char(10),
score real check(score>=0 and score<=100),
constraint pkk primary key(sno,cno),---------------联合主键
constraint fk1foreign key(sno)references t_student, constraint fk2foreign key(cno)references course
)
insert into t_score values('01','01',98)
insert into t_score values('01','02',78)
insert into t_score values('02','01',100)
insert into t_score values('02','03',75)
select*from t_score
insert into t_score values('10','01',98)----违反了外键约束insert into t_score values('01','09',98)----违反了外键约束
select*from t_student
select*from t_score
select*from course
-------------------------修改表
------------------ 删除约束
alter table t_student
drop constraint de
exec sp_helpconstraint t_student
---------------修改表的结构
create table员工表
(
employ_no char(5)primary key,
em_name varchar(10),
em_ssex char(4)check(em_ssex='男'or em_ssex='女')
)
select*from员工表
-----查看表的结构
exec sp_help员工表
------增加一列
alter table员工表
add em_age int
alter table员工表
add constraint uu check(em_age>=0 and em_age<=150) exec sp_helpconstraint员工表
--------------修改列的属性值:column
alter table员工表
alter column em_name char(20)
------------删除列:column
alter table员工表
drop constraint uu
alter table员工表
drop column em_age
-----------修改列的名字
exec sp_rename'员工表.em_name','姓名'
alter table员工表
drop constraint CK__员工表__em_ssex__2E1BDC42
exec sp_rename'员工表.em_ssex','性别'
alter table员工表
add constraint xingbie1check(性别='男'or性别='女')
---------------数据操作
--------向数据表中增加数据
select*from t_student
-----1 全部增加信息:按列的顺序增加
insert into t_student values('06','刘小慧','女',19,'动画','1111')
------2、增加部分内容:sno,sname,sphone,ssex
insert into t_student(sno,sname,ssex,sphone)
values('07','qq','男','123456')
---------修改数据表中的数据
------1、修改整列信息
update t_student set sage=sage+1
-------2、按条件修改信息: where
update t_student set sage=25
where sno='07'
----------删除数据表中的数据
-------1、按条件删除数据
delete from t_student
where sno='07'
-------2、删除全部数据
----drop table t_score
delete from t_student
/*建员工表,如上图
*/
create table员工表
(
员工号char(10)primary key,
姓名nchar(10),
职务nchar(10),
工资money,
部门nchar(5)
)
------1、插入一条信息:员工号004;姓名赵方;部门财务
insert into员工表values('001','张三','程序员',3000,'软件研发
部')
insert into员工表(员工号,姓名,部门)values('002','赵方','财务')
select*from员工表
-----2、删除员工号是的信息
delete from员工表
where员工号='002'
----3、更新数据:把部门为软件开发的员工信息工资涨
update员工表set工资=工资+1000
where部门='软件研发部'
----4、把员工号为:的信息,工资设为
update员工表set工资=2500
where员工号='001'
------------------------查询(不影响表的内容)
-----------简单查询
-------查询所有内容
select*from t_student
select sno,sname,ssex,sage,sdep,sphone from t_student SELECT sno,sname,ssex,sage,sdep,sphone FROM t_student
------查询指定列的内容
select sno,sname,sphone from t_student
------------查询前几行或前百分比的数据:top
select top 2 *from t_student
select top 2 sno,sname,sdep from t_student
select top 20 percent*from t_student
select top 20 percent sname,sphone from t_student
----请检索出-4行的信息:嵌套查询
select top 2 *from t_student
where sno not in(select top 2 sno from t_student)
--------------distinct:去除重复的信息
select*from t_student
select distinct sdep from t_student
---------------WHERE :条件子句
------算术运算符,赋值