SQL数据定义

DDL

sql的DDL不仅能定义一组关系,还能定义每个关系的信息,包括:

  • 每个关系的模式
  • 每个属性的取值类型
  • 完整性约束
  • 每个关系的维护的索引集合
  • 每个关系的安全性和权限信息
  • 每个关系在磁盘上的物理存储结构

基本类型

sql支持的常用类型:

  • char(n): 固定长度的字符串,n为其长度并可被设置,字符串长度不够n时,自动添加空格;
  • varchar(n):可变长度字符串,最长为n;
  • int:整型
  • smallint:小整型
  • numeric(p,d):定点数,该数共p位,有d位在小数点右边。eg, numeric(3,1)可以储存44.5,不可以储存0.32,333.3;
  • real,double,precision:浮点数与双精度浮点数
  • float(n):精度至少为n位的浮点数

基本模式定义

create table定义关系

create table student
(s_id varchar(8),
s_name varchar(20),
dept_ment varchar(20),
class varchar(10),
dormitory varchar(20),
primary key (s_id),
foreign key (dept_name) references department);

定义了student关系,包含学生ID,姓名,院系,班级,寝室。在该关系中,s_id为主键,用 primary key (s_id) 指出;

dept_name是外键,用 foreign ket (dept_name) references department 指出,并且 dept_name 是 department 的主键;

  • primary key (A,B,C,···):A,B,C···是构成关系的主键,主键属性必须非空且唯一通常选用一个属性为主键
  • foreign key (A,B,C··) references other_table:表明关系中A,B,C···属性上的取值必须对应other_table关系某元组在主键上
    •   的取值,不允许出现other_table中未出现的值;
  • not null:表示在该属性上不允许出现空值

insert into插入元组

insert into student
values(20229991,'Wang Yang','CS','CS-01','B4-202');

也可以多行插入

insert into student values(20229992,'Ming Wang','Math','Math-02','P2-301'),
(20229993,'Zhang Shui','CS','CS-02','B4-411'),
(20229993,'Liu Ping','CS','CS-03','B4-518');

在这里说明一下,只有且必须在语句结束时打分号

如果不记得顺序,也可以这样插入

insert into student(s_name,s_id,dept_name,dormitory,class)
values('Li Mei',20229913,'Finance','G2-117','Fi-09');

在查询的基础上插入元组。比如说,让每个高考成绩在700以上的学生成为优异生奖学金获得者,且标注奖学金6000

insert into prise
select s_id,s_name,dept_name,6000
from studnet
where CET_grade=6000;

delete 删除元组

delete from student;

删除关系student中所有元组,但student模式还存在;

drop 删除元组

drop table student;

删除student所有元组,删除student的模式,除非create table 重建student,否则不能向其中插入元组;

条件删除

delete from r where P;

从关系r中删除满足条件P的元组

/*从关系student中删除s_name为Wang gang的元组*/
delete from student
where s_name='Wang gang';
/*从关系student中删除s_id在20229950到20229999中间的学生元组*/
delete from student
where s_id between 20229950 and 20229999; /*从关系student中删除一些学生元组,他们的系在一教办公*/
delete from student
where dept_name in (select dept_name
from department
where building = 'DS1___%'); /*删除高考成绩低于全体学生平均分的学生元组*/
delete from student
where CET_grade < (select arg(CET_grade)
from student);

通常delete可以配合查询语句删除特定元组,比较自由

alter table 为已有关系增加(减少)属性

alter table student add grade D;

向关系student中增加属性grade,其域为D;

alter table student drop grade;

从关系student中去掉属性grade,不过这条命令在很多数据库系统中不被支持;

最新文章

  1. 商品条形码(JBarcode)
  2. 【题解】【矩阵】【回溯】【Leetcode】Rotate Image
  3. bzoj1196
  4. [转]Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
  5. Maple trees(最小覆盖圆)
  6. Python 爬虫-进阶开发之路
  7. [C#.net]获取文本文件的编码,自动区分GB2312和UTF8
  8. C# Parallel并发执行相关问题
  9. sqlserver数据库出现可疑错误修复方法
  10. Makefile内置变量,递归式变量,直接展开式变量,条件赋值,追加赋值
  11. Css样式兼容IE6,IE7,FIREFOX的写法
  12. Ext.js树结构
  13. matplotlib中的legend()—显示图例
  14. VB.NET实现32位、64位远线程运行ASM,注入非托管、托管DLL
  15. 【题解】洛谷P2375 [NOI2014] 动物园(KMP)
  16. python基础代码(猜年龄、从最内层跳出多层循环、简单的购物车程序)
  17. DOM4J操作XML(包括封装和解析)
  18. dp4--codeVs1043 方格取数
  19. 1169 传纸条 2008年NOIP全国联赛提高组 个人博客:attack.cf
  20. 禅道——Linux服务器部署禅道

热门文章

  1. JavaWeb的登陆与注销功能
  2. opencv C++图像读取
  3. 我从LongAdder中窥探到了高并发的秘籍,上面只写了两个字...
  4. Linux远程连接mongodb
  5. vue环境配置脚手架搭建,生命周期,钩子
  6. linux 在指定文件夹下查找指定字符
  7. openstack Rocky 社区版部署1.2 安装ntp service
  8. 宝贝,来,满足你,二哥告诉你学 Java 应该买什么书?
  9. (七) SpringBoot起飞之路-整合SpringSecurity(Mybatis、JDBC、内存)
  10. express高效入门教程(1)