create database 数据库名 ---
---创建数据库
use 数据库名 ------使用数据库
***************************************************************************************
--创建主数据文件
on(
name='D:\Data\WebShop_data',-----------指定数据库逻辑名称
filename='D:\Data\WebShop.mdf',--------------指定数据库的物理位置和物理名称
size=3, ----------------------指定数据库的初始化大小,如不指定单位,则默认单位是MB
Maxsize=10 ----------------------指定数据库的最大值,如不指定单位,则默认单位是MB,如果不设定最大值,则默认无限大
maxsize = unlimited,----也是无限大的设置。如果不写则默认
filegrowth=50% ------------增长增量,值也可以是MB,比如filegrowth=3,意思为超过容量就3MB的扩展
)
--创建日记文件
log on ()-----括号里面的数据和主数据文件设置的一样。
-------建表-----------
create table 表名(
loginId int identity(201301,1) primary key, ------------此列有自增和主键约束
loginName varchar(20) unique not null, ------------此列添加了唯一约束
loginPass varchar(20) not null,
nickName varchar(20) not null,
sex char(2)check(sex in('男','女')) default '男', ------------此列添加了检查约束和默认约束
birthday datetime check(birthday <getdate()) not null,
nickphoto varchar(50) default 'images/29.gif',
nicktype bit not null default 0,--1为管理员,0为普通用户
)
字段名 数据类型 foreign key(字段名) references 主键表名(字段名) ------------------添加外键
----------添加数据------------
insert into 表名 values('wangsong','wangsong','心帆唯一','images/362.gif',1)
*************************************************************************************
Ctrl+E 执行数据库语句命令
Ctrl+S 保存数据库命令
Ctrl+T 执行数据库语句命令,去除表格边框
Ctrl+D 执行数据库语句命令,添加表格边框
Ctrl+W 选中当前鼠标指针所在的字符
*************************************************************************************
DBMS——数据库管理系统(DateBase Management System)
services.msc ----------开启服务
net start mssqlserver ---------------开启数据库服务
net stop mssqlserver ---------------关闭数据库服务
************************************************************************************
创建数据库必将生成至少两个文件 *.mdf(主要数据库文件)
*.ldf(日志文件)
*.ndf(次要数据库文件)
分离数据库 右键 > 任务 > 分离
附加数据库 右键 > 附加 > 添加 > 数据库目录 > 确认
************************************************************************************
——单行注释
/*
* 多行注释
*/
**************************************************************************************
drop database 数据库名 -----------删除数据库
drop table 表名 ----------删除表
delete 表名 where 字段名=值 ---------------删除指定记录
delete 表名 where 字段名 between 10 and 15 ----------删除指定记录(between在10-15这个范围内)
delete 表名 where 字段名 in (10,15) ----------删除指定记录(在10.或者15中)
truncate table 表名 -----------删除表中所有数据
alter table 表名 drop column 字段名 ----------删除列
exec sp_help 表名 --------------查看表的所有设置
exec sp_helpdb 数据库名 --------------- 查看数据库信息
exec sp_helpconstraint 表名 ----------查看表上的约束
exec sp_tables [字段名] ------------查看某个表列的信息
exec sp_columns 表名 ---------------------查看表的信息
exec sp_helpindex 表名 ---------------------查看表的索引
exec sp_helptext 视图名 ---------------------查看视图的语句文本
exec sp_stored_procedures ----------查看当前数据库中的存储过程
*******************************************************************************************
select 字段名 as 改成的字段名 from 表名 --------- 查询修改的列内容
update 表名 set 字段名=新值 where 条件(字段名=值,此处的条件最好是唯一的,如id) ------------修改表中的数据
exec sp_renamedb '原数据库名','新数据库名' -----------------修改数据库名称
exec sp_password @new='sa' ------------修改数据库密码
alter table 表名 add 约束名(字段名) ----------修改表
alter table 表名 add 字段名 数据类型 -----------添加字段名
select distinct 字段名 from 表名 ----------------------清除重复行
select top 数字(或 %) * from 表名 ------------查询表内头条数量
select * from 表名1 join 表名2 on 连接条件 --------------联表查询
select * from 表名1,表名2 where 连接条件 -------------联表查询
select * from 表名1 left join 表名2 on 连接条件 --------------左外连接
select * from 表名1 right join 表名2 on 连接条件 --------------右外连接
select * from 表名1 full join 表名2 on 连接条件 --------------全外连接
****************************************************************************************
以下为sql语句查询先后格式
select 字段名 from 表名/视图名
where 条件
group by 字段名 (此条件以字段名为类型查询,查询的字段名必须要在查询条件里)
having 条件 (此处条件为查询结果后的在做升序或降序排列操作)
order by 字段名 asc 升序(默认)
desc 降序
***************************************************************************************
select * from 表名 where 字段名 like '%angel%' --------------查询表中含有angel字符的内容
select * from 表名 where 字段名 like 'angel%' --------------查询表中以angel开头的内容
select * from 表名 where 字段名 like '_angel%' --------------查询表中第二个以angel开头的内容
select * from 表名 where 字段名 like '%angel' --------------查询表中以angel结束的内容
select * from 表名 where 字段名 like '%[angel]%' --------------查询表中含有angel五个字母中任意一个字母的内容
select * from 表名 where 字段名 like '%[^angel]%' --------------查询表中没有包含angel五个字母中任意一个字母的内容
select * from 表名 where 字段名 like '_[^angel]%' --------------查询表中第二位字符开始没有包含angel五个字母中任意一个字母的内容
% 代表多个字符
_ 代表一个字符
[] 代表包含括号里的内容
^ 代表不包括
***************************************************************************************************
聚合函数
select count(字段名) from 表名 -----------查询表中元素的数量
select sum(字段名) from 表名 -----------查询表中字段里 总值
select max(字段名) from 表名 -----------查询表中字段里最大值
select min(字段名) from 表名 -----------查询表中字段里最小值
select avg(字段名) from 表名 -----------查询表中字段里平均值
***************************************************************************************************
系统函数
select convert(int,'123') ---------------------将字符串转成 int 类型
select convert(char(5), 12345) --------------------将数字转成 char 类型
select current_user ------------------------返回当前的登录名
select datalength('abc中国') -----------------返回用于指定表达式的 字节数
select host_name() ---------------------返回当前登录的计算机的名字
select system_user --------------返回当前登录的计算机的用户名字
***************************************************************************************************
查询时间语句(时间函数)
----------yy 年 mm 月 dd 天 hh 小时 mi分 ss 秒
select getdate() -------得到当前时间
select datediff(yy,'1989-1-1',getdate())------------查询时间差
select convert(char(10),getdate(),120) -----显示时间的格式
select dateadd(yy,44,getdate()) ------------------返回一个当前加上 44 年的时间(第一个参数可以为 年 月 日 小时 分 秒)
select datename(dw,getdate()) ---------------------日期中指定日期部分的字符串形式
select datepart(yy,getdate()) -------------日期中指定日期部分的整数形式
select user_name(1) -------------从给定的用户I D返回用户名
***************************************************************************************************
查询数字语句(数学函数)
SELECT ABS(-43) ----------------------取数值表达式的绝对值
select ceiling(43.5) ---------------------返回大于或等于所给数字表达式的最小整数
select floor(43.5) -------------------取小于或等于指定表达式的最大整数
select round(43.578632,4) --------------------将数值表达式四舍五入为指定精度
select sign(0) --------------------------对于正数返回+1,对于负数返回-1,对于0 则返回0
SELECT SQRT(9) -------------------取浮点表达式的平方根
SELECT POWER(5,2) -------------------取数值表达式的幂值
***************************************************************************************************
查询字符串语句(字符串函数)
select charindex('要查的字符串','原字符串',从何处开始查询) ---------------用来寻找一个指定的字符串在另一个字符串中的起始位置
select len('字符串') -------------------查询字符串的长度
select lower('字符串') -----------将字符串中的大写字母 转 小写
select upper('字符串') -----------将字符串中的大写字母 转 小写
select ltrim('字符串') -----------清空左边多余的空位
select rtrim('字符串') -----------清空右边多余的空位
select left('字符串',数字) -----------从左边(数字)开始截取字符串
select right('字符串',数字) -----------从右边(数字)开始截取字符串
select replace('原样字符串','需要替换的字符串','将插入的字符串') ------- 替换字符串
select stuff('原样字符串',数字(需要从哪里开始替换),数字(需要替换多长),'替换的内容') ------- 填充字符串
***************************************************************************************************
数据类型
整数数据bit 0 1 null
int -2^32/2^32-1
smallint -2^15/2^15-1
tinyint 0-2^8-1
精确数据numeric(18,0)
decimal
近似浮点数 float
real
日期数据 datetime 1753/1/1-9999/12/31
smalldatetime 1990/1/1-2079/12/31
货币类型 money
smallmoney
text 为文本类型
char(n) n的取值是:1-8000,即可容纳8000个ANSI(ACSII)字符
nchar(n) n的取值是:1-4000,即可容纳4000个Unicode字符
varchar(n) n的取值是:1-8000,即可容纳8000个ANSI(ACSII)字符,其长度是可变的,这个 n 只是表示这个字段字符的最大个数
nvarchar(n)n的取值是:1-8000,即可容纳4000个Unicode字符,其长度是可变的,这个 n 只是表示这个字段字符的最大个数
****************************************************************************************************
print @@ERROR --最后一个T-SQL错误的错误号
print @@IDENTITY --最后一次插入的标识值
print @@LANGUAGE --当前使用的语言的名称
print @@MAX_CONNECTIONS --可以创建的同时连接的最大数目
print @@ROWCOUNT --受上一个SQL语句影响的行数
print @@SERVERNAME --本地服务器的名称
print @@VERSION --SQL Server的版本信息
print '当前错误号'+convert(varchar(5),@@ERROR) ----查看当前错误号
*****************************************************************************************************
--声明变量
declare @age int
--赋值变量
set @age=10
--打印变量方式1
print @age
--打印变量方式2
select @age
declare @day int
set @day=9
declare @tz int
set @tz=1
while(@day!=0)
begin
set @tz=(@tz+1)*2
set @day=@day-1
end
print '猴子总共吃了'+convert(nchar(5),@tz)+'个桃子'
**************************************************************************************************************
use master
go
--exec xp_cmdshell 'E:\Mywork',NO_OUTPUT
if exists (select * from sysdatabases where name='abc')--查看数据库中是否存在数据库名
drop database abc ----------删除abc数据库
go
create database abc ----------创建abc数据库
--EXEC xp_cmdshell 'dir E:\Mywork\' -------查看文件
select * from sysobjects where name='表名(或视图名)' --------查看数据库中某张表(或视图)的存在以及信息
-- 如果backtable表存在,就从deleted表中的数据复制到backtable表中
if exists( select * from sysobjects where name = 'backtable')
insert into backtable select * from deleted
else
--如果backtable表不存在,就新建backtable表并复制deleted表中的数据
select * into backtable from deleted
insert into 需要插入的表(字段名)select 字段名 from 表名 ----------插入一条在其他表中查询出来的记录
***************************************************************************************************************
第一范式(1NF)的目标:确保每列的原子性。
第二范式(2NF)的目标:确保表中的每列,都和主键相关 。
第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关
***************************************************************************************************************