数据库系统讲人话系列 SQL DDL大法

第一话:标准SQL DDL

SQL 和 MySQL的区别在哪里?

标准SQL是关系数据库的标准,MySQL实际上是根据这个标准所衍生出来的一个产品。所有的关系数据库语言大家共同的标准是标准SQL。

SQL数据库的体系结构:

在这里插入图片描述

在大宏观里面,用户可以对三种对象进行操作:视图,基本表,存储文件。

标准SQL语言包括三类:DDL(数据定义语言),DML(数据操作语言),DCL(数据控制语言)

作为标准,标准SQL语言非常简单,只有下面的操作动词:

SQL标准类别动词
DDLcreate drop alter
DMLselect insert update delete
DCLgrant revoke

1.1 实验环境配置

为了我们学习使用,我们使用SQLite3进行实验,和MySQL,SQLServer语法大同小异,所以无需过于纠结版本。

为什么我们选择SQLite,因为它够小,精巧,无需像MySQL占用我大量的内存和CPU资源。它只有30MB

我们下载SQLiteStudio,带可视化的DBMS工具,里面已经封装好SQLite3了。
你可以选择到 Github 下载对应自己的电脑版本:
https://github.com/pawelsalawa/sqlitestudio/releases

使用很简单,我们可以调用>工具–SQL编辑器,输入代码,执行即可,数据库的视图变化都可以显示在可视化的窗口里面。需要注意的是,数据库文件是作为一个文件出现在文件管理器里面的。

1.2 DDL 数据定义语言

DDL 语言能完成以下任务:

  • 定义表【针对模式】
    – 创建表
    – 删除表
    – 修改表定义

  • 定义索引【针对内模式】
    – 创建索引
    – 删除索引
    – 间接修改索引定义:删除+创建

  • 定义视图【针对外模式】
    – 创建视图
    – 删除视图
    – 间接修改视图的定义:删除+创建

1.2.1 数据类型

整数类型

  • bigint:负64bit-正64bit
  • int:负32bit-正32bit
  • smallint:负16bit-正16bit
  • tinyint:0-255
  • bit:二值

精确数值

  • decimal或者numeric:
    用来储存指定精度的数据,比如decimal(10,4)
    表示整数位10位,小数位4位

浮点数

  • float:最大数位53位的数据
  • real:最大数位24位的数据

字符串数据

  • char:定长数据,这个定长的意思是存储在文件里面是定长的。char(8),定长8个字符
  • varchar:变长数据,这个变长是在文件里面的差异。

日期和时间数据

  • date:date 'yy-mm-dd' 例如:date '2020-04-21'
  • time:time 'hh:mm:ss' 例如:time '19:03:23'
  • datetime:datetime 'yy-mm-dd hh:mm:ss'
1.2.2 定义表 create

定义表的格式语句:

create table <table_name> (<col_name> <data_type> <optical_limit>,...);

例子:

create table Student(
	sid CHAR(8) primary key,
	sname VARCHAR(20) NOT NULL,
	sdept INT,
	sbirth DATE
);

常见的<optical_limit>词:

  • primary key 主键
  • foreign key 外键
  • unique 唯一
  • not null 非空

primary key主键必须是非空而且唯一。
和约束词:unique的区别在于,unique允许值可以是null

组合限制
在一个Table里只允许一个主键,假如说像这样的需求:建立一个学生选课表SC,由学号sno,课程号cno,成绩score组成,其中(Sno,Cno)作为主键。

如果我们对两个col赋予主键的限制就会错误,所以,我们可以把主键作为最后的可选项打包。如下:

create table SC(
	sno CHAR(8),
	cno VARCHAR(20),
	score FLOAT,
	Primary key(sno,cno)
);
1.2.3 修改表 alert

当我们在创建表的时候犯错了,多加或者少加了一个属性,这时候我们就需要对表进行修改。

alter table <table_name> <child_op>

<child_op> 包括以下三种:

add <new_col_name> <data_type> <optical_limit>

drop <col_name> <optical_limit>

modify <col_name> <new_data_type> 

例子:
向学生表增加入学时间列,其数据类型是日期型

alter table Student add ctime data

删除呢?如下:

alter table Student drop ctime

假如我要删除某一列的完整性约束:

alter table Student drop ctime primary key

假如我要增加某一列的完整性约束:

alter table Student add primary key(cno)
1.2.4 删除表

如果要删表,drop table即可:

drop table Student
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值