第四章总结

SQL语言

1.SQL语言的功能

数据定义(DDL) CREATE,DROP,ALTER

数据查询(DQL) SELECT

数据操纵(DML)INSERT,UPDATE(修改),DELETE

数据控制(DCL)GRANT,REVOKE,DENY

2.SQL支持的数据类型

数值型:精确数字 ,近似数字,

日期时间型

字符串型:普通字符编码串,统一字符编码串,二进制串

其他类型

3.数据定义功能

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 ZHANG
   CREATE TABLE T1( 
     C1 INT,
     C2 CHAR(10),
     C3 SMALLDATETIME,
     C4 NUMERIC(4,1)
   )
4.3.4删除架构
DROP SCHEMA <架构名>  
   { <CASCADE> | <RESTRICT> }
1
2
cascade:删除架构的同时将该架构中所有对象一起删除
restrict:若被删除的架构中包含对象,则拒绝删除此架构
注:

不同DBMS的drop schema语句的语法格式和执行略有不同
SQL server的语法语句没有可选项,语法格式:
DROP SCHEMA <架构名>
1
在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
1
主键约束: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
1
示例2:

将Jobs表的Descp列的数据类型改为NCHAR(40)

ALTER TABLE Jobs
ALTER COLUMN Descp NCHAR(40)
示例3:

删除Employees表的Tel列

ALTER TABLE Employees DROP COLUMN Tel
1
示例4:

为Jobs表中MinSalary列添加约束:大于等于1600

ALTER TABLE Jobs ADD CHECK( MinSalary >= 1600 )
1
示例5:

删除Employees表,DROP TABLE <表名> { [, <表名> ] … }

DROP TABLE Employees
————————————————
版权声明:本文为CSDN博主「Хан йенсук」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_54139442/article/details/121155038

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值