数据库概论_3标准化的SQL语言_ 数据定义
Student:
Course:
SC:
1.数据库的定义、删除
1.1数据库的定义(创建)
CREATE DATABASE student;
1.2数据库的删除
DROP DATABASE student;
2.表的定义、修改与删除
2.1表的定义
建表语句:
- CREATE TABLE student(
- Sno VARCHAR(255) PRIMARY KEY,
- Sname VARCHAR(255),
- Ssex CHAR(4),
- Sage SMALLINT,
- Sdept CHAR(4)
- );
create table
添加数据:
- INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707001","张一","男",20,"CS");
- INSERT INTO student VALUES ("20170707002","张二","男",21,"CS");
- INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707003","张三","女",22,"MA");
- INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707004","张四","女",18,"IS");
insert
2.2表的修改
2.2.1向student表中添加“入学时间”列,数据类型为日期型
SQL语句:
- ALTER TABLE student ADD s_entrance DATE;
结果:
2.2.2将年龄的数据类型由字符型改为整型
mysql>>
- ALTER TABLE student MODIFY COLUMN Sage INT;
2.2.3修改表名
- ALTER TABLE studentt RENAME TO course;
2.3表的删除
- DROP TABLE course;
3.数据查询
3.1单表查询
3.1.1查所有
- -- 方式一
- SELECT * from student;
- -- 方式二
- SELECT Sno,Sname,Ssex,Sage,Sdept,S_entrance from student;
3.1.2选择查询表中某些列
- SELECT Sno,Sname,Sdept FROM student;
3.1.3查询经过计算的值并起个别名birthday
- SELECT Sname,2014-Sage as birthday FROM student;
3.1.4 查询所在系(用小写字母表示系名)
- SELECT Sname,LOWER(Sdept) FROM student;
3.1.5去除结果中重复的行
- SELECT DISTINCT s_entrance FROM student;
3.1.6查询满足条件的元组
1)年龄小于25岁的
- SELECT * FROM student WHERE Sage<25;
2)Sno等于20170707001的
- -- Sno值可以加"",也可以不加""
- SELECT * FROM student WHERE Sno="20170707001";
3)年龄在20到30之间的
- SELECT * FROM student WHERE Sage BETWEEN 20 AND 30;
- -- 等价于
- SELECT * FROM student WHERE Sage >= 20 AND Sage <=30;
4)名字中含有“一”的
- SELECT * FROM student WHERE Sname LIKE "_一";
5)名字中不含“一”的
- SELECT * FROM student WHERE Sname NOT LIKE "_一";
6)按学号降序排列
- -- 默认升序(ASC)
- SELECT * FROM student ORDER BY Sno DESC;
7)聚集函数
- -- 统计元组个数
- SELECT COUNT(*) FROM student;
- -- 统计一列中的个数(空值不算)
- SELECT COUNT(DISTINCT s_entrance) FROM student;
- -- 计算一列值的总合(必须为int)
- SELECT SUM(Sage) FROM student;
- -- 计算一列值的平均值
- SELECT AVG(DISTINCT Sage) FROM student;
- -- 找一个值的最大值
- SELECT MAX(Sage) FROM student;
- -- 找一列值的最小值
- SELECT MIN(Sage) FROM student;
8)GROUP BY:分组语句
- SELECT Sname,SUM(Sage) FROM student GROUP BY Sname;
- -- GROUP BY 与WHERE语句不能共用
- SELECT Sname,SUM(Sage) FROM student GROUP BY Sname HAVING SUM(Sage)>=50;
3.2连接查询
3.2.1等值与非等值连接查询
等值连接与非等值连接:当连接运算符为“=”时,称为等值连接。使用其它运算符称为非等值连接。
例:查询每个学生及其选修课程的情况
- SELECT Student.*,SC.*
- FROM Student,SC
- WHERE Student.Sno=SC.Sno;
把目标列中重复的属性列去掉则为自然连接。
3.2.2自身连接
例:查询每一门课的间接先修课
- SELECT f.Cno,s.Cpno
- FROM Course f,Course s
- WHERE f.Cpno=s.Cno;
3.2.3外连接
分为:左外连接,右外连接,内连接
left join,right join,inner join
如:
- SELECT * FROM Course f LEFT JOIN Course s ON f.Cpno=s.Cno;
- SELECT * FROM Course f RIGHT JOIN Course s ON f.Cpno=s.Cno;
- SELECT * FROM Course f INNER JOIN Course s ON f.Cpno=s.Cno;
3.2.4多表连接
两个表以上的操作称为多表连接
例:查询每个学生的学号,姓名,选修的课程名及成绩
- SELECT Student.Sno,Sname,Cname,Grade
- FROM Student,SC,Course
- WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
3.3嵌套查询
3.4集合查询
3.5基于派生表的查询
数据库概论_3标准化的SQL语言_ 数据定义的更多相关文章
- SQL语言学习-数据定义语言
Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...
- R语言 我要如何开始R语言_数据分析师
R语言 我要如何开始R语言_数据分析师 我要如何开始R语言? 很多时候,我们的老板跟我们说,这个东西你用R语言去算吧,Oh,My god!什么是R语言?我要怎么开始呢? 其实回答这个问题很简单,首先, ...
- 数据库的存储引擎和SQL语言
数据库的存储引擎就是管理数据存储的东西,它完成下面的工作: 1)存储机制 2)索引方式 3)锁 4)等等 SQL语言:-----关系型数据库所使用的数据管理语言 1)数据定义语言(DDL):DROP. ...
- 【数据库(一)】SQL语言-表定义、查询
基本模式定义+ SQL支持许多不同的完整性约束. not null, 在该属性上不允许空值 primary key 是否是是主码,主码必须非空且唯一 foreign key check(P),P是谓词 ...
- 一、SQL系列之~使用SQL语言导出数据及实现定时导出数据任务
一般情况下,SQL数据库中带有导入与导出数据的直接按键操作,点击数据表所在的数据库--任务--导出/导入数据,根据导入/导出向导直接将数据导出即可. 但导出的数据格式多为Excel格式,如果需要导出的 ...
- (转载)异构数据库之间完全可以用SQL语句导数据
<来源网址:http://www.delphifans.com/infoview/Article_398.html>异构数据库之间完全可以用SQL语句导数据 告诉你一个最快的方法,用SQL ...
- SQL语言 之 数据查询
在Oracle 数据库中,SELECT 语句的基本语法为: SELECT [ALL|DISTINCT] column_name [,expression...] FROM table1_name [, ...
- 异构数据库之间完全可以用SQL语句导数据
告诉你一个最快的方法,用SQLServer连接DBF 在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ‘Microsoft.Jet.OLEDB ...
- R中利用SQL语言读取数据框(sqldf库的使用)
熟悉MySQL的朋友可以使用sqldf来操作数据框 # 引入sqldf库(sqldf) library(sqldf) # 释放RMySQL库的加载(针对sqldf报错) #detach("p ...
随机推荐
- 你可能不知道的 JavaScript 中数字取整
网上方法很多,标题党一下,勿拍 ^_^!实际开发过程中经常遇到数字取整问题,所以这篇文章收集了一些方法,以备查询. 常用的直接取整方法 直接取整就是舍去小数部分. 1.parseInt() parse ...
- 接口调用(发送http请求)
// 向对应的url地址发送http请求, 并获取响应的json字符串 public String getHttpResponse(String url) { // result用 ...
- 跨域cors方法(jsonp,document.domain,document.name)及iframe性质
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- @EnableTransactionManagement注解理解
@EnableTransactionManagement表示开启事务支持,在springboot项目中一般配置在启动类上,效果等同于xml配置的<tx:annotation-driven /&g ...
- SSM-MyBatis-01:IDEA的安装,永久注册和简单的MyBatis用例
一,IDEA的安装和永久注册 1.安装: 那到安装包,下一步,选路径,上面可以选操作系统64/32位,下面是程序的默认打开方式,可以不必勾选,也可以全选 路径一定不包含中文,重点 2.永久注册: 将此 ...
- 详解Linux文档属性、拥有者、群组、权限、差异
写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人的隐私和工作环境,针对某一个文档(文 ...
- web前端 DOM 详解
先来点概念 文档对象模型(DOM)是一个独立于语言的,使用 XML 和 HTML 文档操作的应用程序接口(API). 在浏览器中,主要与 HTML 文档打交道,在网页应用中检索 XML 文档也很常见. ...
- Java基础之抽象类
/* 1.抽象类的概述: 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的. 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类. 抽象类的特点: A ...
- 玩转web之ligerui(一)---ligerGrid重新指定url
请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 在特定情况下,我们需要重新指定ligerGrid的url来获取不同的数据,在这里我说一下我用的方法: 首先先定义一个全局变量,然后定义liger ...
- 一个简单的例子实现自己的AOP
AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种编程思想. 从OO ...