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这条字段