数据库 dml

一. SQL语言

1.DDL 数据库模式定义语言(create
 alter drop __对对象操作)

2.DML 数据操纵语言 (insert
delete update)

3.DCL 数据控制语言
(grant  revoke)

4.流程控制语言(if while)

二.

输出记录前几条
用limit  mysql不支持top

返回天数
datediff(Startdatetime.EndDatetime)

练习题:

CREATE DATABASE
student
USE
student
CREATE TABLE
s(sno CHAR(2) NOT NULL ,
               sname
CHAR(10)  NULL,   
               sex
CHAR(2)  NULL DEFAULT ‘男‘ ,
               birthday
DATETIME  NULL,
               id
CHAR(18) NULL
            );
 CREATE TABLE c (cno CHAR(2) NOT
NULL  ,
                cname
CHAR(10)  NULL, PRIMARY KEY(cno));
 CREATE
TABLE sc(sno CHAR(2)  NOT NULL
,     
                cno
CHAR(2)  NOT NULL ,   
                score
DECIMAL(5,1) NULL , PRIMARY KEY(sno,cno),
FOREIGN
KEY(sno) REFERENCES s(sno) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(cno) REFERENCES
c(cno),
CHECK(score>=0 AND
score<=100)
               );

CREATE TABLE test2(
FNumber  CHAR(3) NOT
NULL,
FAmount  INT
);
INSERT
INTO test2 VALUES(‘Rk1‘,10);
INSERT
INTO test2 VALUES(‘Rk2‘,20);
INSERT
INTO test2 VALUES(‘Rk3‘,-30);
INSERT
INTO test2 VALUES(‘Rk4‘,-10);
  SELECT
FNumber,
(CASE WHEN
FAmount>0 THEN FAmount
ELSE

END) AS
收入,
(CASE WHEN
FAmount<0 THEN ABS(FAmount)
ELSE

END) AS
支出
FROM
test2;            

CREATE TABLE test3
(
 dates   DATE  NOT
NULL,
 sname   VARCHAR(8),
 score   CHAR(2)
)
INSERT
INTO test3 VALUES (‘2008-8-8‘,‘拜仁‘,‘胜‘);
INSERT
INTO test3 VALUES (‘2008-8-9‘,‘奇才‘,‘胜‘);
INSERT
INTO test3 VALUES (‘2008-8-9‘,‘湖人‘,‘胜‘);
INSERT
INTO test3 VALUES (‘2008-8-10‘,‘拜仁‘,‘负‘);
INSERT
INTO test3 VALUES (‘2008-8-10‘,‘拜仁‘,‘负‘);
INSERT
INTO test3 VALUES (‘2008-8-12‘,‘奇才‘,‘胜‘);
SELECT
sname,
SUM(CASE
WHEN
score=‘胜‘ THEN 1
ELSE
0
END) AS 胜
,
SUM(CASE
WHEN
score=‘负‘ THEN 1
ELSE
0
END) AS

FROM
test3
GROUP BY
sname;

CREATE TABLE
CallRecords
(
id
INT AUTO_INCREMENT PRIMARY KEY,
CallNumber
CHAR(3) NOT NULL,
TelNum CHAR(20),
StartDatetime
DATETIME,
EndDatetime
DATETIME
)
INSERT
INTO CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘11111111‘,‘2011-2-3 10:33‘,‘2011-2-3 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘01111111‘,‘2011-2-3 13:33‘,‘2011-2-3 14:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘11111111‘,‘2011-2-3 15:33‘,‘2011-2-3 15:55‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘002‘,‘01111111‘,‘2011-2-4 10:33‘,‘2011-2-4 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘002‘,‘11111111‘,‘2011-2-5 10:33‘,‘2011-2-5 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘003‘,‘11111111‘,‘2011-2-6 10:33‘,‘2011-2-6 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘01111111‘,‘2011-2-7 10:33‘,‘2011-2-7 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘004‘,‘11111111‘,‘2011-2-8 10:33‘,‘2011-2-8 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘002‘,‘01111111‘,‘2011-2-9 10:33‘,‘2011-2-9 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘11111111‘,‘2011-2-10 10:33‘,‘2011-2-10 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘005‘,‘11111111‘,‘2011-2-11 10:33‘,‘2011-2-11 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘005‘,‘01111111‘,‘2011-2-12 10:33‘,‘2011-2-12 10:39‘);
INSERT INTO
CallRecords(CallNumber,TelNum,StartDatetime,EndDatetime)
VALUES(‘001‘,‘11111111‘,‘2011-2-13 10:33‘,‘2011-2-13
10:39‘);

SELECT *
FROM CallRecords
ORDER
BY TIMESTAMPDIFF(SECOND,startdatetime,enddatetime) DESC
LIMIT
5;

SELECT
SUM(TIMESTAMPDIFF (SECOND,startdatetime,enddatetime))
FROM
CallRecords
WHERE
TelNum LIKE ‘0%‘
 
SELECT
CallNumber FROM  CallRecords
WHERE
MONTH(startdatetime)=MONTH (NOW())
ORDER
BY TIMESTAMPDIFF(SECOND,startdatetime,enddatetime) DESC
LIMIT
0,3;

SELECT
CallNumber, COUNT(*) FROM CallRecords
WHERE
MONTH(startdatetime)=MONTH (NOW())
GROUP
BY CallNumber
ORDER
BY  COUNT(*) DESC
LIMIT
3 ;

USE
student
SELECT
CallNumber,TelNum,TIMESTAMPDIFF (SECOND ,StartDatetime,EndDatetime) FROM
CallRecords
UNION
ALL
SELECT
‘汇总‘,
SUM
((
CASE
WHEN
TelNum NOT LIKE ‘0%‘ THEN TIMESTAMPDIFF (SECOND
,StartDatetime,EndDatetime)
ELSE
0
END
)) AS 市内通话,
 SUM
((
CASE
WHEN
TelNum LIKE ‘0%‘ THEN TIMESTAMPDIFF (SECOND
,StartDatetime,EndDatetime)
ELSE
0
END
)) AS 长途通话
FROM
CallRecords

时间: 2024-11-10 04:55:53

数据库 dml的相关文章

php中对MYSQL操作之预处理技术(1)数据库dml操作语句

<?php //预处理技术 //创建一个mysqli对象 $mysqli = new MySQLi("主机名","mysql用户名","密码","数据库名"); //判断是否链接成功 if($mysqli->connect_error){ die($mysqli->connect_error); } //创建预编译对象 $sql = "insert into 表名 (name,qq,age) val

SQL Server 数据库DML触发器 【一】

今天学习SQL Server数据库中DML触发器(DDL触发器以后有时间继续学习). 当删除一条创建有触发器的表中的内容时,触发器执行SQL语句. 1.首相先创建一张表,表名称是 [Test] , 内有三个字段,分别是 [Name], Sex, Place. 1 use inter 2 create table Test 3 ( 4 [Name] varchar(20) not null, 5 Sex varchar(20) not null, 6 Place varchar(20) not n

Java之Mysql数据库DML语句执行

package py.db.com; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import com.mysql.jdbc.PreparedStatement; public class DB_update { public static void main(String[] args) { //TestUp

SQL Server数据库DML操作

补充: 1.删除数据库: 例子:drop database 学生数据库 2.删除表 例子:drop table 学生表 1.在表中增加数据 例子: insert into学生表(学号,姓名,性别,出生日期,政治面貌) values(43,'yyw','男','2000-7-5,'党员''); 2.在表中更改数据 例子 update 学生表 set 姓名='yyh' where 学号=43; 3.在表中删除数据 例子 delete from 学生表 where 学号=43: delete from

MySQL数据库 DML 数据操作语言

insert语句添加数据: insert into 表名 (字段名 1,字段名 2,...)values(值 1,值 2, ...); 为表中所有字段添加数据 insert into 表名 (值 1,值 2,...);    不指定字段名 insert into 表名 (字段名 1,字段名 2,...)values(值 1,值 2, ...); 为表中指定的字段添加数据 insert into 表名 [(字段名 1,字段名 2,...)] values(值 1,值 2,...),(值 1,值 2

关系型数据库之Mysql二进制日志管理(四)

MySQL二进制日志(Binary Log)1.它包含的内容及作用如下:包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)包含关于每个更新数据库(DML)的语句的执行时间信息不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新用于在主复制服务器上记录所有将发送给从服务器的语句启用该选项数据库性能降低1%,但保障数据库完整性,对于重要数据库值得以性能换完整.有些类似

数据库--MyBatis的(insert,update,delete)三种批量操作

转自:http://blog.csdn.net/starywx/article/details/23268465 前段时间由于项目赶期没顾上开发过程中的性能问题,现对部分代码进行优化的过程中发现在数据量大的情况下对数据的操作反应似乎有些慢,就想到对数据库DML操作的时候进行批量操作.说道这里也想到自己在一次面试的时候别问道过批量操作数据的问题. 现对运用说明记录如下: 批量插入insert 方法一: <insert id="insertbatch" parameterType=&

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

MySQL 二进制日志(Binary Log)

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.二进制日志,也叫binary log,是MySQL Server中最为重要的日志之一,本文主要描述二进制日志. 1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志: