目录

  • 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约束

约束是用来规范表中结构的,是一种限制,为了保证数据的可靠性和稳定性

列级约束

  1. 对某一特定列的约束,只能应用于一列上
  2. 位置:包含在列定义之中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名
  3. 六种:主键、外键、唯一、检查、默认、非空

表级约束

  1. 对多个列一起进行约束,可用于一列、也可用于一个表中的多个列中
  2. 位置:与列定义相互独立,不包含在列定义之中,通常用于对多个列一起进行约束,于定义用’,'分隔,必须指出要约束的列名称
  3. 四种:主键、外键、唯一、检查

如果创建的约束涉及到该表的多个属性列,则必须创建的是表级约束(必须定义在表级上);否则既可以定义在列级上也可以定义在表级上,此时只是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语言基础及数据定义功能相关推荐

  1. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

  2. 最全MySQL8.0实战教程 2 SQL语言基础

    最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 2 SQL语言基础 2.1 SQL的概述 2.2 SQL的特点 2.3 SQL语言的组成 2.4 语法特点 [黑马程序员MySQL ...

  3. 数据库原理—SQL数据定义功能(九)

    数据库原理-SQL数据定义功能(九)

  4. SQL中数据操作语言 (DML) 和数据定义语言 (DDL)

     可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插入和删除记录的语法. ...

  5. SQL语言基础:SQL语言概念知识笔记

    1.SQL标准 ANSI(美国国家标准机构)SQL 对ANSI SQL进行修改后在1992年采用的标准SQL-92或SQL2 SQL-99或SQL3标准从SQL2扩充而来,增加了对象关系特征和许多其他 ...

  6. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作

    Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  7. 我的全栈之路-C语言基础之数据存储

    我的全栈之路-C语言基础之数据存储 我的全栈之路 2.1 计算机的计算单位 2.1.1 容量单位 2.1.2 速度单位 2.2 计算机底层为什么只能识别二进制 2.3 进制 2.3.1 进制概述 2. ...

  8. SQL语言基础教学 | Mysql 入门教学

    SQL语言基础教学 SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言.本文将介绍SQL语言基础,包括SQL语言的基本语法.数据类型.数据查询.数据更新等 ...

  9. KingbaseES PL/SQL 过程语言参考手册(3. PL/SQL语言基础)

    3. PL/SQL语言基础¶ 本章节阐述PL/SQL语言的基本组成. 字符集 词法单元 声明 对标识符的引用 标识符的作用域和可见性 为变量赋值 表达式 错误报告函数 3.1. 字符集 任何要由PL/ ...

最新文章

  1. java spring 配置文件_[Java教程]Spring配置文件
  2. ABP中的Filter(下)
  3. java gson 工具类_gson工具类将Java类转换为json的使用
  4. 易语言写c盘配置文件,易语言写配置文件的方法
  5. github/gitlab同时管理多个ssh key
  6. 洛谷 - P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并(树上差分+线段树合并)
  7. linux prc 时区,授时时区问题解决
  8. 为什么Java不允许super.super.method();
  9. 多多进宝推广团队_多多进宝推广形式及推手寻找、佣金结算方式是怎样的?
  10. lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...
  11. 【JAVA 第三章 流程控制语句】课后习题 找零钱
  12. java 合并csv_用java将三个csv表格文件,整合数据组合成一个文件。
  13. python在自动化中的应用_python中在自动化运维的应用
  14. 钩子教程 - 原理(二十五) : 消息 -- WM_CANCELJOURNAL
  15. Maven里头的pom.xml配置详解
  16. 2、51单片机——I2C 总线
  17. Cisco路由器之IPSec 虚拟专用网(内附配置案例)
  18. OAS、Swagger和Springfox
  19. 中国科学院计算机研究所上级单位,陈援非(中国科学院计算技术研究所高工)_百度百科...
  20. 妙啊!巧用 SSH 突破限制穿透内网

热门文章

  1. android ui 切图工具,APP切图标注教程:UI设计切图标注的小工具实用技巧
  2. 乘云创数,华为云企业快成长大数据技术创新论坛(深圳站)圆满落幕!
  3. golang 原生支持 apple m1 cpu
  4. Hadoop-3.3.0安装 Centos 8.2安装Hadoop-3.3.0 Hadoop-3.3.0安装指南
  5. Android 读取Txt文件内容
  6. 思科ccie和华为hcie中交换机环路的产生原因和解决方法
  7. 微信支付V3-下载交易账单
  8. 机器人莫麟_国内机器人/机甲动画汇总——2013年
  9. 解决Win10插入耳机没声音
  10. Java程序员的重启人生-1.初到异世界