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语言_ 数据定义的更多相关文章

  1. SQL语言学习-数据定义语言

    Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...

  2. R语言 我要如何开始R语言_数据分析师

    R语言 我要如何开始R语言_数据分析师 我要如何开始R语言? 很多时候,我们的老板跟我们说,这个东西你用R语言去算吧,Oh,My god!什么是R语言?我要怎么开始呢? 其实回答这个问题很简单,首先, ...

  3. 数据库的存储引擎和SQL语言

    数据库的存储引擎就是管理数据存储的东西,它完成下面的工作: 1)存储机制 2)索引方式 3)锁 4)等等 SQL语言:-----关系型数据库所使用的数据管理语言 1)数据定义语言(DDL):DROP. ...

  4. 【数据库(一)】SQL语言-表定义、查询

    基本模式定义+ SQL支持许多不同的完整性约束. not null, 在该属性上不允许空值 primary key 是否是是主码,主码必须非空且唯一 foreign key check(P),P是谓词 ...

  5. 一、SQL系列之~使用SQL语言导出数据及实现定时导出数据任务

    一般情况下,SQL数据库中带有导入与导出数据的直接按键操作,点击数据表所在的数据库--任务--导出/导入数据,根据导入/导出向导直接将数据导出即可. 但导出的数据格式多为Excel格式,如果需要导出的 ...

  6. (转载)异构数据库之间完全可以用SQL语句导数据

    <来源网址:http://www.delphifans.com/infoview/Article_398.html>异构数据库之间完全可以用SQL语句导数据 告诉你一个最快的方法,用SQL ...

  7. SQL语言 之 数据查询

    在Oracle 数据库中,SELECT 语句的基本语法为: SELECT [ALL|DISTINCT] column_name [,expression...] FROM table1_name [, ...

  8. 异构数据库之间完全可以用SQL语句导数据

    告诉你一个最快的方法,用SQLServer连接DBF 在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ‘Microsoft.Jet.OLEDB ...

  9. R中利用SQL语言读取数据框(sqldf库的使用)

    熟悉MySQL的朋友可以使用sqldf来操作数据框 # 引入sqldf库(sqldf) library(sqldf) # 释放RMySQL库的加载(针对sqldf报错) #detach("p ...

随机推荐

  1. Spring加载xml配置文件的方式 ApplicationContext

    大家都知道Java读普通文件是通过Basic I/O 中的InputStream.OutStream.Reader.Writer 等实现的.在spring 框架中,它是怎样识别xml这个配置文件的呢? ...

  2. spring security oauth2 jwt 认证和资源分离的配置文件(java类配置版)

    最近再学习spring security oauth2.下载了官方的例子sparklr2和tonr2进行学习.但是例子里包含的东西太多,不知道最简单最主要的配置有哪些.所以决定自己尝试搭建简单版本的例 ...

  3. Spring Boot 使用 Log4j2

    Java 中比较常用的日志工具类,有 Log4j.SLF4j.Commons-logging(简称jcl).Logback.Log4j2(Log4j 升级版).Jdk Logging. Spring ...

  4. 关于多条数据转为json格式单次传输的问题 2017.05.27

    数据形式如下: var mycars = [];//定义数组存放多条数据 for(var i=0;i<2;i++){ var jsonData = {};//定义变量存放单条数据 jsonDat ...

  5. 任务调度--spring下的任务调度quartz

    之前写过Timer实现任务调度,这篇文章用来写一下在spring下使用quartz实现任务调度,直接上代码: 定义任务对象: package com; /** * 1. 定义任务对象 * * @aut ...

  6. 关于 行高lineheight的概念及与Vertical-align、内容框、基线等的关系

    1.关于行高 行高:顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离,他也是底线和顶线之间距离   (1)内容区

  7. Java与Kotlin, 哪个是开发安卓应用的首选语言?

    Java是很多开发者创建安卓应用的首选语言.但它在 Android 界的领导地位正受到各种新语言的挑战,Kotlin就是其一.虽然Kotlin最近才开始受到热捧,但有为数不少的人相信 Kotlin 在 ...

  8. 自动化脚本中click()或sendKeys()没有反应

    前提: 排除xpath引用错误或元素的xpath每次都不同的情形. 问题描述 自动化脚本中click()方法和sendKeys()方法报错, 返回异常InvocationTargetException ...

  9. Golang错误和异常处理的正确姿势

    Golang错误和异常处理的正确姿势 错误和异常是两个不同的概念,非常容易混淆.很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误.从 ...

  10. client_v2.go

        }     return false }