数据库概论_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 ...
随机推荐
- List集合学习总结
1.List接口是Collection的子接口,用于定义线性表数据结构 ,可以将List理解为存放对象的数组,只不过其元素个数可以动态增加或减少. 2.List接口的两个常见的实现类为ArrayLis ...
- golang项目中使用条件编译
golang项目中使用条件编译 C语言中的条件编译 golang中没有类似C语言中条件编译的写法,比如在C代码中可以使用如下语法做一些条件编译,结合宏定义来使用可以实现诸如按需编译release和de ...
- sql server 高可用故障转移(2)
添加网卡心跳线 目标: 二台sql服务器需要添加网卡心跳线,用于sql server内部数据传输 计算机名 Ip信息 心跳线 Hsr1 192.168.2.50 (ipv4 ip) 255.25 ...
- 解决C语言程序报错:return type defaults to‘int’
下面是通过自定义一个函数printN,之后在main函数中调用printN,使得可以通过输入整数N,将从1到N的全部整数都打印出来的程序. 但是在编译过程中却报错: return type defau ...
- Oauth2.0 用Spring-security-oauth2
客户端通过appId,redirectUrl,在open platform打开的页面上填写正确的用户名和密码后,open platform验证通过后,会跳转到redirectUrl,此时的redire ...
- thinter中button按钮控件(三)
button控件 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry(" ...
- 干货 | Java中获取类名的3种方法!
获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...
- mysql按条件 导出sql
mysqldump还有一个参数,就是--where 指定条件,这样我们就可以对一张表里的某些符合条件的数据,进行备份,导出.sql文件了 mysqldump -u root -p DB_Name -- ...
- indexer_worker.go
package) ) ) ) { request.rankerReturnChannel <- rankerReturnRequest{} con ...
- 【bzoj 1414】对称的正方形 单调队列+manacher
Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵.通过观察,Orez发现这些数据蕴涵了一 ...