【数据库】SQL语言基础

这篇博客详细介绍了SQL语言的基础,包括基本数据类型(数值型、字符串型、日期时间型、binary image型)、数据定义(创建和修改表结构)以及常用查询操作(基本查询、别名、去重、集合包含、字符串匹配、排序)。此外,还涵盖了数据插入、更新、删除等操作,以及聚合函数的应用,如count、sum、avg、max和min。文章以SQL SERVER为例,深入浅出地讲解了SQL语言的关键概念和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型与数据定义

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已有大量数据,不可能重新建表,现要把”所属专业”改为“从属专业”;

alter table 课程表 add 从属专业 char(20)
update 课程表 set 从属专业=所属专业

alter table 课程表 drop column 所属专业
select * from 课程表

又如:把学生表的生日列修改为“出生日期”列:

alter table 学生表 add 出生日期 smalldatetime
update 学生表 set 出生日期=生日
alter table 学生表 drop column 生日

常用查询操作

SQL查询命令格式:

select exps from table where exps2

基本查询

比如:

select 学号,姓名 from 学生表 where 性别='男'
select * from 学生表 where 性别='男'
select 学号+姓名,YEAR(getdate())-YEAR(出生日期) from
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhugenmi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值