--1.创建一个数据库
create database School;
--删除数据库
DROP DATABASE SCHOOL;
--创建数据库的时候,指定一些数据库的相关参数,比如大小,增长方式i、文件保存路径的。
create database School
on primary --主数据文件*.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
)
go
--切换数据库
use School
go
--点击F5执行sql语句,先选中,就会只执行选中的代码,如果没有选中,直接f5会将当前打开的代码都执行一遍
--==================================为数据库创建表===========
--1.创建一个班级表
create table TblClass
(
--创建好了一列
--列名,数据类型、约束(自动编号、主键、外键、默认值等等)
ClsId int identity(1,1) primary key,
ClsName varchar(50) not null,
ClsDesc varchar(500)
)
go
--删除TblClass表
drop table TblClass
--tSId
-- tSName
-- tSGender
-- tSAddress
-- tSPhone
-- tSAge
-- tSBirthday
-- tSCardId
-- tSClassId
--创建一个TblStudent表
create table [TblStudent]
(
stuId int identity(1,1) primary key,
stuName nvarchar(50) not null,
stuGender bit not null,
stuAddress varchar(200),
stuPhone varchar(50),
stuAge int,
stuBirthday datetime,
stuIdNumber varchar(20),--身份证号码
stuClsId int
)
go
--通过sql语句向TblClass表中插入数据
insert into TblClass(ClsName,ClsDesc)
values('黑马三期','没有有二期NB')
go
--通过select语句来查询表中的数据
select ClsName,ClsDesc,ClsId from TblClass
select * from TblClass
--控制结果窗口的显示与隐藏
--ctrl +R
--======================
create database TestSchool
on primary
(
name='TestSchool',
filename='c:\db\TestSchool.mdf',
size=100mb,
maxsize=1024mb,
filegrowth=10%
)
log on
(
name='TestSchool_log',
filename='c:\db\TestSchool.ldf',
size=10mb,
maxsize=50mb,
filegrowth=10mb
)
Go
--创建学生成绩表TblScore
--tScoreId(成绩id,主键,自动编号)、tSId(学生编号)、tEnglish(英语成绩)、tMath(数学成绩)
create table TblScore
(
tScoreId int identity(1,1) primary key,
tsid int not null,
tEnglish float,
tMath float,
)
Go
--创建老师表TblTeacher
--tTId、tTName、tTGender、tTAge、tTSalary、tTBirthday
create table TblTeacher
(
tid int identity(1,1) primary key,
tname varchar(50),
tGender bit default(1),
tage int,
tsalary money,
tbirthday datetime
)
Go
use TestSchool
--跨数据库访问: 数据库..表名
select * into myteacher from School..TblTeacher
use School
sp_tables
select * from TblTeacher
--1.最基本的插入
insert into TblTeacher(tname,tgender,tage,tsalary,tbirthday)
values('杨中科',1,18,1000000,'2010-09-9')
--2.只向某些列插入数据,这时的前提是其他列可以为null或者是有默认值的情况
insert into TblTeacher(tname,tsalary)
values('苏坤',500000)
insert into TblTeacher(tname,tgender,tage,tsalary,tbirthday)
values(N'牛亮亮',1,18,100,'2010-09-9')
--当向表中的除自动编号外的所有其他列都插入数据的时候,这时可以省略列名
insert into TblTeacher
values('牛亮亮11',1,18,100,'2010-09-9')
--3.为自动编号插入数据
set IDENTITY_INSERT TblTeacher on
insert into TblTeacher(tid,tname,tsalary)
values(100,'bob',500000)
set IDENTITY_INSERT TblTeacher off
insert into TblTeacher(tname,tsalary)
values('bob',500000)
--insert into ... vlaues 这种写法每次只能插入一条数据
insert into TblTeacher
select 'Chris',1,20,2000000,'1999-9-9' union
select 'James',1,20,2000000,'1990-9-9' union
select 'Tom',1,20,2000000,'1920-9-9'
--union关键字本身就具有去掉重复的意思。
--union \ union all
insert into TblTeacher
select 'Chris',1,20,2000000,'1999-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'James',1,20,2000000,'1990-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9' union all
select 'Tom',1,20,2000000,'1920-9-9'
--将一个表中的数据备份到另外一个表中
select * from TblTeacher
--将TblTeacher表中的数据备份到NewTblTeacher
--这种写法会将TblTeacher表中的所有数据都插入到NewTblTeacher表中
--前提是NewTblTeacher表不存在,如果这个表存在则报错。
select * into NewTblTeacher from TblTeacher
select * from NewTblTeacher
select * from TblTeacher
--向一个已经存在的表中插入数据,数据的来源是另外一张表。
insert into NewTblTeacher(tname,tage)
select tname,tage from TblTeacher
create table T3
(
autoId int identity(1,1),
userName varchar(40)
)
--修改表,中的列
alter table T3 alter column userName nvarchar(50)
drop table t2
--=========================更新语句---------------
select * from TblTeacher
--将所有年龄小于20岁的人的年龄都改成19
update TblTeacher set tage=19 where tage<20
--将年龄为20岁的人的年龄+1
update TblTeacher set tage=tage+1 where tage=20
--=把所有人的工资都改成2000.
--如果不加where条件会将所有数据都修改数据。
update TblTeacher set tsalary=2000
--1.对数据操作前,一定要做备份。
--2.细心。
--把表中所有的年龄为19岁的同学的姓名两边加个★,性别=女,工资都+500,
--SQL 2008 可以写成tsalary+=500,但是尽量用通用的语法 tsalary=tsalary+500
update TblTeacher set tname='★'+tname+'★',tgender=0,tsalary=tsalary+500
where tage=19
select * from TblTeacher
--将年龄为19岁的,并且性别为0的,人的姓名两边再加两个☆
update TblTeacher set tname=replace(tname,'★','☆') where tage=19 and tgender=0
--REPLACE ( string_expression , string_pattern , string_replacement )
--逻辑运算符
--not
--and
--or
--逻辑运算符的优先级问题:not > and > or
tsage>10 and tsage<50 or tname='zs' and ( not (tbirthday>'2000-10-10'))
select * from TblTeacher
delete from TblTeacher where tage=19 or tage is null
--删除所有数据
delete from TblTeacher
insert into TblTeacher values('张三',1,20,10000,'2000-10-10')
truncate table TblTeacher
--=======使用delete from 表名 与truancate table 表名,都能把表中的数据全部删除-======
--区别:
--1.delete 语句删除数据的时候,自动编号没有恢复到默认值。但是truancate语句重新设置了自动编号
--2.通过truncate语句删除表中的数据的时候,只能一次性都清空,不能根据条件来删除,而delete可以根据条件来删除。
--3.truncate语句清空表中的数据时,速度(性能)比delete语句快的多的多的多。
--4..truncate语句不触发delete触发器。