基本数据类型与数据定义
SQL:结构化查询语言。使用SQL命令,给出几个用户参数,系统根据这些参数从底层数据库提取结果。这个过程是封装了的,结构化的。其主要功能概括为:
-
数据定义功能:create , drop, alter 对表头结构的建,删,改
-
数据查询:select 最主要应用的,最复杂部分
-
数据操纵:insert , update ,delete 数据内容增,改,删
-
数据控制: grant,revoke,deny 授权用户权限控制
SQL SERVER 中基本数据类型
数值型
1.准确型:能精确存储数据,如整数,定点小数
-
int 4字节,表示范围: -2^31~ 2^31-1
-
bigint 8字节
-
smallint 2字节
-
tinyint : 1字节,且是无符号数,表示0-255
-
numeric(p,q) 小数,指定最多为p位,其中有q位小数,如表示0-100.0之间的数学成绩,有一位小数
注意:尽量避免定义float ,为避免精度丢失问题,应该使用 :数学 numeric(4,1)
如定义身高以米为单位,两位小数: 身高 numeric(3,2)
2.近似型:
-
float 8字节 —类似C中的double
-
real 型, 4字节 —类似C中的float
数据库中少用近似型,多用准确型
字符串型 string
一个字符包括英文,其它非英文如中文汉字。早期一个英文字符占1B,一个汉字占2B,在计算串长时易错。后来全世界的字符统一编码,不管是什么字符都统一为2B内码。任何变量要定义,如早期char[20] 是定长串,是否用完都是占20个字节,存在浪费,好处是数据定长,便于随机查找。如个人信息的备注内容,长度差别巨大,一般使用变长串,用多少字节占多少空间,如早期串指针。
常用的数据库中字符串类型:
-
Char(n) n取值 1-8000 普通编码, 定长
-
Nchar(n) 统一字符编码,n取值1-4000 定长
-
Varchar(n ) n取值1-8000,变长串
-
Nvarchar(n) n取值1-4000, 统一字符编码的变长串
如:定义一个姓名列,性别列,个人说明列
姓名: char(6), nchar(6)
性别:char(1), nchar(1) f /m , 1/0, 男/女
个人说明: varchar(100), nvarchar(100) /*每个人说明情况内容长度差别大,故使用变长串,反而节约空间.*/
Text , Ntext /*可存储海量字符,如小说的内容,最多20亿个字符(10亿个汉字)*/
总结:变长串nchar( ) , 变长串nvarchar( ),
长篇内容使用Ntext,如果列是数字或英文字母char( )
日期时间型
-
Datetime : 占8字节空间来存放一个标准的日期时间,早支持1753年:如:1999-12-1 12:33:55 12.332
-
Smalldatetime 占四字节,只支持 1900-1-1 -2079年
前者支持到毫秒,后者支持到分钟
说明:一个日期是相对于1900-1-1的间隔天数,一个日期对应的是一个整数。所以日期其实是一个整数,使用公式显现成一个日期格式.
今天的78天后是哪一天?
select GETDATE()+78
时间是一个相对于当天从00:00:00开始的秒数.
特别注意: 字符串常量,日期时间常量在sqlserver用单引号
时间间隔计算:t2-t1得间隔秒数
binary image型
常用于存放二进制的文件内容,如一个WORD文件,一张照片
数据定义
建立数据库建立表,修改表的结构(不涉及到表的内容操作)
建立基本表
Create table 表名(列名及参数和约束 )
例:建立一个课程表
create table 课程表(
课程号 char(3),课程名 nchar(12),学分 tinyint ,
开课学期 tinyint,课程说明 nvarchar(200)
)
修改表结构 modify structure
对表名进行变更,弄不好有可能造成大量旧数据内容丢失。
主句: alter table 表名 修改子句
(1)向已有表增加新列
Alter table 表名 add 字段名及参数
例:向上面的课程表增加一列 所属专业编号
alter table 课程表 add 所属专业 nchar(5)
例:一次性同时增加多列,如向课程表增加开课学院,任课老师
alter table 课程表 add 开课学院 nchar(10),任课教师 nchar(6)
(2)删除表中的原有列
Alter table 表名 drop column 列名
alter table 课程表 drop column 开课学院,任课教师
(3)修改已有列的字段列参数(不能改列名,只能修改类型,宽度,约束)
Alter table 表名 alter column 列名(参数)
例:把所属专业列的nchar(5)改为char(20)
alter table 课程表 alter column 所属专业 char(20)
(4)更名基本表:
例: 把原2表全部表头和内容复制3表,再把2表删除掉
Select * into 课程表3 from 课程表2
Drop table 课程表2
(5)对已有列更名
例:假设原表课程表2已有大量数据,不可能重新建表,现要把”所属专业”改为“从属专业”;文章来源:https://www.toymoban.com/news/detail-443985.html
alter table 课程表 add 从属专业 char(20)
update 课程表 set 从属专业=所属专业
alter table 课程表 drop column 所属专业
select * from 课程表
又如:把学生表的生日列修改为“出生日期”列:文章来源地址https://www.toymoban.com/news/detail-443985.html
alter table 学生表 add 出生日期 sm
到了这里,关于【数据库】SQL语言基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!