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,不过这条命令在很多数据库系统中不被支持;

数据库-SQL查询语言(一)的更多相关文章

  1. 数据库先系统与原理第三章笔记:数据库SQL查询语言

    SQL概述 SQL发展 SQL特点 SQL查询基本概念 单表查询 投影查询 1.查询指定列: SELECT 列名1,列名2,列名3,.....FROM Table_Name; #查询全部列:SELEC ...

  2. 数据库—SQL语句

    下列语句部分是Mssql语句,不可以在access中使用. SQL分类:   DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)   DML—数据操纵语言(SELECT,DEL ...

  3. Oracle 数据库SQL性能查看

    作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看 ...

  4. 你用什么方法检查 PHP 脚本的执行效率(通常是脚本执行时间)和数据库 SQL 的效率(通常是数据库 Query 时间), 并定位和分析脚本执行和数据库查询的瓶颈所在?

    php: 一般是在你要检查的代码开头记录一个时间,结尾记录一个时间.取差值, 数据库SQL的效率    sql的explain(mysql),启用slow query log记录慢查询.   通常还要 ...

  5. 数据库SQL Server与C#中数据类型的对应关系

    ylbtech- .NET-Basic:数据库SQL Server与C#中数据类型的对应关系 数据库SQL SServer与C#中数据类型的对应关系 1.A,返回顶部 数据库 C#程序 int int ...

  6. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

  7. 学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)

    学生选课数据库SQL语句45道练习题: 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...

  8. 数据库sql优化方案

    声明:这个不是我自己写的,是我们老师给我,我拿出来分享一下! 为什么要优化:     随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能会有一些差异,这时我们    ...

  9. 数据库 SQL Server2012安装步骤详解

    这篇文章主要给大家讲解一下数据库SQL Server2012的安装步骤(若有雷同纯属巧合,还望谅解!) 在正式安装之前,我们需要进行两个设置: ① 首先需要关闭Windows防火墙,若不关闭,后续的安 ...

随机推荐

  1. Linux上TCP的几个内核参数调优

    Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优.光TCP的调优参数就有50多个.在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数.在此分享出来,希望对大家 ...

  2. jquery-form详解

    jQuery-Form 概观 jQuery表单插件允许您轻松而不显眼地升级HTML表单以使用AJAX.主要方法ajaxForm和ajaxSubmit从表单元素收集信息以确定如何管理提交过程.这两种方法 ...

  3. java 虚拟机指令重新排序

    指令重排序是JVM为了优化指令,提高程序运行效率,在不影响单线程程序执行结果的前提下,尽可能地提高并行度.编译器.处理器也遵循这样一个目标.注意是单线程.多线程的情况下指令重排序就会给程序员带来问题. ...

  4. Ubuntu图形界面root登录出现“sorry, that didn't work please try again”

    ssh登录主机执行下vim /etc/pam.d/gdm-autologin 注释行 "auth requied pam_succeed_if.so user != root quiet s ...

  5. 入门大数据---Flume的搭建

    一.下载并解压到指定目录 崇尚授人以渔的思想,我说给大家怎么下载就行了,就不直接放连接了,大家可以直接输入官网地址 http://flume.apache.org ,一般在官网的上方或者左边都会有Do ...

  6. JDK8--06:Stream流

    一.描述 Stream流提供了筛选与切片.映射.排序.匹配与查找.归约.收集等功能 筛选与切片: filter:接收lambda,从流中排除某些元素 limit(n):截断流,使其元素不超过n ski ...

  7. python 类中方法总结 --- 实例方法、类方法、静态方法

    在python的类语法中,可以出现三种方法,具体如下: (1)实例方法 1)第一个参数必须是实例本身,一般使用[self]表示. 2)在实例方法中,可以通过[self]来操作实例属性,[类名]来操作类 ...

  8. Java基础Day07(Map Calender Date 包装类 System类 异常)

    1.Map Map是集合容器,存放的元素有键与值两部分组成,通过键可以找到所对应的值,键和值必须是引用数据类型,键是唯一的,不能重复,没有顺序. HashMap是Map的实现类. Map的添加,删除, ...

  9. dll备份注意事项

    test.dll20161111和test.dll同目录的时候,会报错!因为这样跟test1.dll(只是重名民)的效果是一样的,都会报错的. 同目录的情况下,应该改成test.dll.ddd. 为了 ...

  10. Python数据结构(二)

    array固定类型的数据序列,与list类似,只不过成员必须是相同的基本类型 array.typecodes #包含所有可用类型代码的字符串bBuhHiIlLqQfd 输入代码 C型 Python类型 ...