数据库-SQL查询语言(一)
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查询语言(一)的更多相关文章
- 数据库先系统与原理第三章笔记:数据库SQL查询语言
		SQL概述 SQL发展 SQL特点 SQL查询基本概念 单表查询 投影查询 1.查询指定列: SELECT 列名1,列名2,列名3,.....FROM Table_Name; #查询全部列:SELEC ... 
- 数据库—SQL语句
		下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DEL ... 
- Oracle 数据库SQL性能查看
		作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看 ... 
- 你用什么方法检查 PHP 脚本的执行效率(通常是脚本执行时间)和数据库 SQL 的效率(通常是数据库 Query 时间), 并定位和分析脚本执行和数据库查询的瓶颈所在?
		php: 一般是在你要检查的代码开头记录一个时间,结尾记录一个时间.取差值, 数据库SQL的效率 sql的explain(mysql),启用slow query log记录慢查询. 通常还要 ... 
- 数据库SQL Server与C#中数据类型的对应关系
		ylbtech- .NET-Basic:数据库SQL Server与C#中数据类型的对应关系 数据库SQL SServer与C#中数据类型的对应关系 1.A,返回顶部 数据库 C#程序 int int ... 
- 我的mysql数据库sql优化原则
		原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ... 
- 学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)
		学生选课数据库SQL语句45道练习题: 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ... 
- 数据库sql优化方案
		声明:这个不是我自己写的,是我们老师给我,我拿出来分享一下! 为什么要优化: 随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能会有一些差异,这时我们 ... 
- 数据库 SQL Server2012安装步骤详解
		这篇文章主要给大家讲解一下数据库SQL Server2012的安装步骤(若有雷同纯属巧合,还望谅解!) 在正式安装之前,我们需要进行两个设置: ① 首先需要关闭Windows防火墙,若不关闭,后续的安 ... 
随机推荐
- class   类组件:
			ES6 中的class 类组件: // class 关键字:确定一个类型student以类的概念存在 class student{ //构造函数 是默认自动执行 // 初始化 name age 属性 ... 
- activiti学习笔记二
			上一篇文章大概讲了下什么是流程引擎,为什么我们要用流程引擎,他的基本原理是啥,以及怎么进行基本的使用,这篇文章我们再讲下其他的一些使用. 删除流程部署 package activiti02; impo ... 
- 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
			在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类. @Data @AllArgsConstructor public class Employee { private Inte ... 
- python在循环中追加字典
			1. 在循环中用append增加key值,最终生成全是key值的list: 2. 在循环中用append增加value值,最终生成全是value值的list: 3. 最后用zip将两个list合并成一 ... 
- 打开指定大小的新窗口和window.open参数
			用法: <SCRIPT LANGUAGE="javascript"> window.open ('要打开的路径', '窗口名称', '参数列表');</SCR ... 
- em(倍)与px的区别
			在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ... 
- Linux虚拟网络:Docker网络知识之基础篇
			我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ... 
- String类、static关键字、Arrays类、 Math类的一些学习心得
			String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例. 类 String 中包括用于检查各 ... 
- [译]高性能缓存库Caffeine介绍及实践
			概览 本文我们将介绍Caffeine-一个Java高性能缓存库.缓存和Map之间的一个根本区别是缓存会将储存的元素逐出.逐出策略决定了在什么时间应该删除哪些对象,逐出策略直接影响缓存的命中率,这是缓存 ... 
- 主流App自动化测试框架对比
			1.主流App自动化测试框架对比 2.Appium自动化测试框架 官方网址:http://appium.io/ 跨架构:支持原生.混合以及web移动应用 跨平台:Android & I ... 
