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觸發器