Net学习日记_SQL_2
数据库文件:分数据文件(MDF)和日志文件(log)
nvarchar 中文---n,可变长度---var,字符---char
性别:如果考虑“男,女”,那么就用bit类型;之外的用smallin类型
分离数据库:将当前数据库文件和数据库引擎的关系断开,没有任何关系了,这样我就可以随意的拷贝,剪切
在数据库文件上右键-任务-分离,-勾选“删除连接”,-确定
脱机:告诉数据库引擎,暂停操作当前数据库,知道你重新“联机”, 也可以随意拷贝,剪切
附加:把已经分离的数据库文件,重新让数据库引擎管理,重新把管理关系建立上
主外键:
作用:就是减少重复数据
如何手动设定主外键?
在数据库里面,在外键上点击右键,可以添加主外键约束。
创建数据库
create database MySchool on ( --括号一定是圆括号 name='MySchool_data',--数据库名称 filename='d:\MySchool_data.mdf',--物理文件名 size=5mb,--初始大小, maxsize=10mb,--最大大小 filegrowth=15% --主文件增长率 ) log on ( name='MySchool_log',--日志文件名 filename='d:\MySchool_log.ldf',--日志物理文件名 maxsize=4mb,--最大大小 size=2mb, filegrowth=1mb ) go
创建数据表
CREATE TABLE Student ( id int identity(1,1) primary key, NAME NVARCHAR(16) NOT NULL, age INT NOT NULL )
删除数据
DELETE FROM Student 删除所有数据 TRUNCATE TABLE Student 清空表,重置表(把表重置会刚刚创建时候的状态,自增列,重新从1开始了) 以上两者效率有很大差别,如果用delete会产生很多的日志,truncate 就只会产生一行日志 DROP TABLE Student 直接删除表,不仅仅是数据,连表都不见了
增删改查
1.增加语句
INSERT INTO dbo.Student (name,gender,Address,Phone,Age,Birthday,CardId,CId) VALUES ('王五',1,'北京海淀,中关村','13888888888',20,'2012/01/01','111111',2)
- 增加的时候。Bit字段要用 “0,1”表示true和false
- 时间字段用单引号包括,但是里面还是要遵循基本的时间格式'2012-01-01'
- INSERT 语句中列的数目要和 VALUES 后面的值的数目一样
- 不能为标识列插入数据(特殊情况下可以,SET IDENTITY_INSERT)
5.直接拖拽“列”就可以快速的插入列名
INSERT INTO dbo.Student (Name,Gender,Phone) VALUES (N'钱七①②βδΟουÇÄãÏíスヌフ叁叁',0,10000)
在插入特殊字符的时候,字符串前面需要加上大写的N
INSERT INTO dbo.Student VALUES ('小明',default,N'地址',default,20,'2010-10-10','100000',2)
在插入数据的时候,可以显示的告诉数据库使用该字段的默认值
INSERT INTO dbo.Student VALUES ('张''四',DEFAULT,N'地址',default,20,'2010-10-10','100000',2)
插入的数据中有单引号的时候,需要输入两个单引号 “''”
修改语句
UPDATE dbo.Student SET Age=25 修改了student表中所有行的age值 UPDATE dbo.Student SET Age=18 WHERE Name='陈珊' 修改了student表中name是陈珊的age值 UPDATE dbo.Student SET Age=19,gender=0 WHERE id=1 修改了student表中name是陈珊的age值和gender值
UPDATE dbo.Student SET Phone='10010' WHERE Name='钱七' AND Gender=0 Where后面可以有多个条件判断,多个条件中间用“空格and空格”隔开
UPDATE dbo.Student SET Address='a' WHERE Name='王五' AND Gender=1 OR Name='王五6' --3 UPDATE dbo.Student SET Address='c' WHERE Name='王五' OR Gender=1 AND Name='王五6' --4 在数据库执行的时候,and条件是优先于or条件执行的
UPDATE dbo.Student SET age=age+1 UPDATE dbo.Student SET age+=1 --2005 不支持
Set值的时候,可以取出原来的值
UPDATE dbo.Student SET Address = '未知' WHERE Address = NULL--这个是不行滴 UPDATE dbo.Student SET Address = '未知' WHERE Address IS NULL UPDATE dbo.Student SET Address='北京' WHERE Address IS NOT NULL NULL 值的特殊判断 UPDATE dbo.Student SET address = '男儿国' WHERE Gender!=0 不等于“!=”
写法:update 表名 set 列名=值 , 列名=值 where 条件 条件中间用and和or连接 and优先于or执行