SQL语言基础及数据定义功能
目录
- 4.1.SQL语言概述
- 4.1.1.SQL语言特点
- 4.1.2.SQL语言功能
- 4.2.SQL支持的数据类型
- 4.2.1.数值型
- 4.2.2.字符串型
- 4.2.3.日期时间类型
- 4.3数据定义功能
- 4.3.1.SQL数据定义功能
- 4.3.2.架构基本概念
- 4.3.3.定义架构
- 4.3.4删除架构
- 4.3.5定义基本表
- 4.3.6约束
- 列级约束
- 表级约束
- 六种约束
- 示例
- 4.3.7修改表结构
- 示例
4.1.SQL语言概述
4.1.1.SQL语言特点
- 一体化
- 高度非过程化
- 简洁
- 使用方式多样
4.1.2.SQL语言功能
SQL功能 | 命令动词 |
---|---|
数据查询 | select |
数据定义 | create、drop、alter |
数据操纵 | insert、update、delete |
数据控制 | grant、revoke、deny |
4.2.SQL支持的数据类型
4.2.1.数值型
①准确型:
整数 | 字节 | 小数 | 字节 |
---|---|---|---|
bigint | 8 | numeric(p,q) | |
int | 4 | decimal(p,q) | |
smallint | 2 | ||
tinyint | 1 | ||
bit | 1位 |
p为数字位长度;q为小数位长度
②近似型:
float | 8字节 |
real | 4字节 |
4.2.2.字符串型
①普通编码字符串类型:
类型 | 含义 | 长度范围 |
---|---|---|
char(n) | 定长存储 | n<=8000 |
varchar(n) | 不定长存储(按实际长度存储) | n<=8000 |
varchar(max) | 存储大于8000字节的文本 | |
text | 存储大于8000字节的文本(将被弃用) |
②统一字符编码字符串类型:
类型 | 含义 | 长度范围 |
---|---|---|
nchar(n) | 定长存储 | n<=4000 |
nvarchar(n) | 不定长存储 | n<=4000 |
nvarchar(max) | 存储大于8000字节的文本 | |
ntext | 存储大于8000字节的文本(将被弃用) |
注:n为字符个数,每个字符占两个字节
③二进制字符串类型:
类型 | 含义 | 长度范围 |
---|---|---|
binary(n) | 固定长度 | n<=8000 |
varbinary(n) | 可变长度 | n<=8000 |
varninary(max) | 用于存储超过8000字节的二进制数据 | |
image | 用于存储超过8000字节的二进制数据(将被弃用) |
4.2.3.日期时间类型
类型 | 定义范围 | 长度范围 |
---|---|---|
data | 定义范围为0000-1-1到9999-12-31的日期。默认格式为:YYYY-MM-DD | 3字节 |
time(n) | 定义一天中的某个时间,该时间基于24小时制。默认格式为:hh:mm:ss[.nnnnnnn], n为秒的小数位数,取值范围是0到7的整数。 | 3-5字节 |
datetime | 年月日时分秒毫秒(例:‘2001/08/03 10:30:00.000’ )。存储从1753年1月1日到9999年12月31日的日期和时间数据 | 8字节 |
smalldatetime | 年月日时分(例:‘2001/08/03 10:30:00’ )。存储从1900年1月1日到2079年6月6日的日期和时间数据 | 4字节 |
datetime2 | 定义一个结合了24小时制时间的日期。默认格式:YYYY-MM-DD hh:mm:ss[.nnnnnnn],n表示秒的小数位数,默认精度是7位小数 | 6-8字节 |
datetimeoffset | 定义一个与采用 24 小时制并和可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24小时制)是时区一致的。语法格式为:datetimeoffset [(n)],n为秒的精度,最大为7。默认格式为:YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{±}hh1:mm1] | 8-10字节 |
4.3数据定义功能
4.3.1.SQL数据定义功能
对象 | 创建 | 修改 | 删除 |
---|---|---|---|
架构 | create schema | drop schema | |
表 | create table | alter table | drop table |
视图 | create view | alter view | drop view |
索引 | create index | alter index | drop index |
4.3.2.架构基本概念
- 架构/模式:数据库下的一个逻辑命名空间
- 可以存放表、视图等数据库对象
- 是一个数据库对象的容器
- 将数据库比喻为操作系统,架构就相当于操作系统中的目录,架构中的对象就相当于目录下的文件
- 一个数据库可以包含一个或多个架构
- 同一个数据库中,架构的名字必须是唯一的
- 属于一个架构的对象称为架构对象。架构对象可以是:基本表、视图、触发器等
4.3.3.定义架构
注:
- 如果没有指定<架构名>,则<架构名>隐含为<用户名>
- 一个<用户名>可以拥有多个架构
- 执行创建架构语句的用户必须具有管理员权限,或CREATE SCHEMA权限
在定义架构同时定义表:
CREATE SCHEMA TEST AUTHORIZATION ZHANGCREATE TABLE T1( C1 INT,C2 CHAR(10),C3 SMALLDATETIME,C4 NUMERIC(4,1))
4.3.4删除架构
DROP SCHEMA <架构名> { <CASCADE> | <RESTRICT> }
- cascade:删除架构的同时将该架构中所有对象一起删除
- restrict:若被删除的架构中包含对象,则拒绝删除此架构
注:
- 不同DBMS的drop schema语句的语法格式和执行略有不同
- SQL server的语法语句没有可选项,语法格式:
DROP SCHEMA <架构名>
- 在SQL server2008中只能删除不包含任何对象的架构
4.3.5定义基本表
CREATE TABLE <表名>(<列名> <数据类型> [列级完整性约束定义]
{, <列名> <数据类型> [列级完整性约束定义] … }[,表级完整性约束定义 ] )
在列级完整性约束定义处可定义的约束:
- not null:限制列取值非空
- default:给定列的默认值
- unique:限制列取值不重
- check:限制列的取值范围
- primary key:指定本列为主键,用于保证该字段具有唯一性并且非空,如:学号、员工编号
- foreign key:定义本列为引用其他表的外键,用来限制两个表的关系,保证该字段的值必须来自于主表,主表关联列即从表添加外键约束,用于引用主表中某列的值,如:学生表专业编号、员工表的部门编号
4.3.6约束
约束是用来规范表中结构的,是一种限制,为了保证数据的可靠性和稳定性
列级约束
- 对某一特定列的约束,只能应用于一列上
- 位置:包含在列定义之中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名
- 六种:主键、外键、唯一、检查、默认、非空
表级约束
- 对多个列一起进行约束,可用于一列、也可用于一个表中的多个列中
- 位置:与列定义相互独立,不包含在列定义之中,通常用于对多个列一起进行约束,于定义用’,'分隔,必须指出要约束的列名称
- 四种:主键、外键、唯一、检查
如果创建的约束涉及到该表的多个属性列,则必须创建的是表级约束(必须定义在表级上);否则既可以定义在列级上也可以定义在表级上,此时只是SQL语句格式不同而已
六种约束
- 非空约束:<列名> <类型> NOT NULL
sname char(10) NOT NULL
- 主键约束:PRIMARY KEY [( <列名> [, … n] )]
SNO char(7) PRIMARY KEY
PRIMARY KEY(SNO)
PRIMARY KEY(SNO,CNO)
外键约束:[ FOREIGN KEY ( <外键列名> )]
REFERENCES <表名> (<主键列名>)如果是在列级完整性约束处,则可省略“FOREIGN KEY (<列名>)”部分
FOREIGN KEY(Sno)
REFERENCES Student(Sno)
唯一值约束:UNIQUE [(<列名> [, … n] )]
有UNIQUE约束的列允许有一个空值;
在一个表中可以定义多个UNIQUE约束;
可以在一个列或多个列上定义UNIQUE约束默认值约束:
在创建表时定义:DEFAULT 常量表达式
为已创建好的表添加约束:DEFAULT 常量表达式 FOR 列名
取值范围约束:CHECK(逻辑表达式)
示例
示例-jobs表:
列名 | 含义 | 数据类型 | 约束 |
---|---|---|---|
jid | 工作编号 | char(6) | 主键 |
descp | 工作描述 | nvarchar(20) | 非空 |
edureq | 学历要求 | nchar(6) | 默认值:本科 |
minsalary | 最低工资 | int | |
maxsalary | 最高工作 | int | >=最低工资 |
jobs表定义语句:
CREATE TABLE Jobs (Jid char(6) PRIMARY KEY, Descp nchar(20) NOT NULL ,EduReq nchar(6) DEFAULT '本科', MinSalary int ,MaxSalary int ,CHECK( MaxSalary >= MinSalary )
)
示例-employees表:
列名 | 含义 | 数据类型 | 约束 |
---|---|---|---|
eid | 职工号 | char(10) | 主键 |
ename | 姓名 | nchar(6) | 非空 |
sex | 性别 | nchar(1) | 取值范围:男或女 |
brithdate | 出生日期 | date | |
jobdate | 参加工作日期 | datetime | 默认为系统当前日期时间 |
sid | 身份证号 | char(18) | 取值不重 |
jid | 工作编号 | char(6) | 外键,引用工作表的工作编号 |
tel | 联系电话 | char(11) |
employees表定义语句:
CREATE TABLE Employees (Eid char(10) ,Ename nvarchar(20) NOT NULL,Sex nchar(1) CHECK( Sex = '男' OR Sex = '女'),BirthDate date ,JobDate datetime DEFAULT GetDate(),Sid char(18) UNIQUE,Jid char(6) ,Tel char(11) ,PRIMARY KEY(Eid) , FOREIGN KEY(Jid) REFERENCES Jobs(Jid)
)
4.3.7修改表结构
- 使用ALTER TABLE语句
- 对表添加列、删除列、修改列的定义、定义主键、外键,也可以添加和删除约束。
ALTER TABLE <表名>
[ ALTER COLUMN <列名> <新数据类型>]
| [ ADD <列名> <数据类型> [约束]]
| [ DROP COLUMN <列名> ]
| [ ADD [constraint <约束名>] 约束定义]
| [ DROP [constraint] <约束名>]
示例
示例1:
为Employees表添加工资列,此列的列名为Salary,数据类型为int,允许空
ALTER TABLE Employees ADD Salary INT
示例2:
将Jobs表的Descp列的数据类型改为NCHAR(40)
ALTER TABLE Jobs
ALTER COLUMN Descp NCHAR(40)
示例3:
删除Employees表的Tel列
ALTER TABLE Employees DROP COLUMN Tel
示例4:
为Jobs表中MinSalary列添加约束:大于等于1600
ALTER TABLE Jobs ADD CHECK( MinSalary >= 1600 )
示例5:
删除Employees表,DROP TABLE <表名> { [, <表名> ] … }
DROP TABLE Employees
SQL语言基础及数据定义功能相关推荐
- 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能
[数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...
- 最全MySQL8.0实战教程 2 SQL语言基础
最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 2 SQL语言基础 2.1 SQL的概述 2.2 SQL的特点 2.3 SQL语言的组成 2.4 语法特点 [黑马程序员MySQL ...
- 数据库原理—SQL数据定义功能(九)
数据库原理-SQL数据定义功能(九)
- SQL中数据操作语言 (DML) 和数据定义语言 (DDL)
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插入和删除记录的语法. ...
- SQL语言基础:SQL语言概念知识笔记
1.SQL标准 ANSI(美国国家标准机构)SQL 对ANSI SQL进行修改后在1992年采用的标准SQL-92或SQL2 SQL-99或SQL3标准从SQL2扩充而来,增加了对象关系特征和许多其他 ...
- Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
- 我的全栈之路-C语言基础之数据存储
我的全栈之路-C语言基础之数据存储 我的全栈之路 2.1 计算机的计算单位 2.1.1 容量单位 2.1.2 速度单位 2.2 计算机底层为什么只能识别二进制 2.3 进制 2.3.1 进制概述 2. ...
- SQL语言基础教学 | Mysql 入门教学
SQL语言基础教学 SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言.本文将介绍SQL语言基础,包括SQL语言的基本语法.数据类型.数据查询.数据更新等 ...
- KingbaseES PL/SQL 过程语言参考手册(3. PL/SQL语言基础)
3. PL/SQL语言基础¶ 本章节阐述PL/SQL语言的基本组成. 字符集 词法单元 声明 对标识符的引用 标识符的作用域和可见性 为变量赋值 表达式 错误报告函数 3.1. 字符集 任何要由PL/ ...
最新文章
- java spring 配置文件_[Java教程]Spring配置文件
- ABP中的Filter(下)
- java gson 工具类_gson工具类将Java类转换为json的使用
- 易语言写c盘配置文件,易语言写配置文件的方法
- github/gitlab同时管理多个ssh key
- 洛谷 - P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并(树上差分+线段树合并)
- linux prc 时区,授时时区问题解决
- 为什么Java不允许super.super.method();
- 多多进宝推广团队_多多进宝推广形式及推手寻找、佣金结算方式是怎样的?
- lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...
- 【JAVA 第三章 流程控制语句】课后习题 找零钱
- java 合并csv_用java将三个csv表格文件,整合数据组合成一个文件。
- python在自动化中的应用_python中在自动化运维的应用
- 钩子教程 - 原理(二十五) : 消息 -- WM_CANCELJOURNAL
- Maven里头的pom.xml配置详解
- 2、51单片机——I2C 总线
- Cisco路由器之IPSec 虚拟专用网(内附配置案例)
- OAS、Swagger和Springfox
- 中国科学院计算机研究所上级单位,陈援非(中国科学院计算技术研究所高工)_百度百科...
- 妙啊!巧用 SSH 突破限制穿透内网
热门文章
- android ui 切图工具,APP切图标注教程:UI设计切图标注的小工具实用技巧
- 乘云创数,华为云企业快成长大数据技术创新论坛(深圳站)圆满落幕!
- golang 原生支持 apple m1 cpu
- Hadoop-3.3.0安装 Centos 8.2安装Hadoop-3.3.0 Hadoop-3.3.0安装指南
- Android 读取Txt文件内容
- 思科ccie和华为hcie中交换机环路的产生原因和解决方法
- 微信支付V3-下载交易账单
- 机器人莫麟_国内机器人/机甲动画汇总——2013年
- 解决Win10插入耳机没声音
- Java程序员的重启人生-1.初到异世界