数据库学习之路1


  昨天写的不小心忘记保存了,就得今天重新写了,好郁闷,那么就让我继续努力吧!

谈一下数据库的概念吧

      DBMS(DataBase Management System,数据库管理系统)和数据库。平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类( Catalog )。

      不同品牌的DBMS有自己的不同的特点:MYSQL(速度很快,适合对数据要求并不是十分严谨的地方,去掉了很多中小型企业中不常用的功能)、MSSQLServer(与.net结合很好,只能运行在windows平台下,大数据量、大交易量表现并不十分好)、DB2(大型)、Oracle(大型)、Access(文件)、 SQLite(极其轻量级数据库) 、Sybase等。对于开发人员来讲,大同小异

SQL(语言)<>SQLServer<>MSSQLServer。最常见的错误。

       除了Access、SQLServerCE、SQLite等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。

数据库DataBase,不同类的数据应该放到不同的数据库中

便于对各个数据类别的进行个性化管理

避免命名冲突

安全性更高

Table(表):关系数据库中的关系指的就是表。不同的货物要放到各自的货物架,将这种区域叫做“表”(Table)。不同的表根据放的数据不同进行空间的优化,找起来也方便。

列(Column)、字段(Field)、行(Row)

用表格格式化数据:即便是引入了自动识别设备也很容易识别。


主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键
主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键


接下来我就开始枯燥的代码了

--1.创建一个数据库
create database School;
--删除数据库
drop database School;
--创建数据库的时候指定一些选项。
create database School
on primary
(
	name='School',
	filename='C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\School.mdf',
	size=5MB,
	--filegrowth=10MB,
	filegrowth=10%,--按照文件的百分比来增长
	maxsize=100MB
)
log on
(
	name='School_log',
	filename='C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\School.ldf',
	size=3MB,
	filegrowth=3%,
	maxsize=20MB
)

--切换数据库
use School;


--在School数据库中创建一个学生表。TblStudent
create table TblStudent
(
	--表中列的定义在这对小括号中
	--tsid int identity(1,1) not null primary key
	tsid int identity(1,1) primary key,
	tsname nvarchar(10) not null,
	tsgender bit not null,
	tsaddress nvarchar(300) null,
	tsphone varchar(100),
	tsage int,
	tsbirthday datetime,
	tscardId varchar(18),
	tsclassId int not null
)
go
--tSId 
--	tSName
--	tSGender
--	tSAddress 
--	tSPhone 
--	tSAge 
--	tSBirthday 
--	tSCardId 
--	tSClassId 
---创建一个班级表
--班级id,班级名称,描述信息
create table TblCalss
(
	tclassId int identity(1,1) primary key,
	tclassName nvarchar(50) not null,
	tclassDesc nvarchar(100)
	
)
Go

--使用insert语句向数据库的表中插入数据

select * from TblCalss

--1.insert向表中插入一条数据
insert into TblCalss(tclassName,tclassDesc) values('黑马期','牛B中的战斗机。')
--向自动编号列插入数据
set IDENTITY_INSERT tblcalss on 
insert into TblCalss(tclassId,tclassName,tclassDesc) values(101,'黑马期','牛B中的战斗机jjjjj。')
set IDENTITY_INSERT tblcalss off
--ctrl + R


--如果要向该表中的出了自动编号列以外的其他所有列都插入数据,则此时可以省略列名。
insert into TblCalss values('黑马期','牛B中的战斗机。')

--向TblStudent表中插入数据

	----表中列的定义在这对小括号中

	--tsid int identity(1,1) primary key,
	--tsname nvarchar(10) not null,
	--tsgender bit not null,
	--tsaddress nvarchar(300) null,
	--tsphone varchar(100),
	--tsage int,
	--tsbirthday datetime,
	--tscardId varchar(18),
	--tsclassId int not null
insert into TblStudent(tsname,tsgender,tsaddress,tsphone,tsage,tsbirthday,tscardid,tsclassid)
values('zpp',0,'北京市海淀区','13888885188',18,'1990-10-10','11009876543215267x',1)

select * from TblStudent

insert into TblStudent
values('郑丹丹',0,'北京市海淀区','13888885186',16,'1991-10-10','11009876543215217x',1)

--insert语句必须向表中那些不允许为空的列插入数据。
insert into TblStudent(tsname,tsgender,tsaddress,tsclassid)
values('zpp',0,'北京市''海淀区',2)
--null值就表示是一个空值。


--insert into语句一次只能向表中插入一条记录,如果要通过一条语句向表中插入多条记录,
--则需要使用其他方式的insert语句

select * from TblCalss

--通过一条sql语句向表中插入多条sql语句
insert into TblCalss(tclassName,tclassDesc)
select N'黑马期','第个.net黑马' union
select N'黑马期','第个.net黑马' union
select N'黑马期','第个.net黑马' union
select N'黑马期','第个.net黑马'

create table TblClassBak
(
	ClsId int identity(1,1) primary key,
	ClsName nvarchar(50) not null,
	ClsDesc nvarchar(50) null
)

select * from TblClassBak
--将TblCalss表中的输入都导入到TblClassBak表中
--也是使用insert语句
insert into TblClassBak(ClsName,ClsDesc)
select tclassName,tclassDesc from TblCalss


use Northwind

create table MyInfo
(
	autoId int identity(1,1) primary key,
	UserName nvarchar(50),
	UserAge int
)

select * from MyInfo

insert into MyInfo(UserName,UserAge) values('王杨武',18)

insert into MyInfo(UserName,UserAge) values(N'王杨武',18)


use School;
--insert into 表名(列) values(列的值)

--更新语句
update 表名 set 列名=值,列名=值 where 条件
--在编写更新语句的时候如果没有where条件则表示要将表中的所有数据都更新为指定的数据。
select * from TblCalss

--这么写tclassName='★',表示那这列的值变成了一个'★',而我们要的是在原来列的基础上增加一个'★'
--update TblCalss set tclassName='★' --where ..

update TblCalss set tclassName=tclassName+'★' where tclassId>100 and .... or ....
--&&  ||

update TblCalss set tclassName='xxxx',tclassDesc='yyyy' where tclassId>105
update TblCalss set tclassName='AAAA',tclassDesc='BBBB' where tclassId=105
<>

update TblCalss set tclassName='啊啊啊啊',tclassDesc='棒棒棒棒棒棒' where tclassId<>105
!=


insert into 表(列) values(值)

update 表 set 列=值,列=值 where .....

--删除表中的数据的语句:delete
delete from 表名 where .....

--select * from 表

select * from TblCalss

delete from TblCalss where tclassId%2=0

delete from TblCalss where tclassId=1001

delete from TblCalss --如果delete语句没有where条件,则表示将表中的所有数据都删除了。

create table TT
(
	autoId int identity(1,1),
	uname nvarchar(10)
)

select * from TT

--删除表TT
drop table TT


--删除表中的所有数据两种方法:
--1.delete from 表名
--如果需要可以加where,根据条件来删除。
--通过delete不加where条件的方式来删除表中的所有数据相对于truncate来说速度慢很多。
--通过delete删除表中的数据后,自动编号依然保留当前已经增长到的位置。

--2.truncate table 表名
--truncate table xxx 只能将表中所有数据都清空,不能根据条件来删除。
--truncate table xxx 删除数据时,速度很快,以最小的方式来记录日志。
--使用truncate删除表中的所有数据后,重新添加数据时,自动编号列会恢复到一开始的位置。恢复到种子的位置。<strong>

</strong>
这就是我现在学习了的内容了,希望我一天天可以坚持下来。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值