T-SQL笔记总结(1)
createdatabase School;
--删除数据库
dropdatabase School;
--创建一个数据库的时候,指定一些数据库的相关参数,比如大小,增长方式,文件保存的路径
createdatabase School
onprimary --主数据文件*.mdf
(
--数据库的逻辑名称
name='school',
size=10Mb,
filename='c:\school.mdf',
filegrowth=10%,
maxsize=100mb
)
log on--日志文件*.ldf
(
name='School_log',
filename='c:\school.ldf',
size=5mb,
filegrowth=2mb,
maxsize=50mb
)
--切换数据库
useSchool --点击F5执行SQL语句,先选中再执行
--====================为数据库创建表================
--1、创建一个班级表
createtable TblClass
(
--创建好了一列
--列名,数据类型,约束(自动编号)identity
ClsId intidentity(1,1)primary key,
ClsName varchar(50)not null,
ClsDesc varchar(500)
)
--删除TblClass表
droptable TblClass;
--创建一个TblStudent表
createtable TblSudent
(
stuId intidentity(1,1)primary key,
stuName nvarchar(50)not null,
stuGender bitnot null,
stuAddress varchar(200),
stuPhone varchar(50),
stuAge int,
stuBirthday datetime,
stuIdNumber varchar(20),--身份证号码
stuClsId int
)
--通过sql语句向TblClass表中插入数据
insertinto TblClass(ClsName,ClsDesc)
values('黑马三期','没有二期牛B')
--通过select语句来查询表中的数据
selectClsName,ClsDesc,ClsIdfrom TblClass
select*fromTblClass
--控制窗口的显示与隐藏
--ctrl+R
--=======================================
createdatabase TestSchool
onprimary
(
name='TestSchool',
filename='c:\练习存放路径\db\TestSchool.mdf',
size= 10mb,
maxsize=100mb,
filegrowth=10%
)
log on
(
name='TestSchool_log',
filename='c:\练习存放路径\db\TestSchool.ldf',
size=5mb,
maxsize=50mb,
filegrowth=1mb
)
GO
--创建学生成绩表TblScore
--tScoreId(成绩id,主键,自动编号)、tSId(学生编号)、tEnglish(英语成绩)
createtable TblScore
(
tScoreId intidentity(1,1)primary key,
tsid intnot null,
tEnglish float,
)
Go
--创建老师表TblTeacher
--tTId、tTName、tTGender、tTSalary、tTBirthday
createtable TblTeather
(
tTId intidentity (1,1) primarykey,
tTName varchar (50),
tTGender bit default(1),
tage int ,
tTSalary money,
tTBirthday datetime
)
Go
useTestSchool
--跨数据库访问:数据库..表名
select* intomyteacher from School..TblTeather
--2013/8/4
useSchool
--
select*fromTblTeather
--1、最基本的插入
insertinto Tblteather(ttname,ttgender,tage,ttsalary,ttbirthday)
values('小明',1,18,10000,'2010-09-9')
--2、只向某列插入数据,这时的前提是其他列可以为空(null)或有默认值,否则报错
insertinto TblTeather(ttname,ttsalary)
values('张三',50000)
insertinto Tblteather(ttname,ttgender,tage,ttsalary,ttbirthday)
values(N'王五',1,18,100020,2011-09-9)
insertinto Tblteather(ttname,ttgender,tage,ttsalary,ttbirthday)
values(N'李四',1,18,11111100,'2010-09-9') --(非英语字符前加N是为了防止乱码)
--当向表中的出除自动编号外的所有其他列都插入数据的时候,这时可以省略列名
insertinto Tblteather
values('李四',1,18,11111100,'2010-09-9')
--3.为自动编号插入值
setIDENTITY_INSERT TblTeatheron --打开
insertinto TblTeather(ttid,ttname,ttsalary)
values(100,'bob',34549084)
setIDENTITY_INSERT TblTeatheroff --关闭
insertinto TblTeather(ttname,ttsalary)
values('bob',34549084)
--insert into...vlaues 这种写法每次只能插入一条数据
insertinto TblTeather
select'Chris',1,20,2334244,'1988-9-9' union
select'James',1,20,2334244,'1990-9-9' union
select'Tom',1,20,2334244,'1998-9-9'
Go
--union关键字本身就具有去掉重复的意思。
--union\union all
insertinto TblTeather
select'Chris',1,20,2334244,'1988-9-9' union all
select'James',1,20,2334244,'1990-9-9' union all
select'Tom',1,20,2334244,'1998-9-9' unionall
select'Chris',1,20,2334244,'1988-9-9' union all
select'James',1,20,2334244,'1990-9-9' union all
select'Tom',1,20,2334244,'1998-9-9' union all
select'Chris',1,20,2334244,'1988-9-9' union all
select'James',1,20,2334244,'1990-9-9' union all
select'Tom',1,20,2334244,'1998-9-9'
--将一个表中的数据备份到另一个表中
select* fromTblTeather
--将TblTeather表中的数据备份到NewTblTeather
--这种写法会将TblTeather表中的所有数据偶读插入到NewTblTeather表中
--前提是NewTblTeather表不存在,如果这个表存在则报错
select*intoNewTblTeather from TblTeather
select*fromNewTblTeather
--向一个已经存在的表重插入数据,数据来源是另一张表。
insertinto NewTblTeather(ttname,tage)
selectttname,tage fromTblTeather
createtable t3 --只能create(创建)一次
(
autoId intidentity(1,1),
uname varchar(30)
)
--修改表中的列语法
altertable T3 alter columnuname nvarchar(50)
--drop table t3
--==========================更新语句================================
select*fromTblTeather
--将所有年龄小于岁的年龄都改成
updateTblTeather set tage=19 wheretage<20
--将年龄为岁的人的年龄+1
updateTblTeather set tage=tage+1where tage=20
--把所有人的工资都改成 (注意:记得写where条件!!!)
updateTblTeather set ttsalary=2000
--1、对数据操作前,一定要做备份
--2、要细心
--把表中所有的年龄为19岁的同学的姓名两边加个★,性别=女,工资都+500
--SQL 2008 可以写成ttsalary+=500,但2005不行,所以应尽量使用通用的语法ttsalary=ttsalary+500
updateTblTeather set ttname='★'+ttname+'★',ttgender=0,ttsalary=ttsalary+500
wheretage=19
--将年龄为岁的,并且性别为的,人的姓名两边在加两个☆
updateTblTeather set ttname='☆'+ttname+'☆' wheretage =19 andttgender=0
--将年龄为岁的,并且性别为的,人的姓名两边的★替换成☆
updateTblTeather set ttname=replace(ttname,'★','☆')where tage =19 andttgender=0
--REPLACE(string_expression,string_pattern,string_replacement)
--逻辑运算符
--not
--and
--or
--逻辑运算符的优先级问题:not>and>or
tsage>10 andtsage<50 or ttname = 'zs'and (not(ttbirthday>'2000-10-10'))
select*fromTblTeather
--
deletefrom TblTeather where tage=19or tage is null
--删除所有数据
deletefrom TblTeather
insertinto TblTeather values('张三',1,20,10000,'2000-10-10')
truncatetable TblTeather
--=====使用delete from表名与truncate table表名,都能把表中的数据删除==============
--区别:
--1、delete语句删除数据的时候,自动编号没有恢复到默认值。但是truncate语句重新设置了自动编号
--2、通过truncate语句删除表中的数据的时候,只能一次性清空,不能根据条件来删除,而delete可以根据条件来删除
--3、通过truncate语句清空表中的数据时,速度(性能)比delete语句快的多得多得多。
--4、truncate语句不触发delete触发器