SQLServer第二章:数据库简单数据类型以及表的【增删改查】

首先科普一些知识,表的数据类型必须理解。目前我用到的数据类型只要区分这两种:

整数型(整型)【int】,字符串里的:char(n)和varchar(n),nvarchar(n),其他的有个布尔值,多的暂时不学

Char(n):字符串,长度固定,占空间,效率高

如:Char(10):少于10个都占用10

Sss’        ’

ssssss’     ’

ssssssssssss’’

Varchar(n)非Unicode编码可变长度类型(1和8000之间)字节存储,存储的字节数就是他的实际长度,较省空间,缺点比如其他语言汉字一个字=2字节就容易乱码。

Nvarchar(n):Unicode编码可变长度类型(1和4000之间)字符存储,汉字和英语字母,特殊符号都占相同的双字节是Varchar(n)的2倍,双字节存储(不管存什么都是一个字符2字节)在用空间,减少乱码几率。

从空间上来说  varchar,nvarchar要比char占空间少,但char以空间换效率是他的优点,速度快很多。

不确定长度就使用【varchar或nvarcha】可变长度。如果只有英文和符号就用varchar,如果字符串有其他语言如汉字之类的就用nvarchar,现在设备内存已经不受限制,建议使用nvarchar

我的理解:

当字符串是固定长度的时候用char           如:手机号码、身份证号码、性别等等。

当字符串不确定长度的时候用varchar或nvarchar   如:姓名、地址等等。

在Oracle里varchar(n),nvarchar(n)都要写成varchar2(n)nvarchar2(n)才能识别,这是跟SQL server的区别

创建数据库,表的【增删改查】

create database NetBarDB    --创建数据库create database 数据库名
go    --批处理(数据库无法自动运行下一句代码,需要加go来继续代码的运行)
use NetBarDB                --打开数据库
go

if exists(select * from sys.objects where name='PCInfo')
    begin
        drop table PCInfo    --删除表:drop table 表名
    end
--创建表:create table 表名
create table PCInfo              
(
    Id int primary key identity,    --int整数类型; primary key 主键 identity(1,1) 自增不写括号数字默认1,1;意思是1开始后面的每个加1;
    Number varchar(20) unique not null, --约束:unique【唯一的】和主键一样有唯一标识,表示内容不能有重复数据,not null不为空;
    sex char(10) check(sex='' or sex=''),--条件or【或】的意思,
    age int not null default 20 check(age>=18 and age<=25),    --default是默认值年龄20,check约束,条件and【和】的意思,必须在18到25之间
    PCPassword varchar(20) not null check (len(PCPassword)>=6),--check约束【审查】(限制长度必须大于等于6个字符)
    min_salary money not null check(min_salary>=100),--money【钱】可做类型 最低薪资 check约束 不小于100元
    beginTime datetime default getDate(),--datetime数据库的时间类型,default是默认值,getDate获取系统当前时间,如果给时间参数,格式为:2020-2-2 1:00:00
    endTime datetime, --没有默认时间,没有not null这种是可以为空不用传值也不报错,默认not null。如果给时间参数,格式为:2020-2-2 1:00:00
    PCaddress text default '地址不详' not null, --text文本类型,
    Note nvarchar(50) --这里最后一个字段不需要加英文逗号,    
)

--添加
insert into PCInfo values('t-01','',23,'123456',250.02,'2020-2-2 1:00:00',getDate(),default,'')--密码字段可以传空值,''不等于空值,所有在这里不会报错,但是在oracle数据库里:''等同于空值null,会报错
select * from PCInfo 
insert into PCInfo(Number,sex,PCPassword,min_salary) values('t-02','','123456',100),('t-03',null,'123456',100)--多数据添加,字段,不为空not null必须添加,不然报错
select * from PCInfo

--删除
delete from PCInfo where Number='t-02'; --删除Number='t-02'的这条字段。

--修改
update PCInfo set sex='',endTime=getDate() where Id=3 --update修改表,set设置字段值,where条件
--表的查询语句
select * from PCInfo --*号代表所有字段 
select Number as 学号,sex as 性别,age as 年龄 from PCInfo where Id=3 --条件只查询id=3这条字段

 

posted @ 2018-01-08 16:51  Akai_啊凯  阅读(182)  评论(0编辑  收藏  举报