SQL语句具体使用样例_热腾腾的Java的博客-程序员秘密

技术标签: 工作总结  sql语句简单操作  数据库  

1、建立person表

DROP TABLE IF EXISTS `person`;
CREATE TABLE `person`  (
  `Id` int(10) NOT NULL AUTO_INCREMENT,
  `LastName` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  `FirstName` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  `Address` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  `City` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES (1, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (2, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (3, 'Bush', 'George', '	Fifth Avenue	', '	New York');
INSERT INTO `person` VALUES (4, 'Carter', 'Thomas', '	Changan Street	', '	Beijing');
INSERT INTO `person` VALUES (5, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (6, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (7, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (8, 'Adams', 'John', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (9, 'Adams', 'Thomas', '	Oxford Street', 'London');
INSERT INTO `person` VALUES (10, 'aaa', 'aaa', 'a', 'a');
INSERT INTO `person` VALUES (11, 'b', 'b', 'b', 'b');
INSERT INTO `person` VALUES (12, 'c', 'c', 'c', 'c');
INSERT INTO `person` VALUES (13, 'd', 'd', 'd', 'd');
INSERT INTO `person` VALUES (14, 'e', 'e', 'e', 'e');
INSERT INTO `person` VALUES (15, 'f', 'f', 'f', 'London');
INSERT INTO `person` VALUES (16, 'g', 'g', 'g', 'London');
INSERT INTO `person` VALUES (17, 'h', 'h', 'h', NULL);
INSERT INTO `person` VALUES (18, 'j', NULL, 'j', 'j');

SET FOREIGN_KEY_CHECKS = 1;
USE custom
-- 创建表 
create table person (
    Id INT(10) PRIMARY KEY auto_increment,
    LastName VARCHAR(10),
    FirstName VARCHAR(10),
    Address VARCHAR(10),
    City VARCHAR(10)

);
-- 插入数据
insert into person(Id,LastName,FirstName,Address,City)VALUES(null,"Adams",    "John","    Oxford Street","    London");
insert into person(Id,LastName,FirstName,Address,City)VALUES(null,"Bush    ",    "George    ","    Fifth Avenue    ","    New York");
insert into person(Id,LastName,FirstName,Address,City)VALUES(null,"Carter    ",    "Thomas    ","    Changan Street    ","    Beijing");
insert into person(Id,LastName,FirstName,Address,City)VALUES(null,"Adams",    "John","    Oxford Street","    London");
insert into person(Id,LastName,FirstName,Address,City)VALUES(null,"Adams",    "Thomas","    Oxford Street","    London");
-- 选择语句select
select * from person;
-- 选择去除重复SELECT DISTINCT
SELECT DISTINCT LastName,FirstName from person;
-- 更新表数据
-- top子句,在mysql中使用limit
select * from person LIMIT 3
-- in操作符
SELECT * from person WHERE LastName in ('Adams','Carter    ') ORDER BY LastName;
-- 多个字段使用in操作符的情况
SELECT * from person WHERE (LastName,FirstName) in (('Adams','John'),('Carter','Thomas'));
-- BETWEEN...AND 在他们之间,两边都包含
SELECT * FROM person where LastName BETWEEN 'a' and 'c' ORDER BY LastName ASC
-- not操作符,不在这个之间的值
SELECT * FROM person where LastName  NOT BETWEEN 'a' and 'Carter' ORDER BY LastName ASC
SELECT * FROM person where LastName  NOT BETWEEN 'a' and 'Carter' ORDER BY LastName DESC

-- 更新操作
-- 更新单一字段
update person set LastName = 'aaabbb' where City = 'a';
-- 更新多个字段
update person set LastName = 'aaa',FirstName = 'aaa' where City = 'a';

CREATE TABLE Location
(
Id int PRIMARY KEY auto_increment,
LocationName varchar(255) NOT NULL,
P_id varchar(255)
)

-- unique约束
CREATE TABLE P1
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

-- 为unique约束命名并且为多个列添加该约束
CREATE TABLE P2
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT unique_colum UNIQUE(Id_p,LastName)
)

-- 修改列的约束
alter table p1 add UNIQUE(Id_P)

-- 撤销unique约束
alter table p1 drop index 约束名

-- 外键foreignkey
ALTER TABLE location add FOREIGN Key(P_id) references person(Id)

-- 索引的创建
CREATE INDEX id_index
ON p1 (City)

-- 查看表
DESC p2

-- 为p1的city添加索引
CREATE INDEX city_index on p1(City)


-- 删除p1表中的名字为id_index的索引
ALTER TABLE p1 DROP INDEX id_index

-- 在原来的表中添加列
ALTER TABLE p1 ADD COLUMN Birthday DATE

-- 修改列的类型
ALTER TABLE p1 MODIFY Birthday VARCHAR(255)

-- 修改列名
ALTER TABLE p1 CHANGE birthday Date_birth YEAR;


-- 指定auto_increment的开始起始值,默认从0开始

-- 表重命名
alter table p2 rename to person2

-- 添加列
alter table person2 add column birthday varchar(255);

-- 删除列
alter table person2 drop column FullName;

-- 修改列名
alter table person2 change birthday Date_birth varchar(255);-- 要记得后面一定要加上类型,否则会报错

-- 修改列名的类型
alter table person2 modify City varchar(100);

-- 视图操作
create view cityView AS
select FirstName,LastName,City
from person
where City = 'London';

-- 对上面的视图进行操作
select person.* from person inner join cityView on person.City = cityView.City;

-- 更新视图
create or replace view cityView as
select FirstName,LastName,City
from person
where City = 'London';

-- 删除视图
drop view cityView;

-- 日期函数
-- 当前的日期和时间
select NOW();

-- 当前日期
select curdate();

-- 当前时间
select curtime();

-- 提取日期或日期/时间表达式的日期部分
select date(now())
select date(expr)

-- 返回日期/时间按的单独部分
select extract(year FROM now()) year
-- 给日期添加指定的时间间隔
select date(date_add(now(),interval 2 year))
date_add(date,INTERVAL expr type)
select date_add()    

-- 从日期减去指定的时间间隔
select date_sub();

-- 返回两个日期之间的天数
select datefiff(date(date_add(now(),interval 2 year)),now());
select datefiff(date1,date2);

-- 用不同的格式显示日期/时间
select DATE_FORMAT(now(),'%m-%d-%Y')
select DATE_FORMAT()    

-- 空值null的处理
SELECT LastName,COALESCE(FirstName,'exception')
FROM person;

-- 聚合函数
select avg(OrderPrice) AS op from orders;

-- 统计个数
select count(distinct City) from person

-- 最大值和最小值
select max(City) from person order by City asc; 

-- 统计总和
select sum(OrderPrice) from orders; 

-- group by 分组
select count(*),City from person GROUP BY City;


-- 谁花的钱是最多的
select sum(OrderPrice) money from orders group by Customer;

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

-- 转换大小写
select UCASE(Customer) from orders where OrderPrice=1000;

MID(str,pos,len)

-- ROUND 函数用于把数值字段舍入为指定的小数位数
select ROUND(Price,1) from orders;

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/diaobaaiqiqi/article/details/100158997

智能推荐

程序员能力模型与沟通技巧(一)_软件工程师必备的沟通技巧_爬行的娲牛的博客-程序员秘密

程序员能力模型程序员,大家都是天天埋头敲代码,很少对程序员这个职业的能力模型有个了解,造成能力上出现严重偏颇,通常严重偏技术,不太懂人情世故,不懂如何去沟通,很多时候让客户或者业务部门误解,造成一些不必要的麻烦。其实这样会严重影响自己未来的职业发展的。这样重要的能力模型应该是怎么样的呢?见下图:  首先它是一个等边三角形,技术只是其中一部分。如何来理解了?刚入门的时候技术很重要,你

眼底图像血管增强与分割--(3)基于PCA的增强算法原理及实现_血管增强算法_Naruto_Q的博客-程序员秘密

http://cn.mathworks.com/matlabcentral/fileexchange/50839-a-novel-retinal-blood-vessel-segmentation-algorithm-for-fundus-imageshttps://github.com/ravimalb/suaceMore details about SUACE algori

linux内核vmlinux的编译过程之 --- vmlinux.o详解(八)_BSP-路人甲的博客-程序员秘密

内核构建系统之所以要在链接 vmlinux 之前,去链接出vmlinux.o。其原因并不是要将 vmlinux.o 链接进 vmlinux,而是要在链接 vmlinux.o 的过程中做完两个动作:elf section 是否 mis-match 的检查;生成内核导出符号文件 Module.symvers(Symbol version dump文件);(1)其中第一个动作,由于明白它需要很多elf文件格式的知识,而本文重在解释内核构建系统的原理与实现,所以要在这里详细讲解就显得不妥,等以后有机会了再

利用HttpSessionListener监听器实现用户数据存储_meepoGuan的博客-程序员秘密

需求:web项目中,需要获取访问该网站用户的地区位置数据。所以考虑直接用监听器的方式来实现,即用户第一次访问时,此时服务器会创建session,取得request中的ip信息,去调用封装到service中获取百度定位信息的业务方法,最后将取得的定位信息放置到session中,供session全局使用。实现:1、实现接口HttpSessionListener

随便推点

所谓的前端开发的性能_微笑边缘的金元宝的博客-程序员秘密

什么是前端开发的性能?从用户角度看:页面打开的快,点击按钮反应的快从开发者角度看:js运行时间快,页面渲染时间短其实就是一个意思,就是不同身份,看待的参照物不一样下面我们就讨论一下:让JS的运行时间快,让页面渲染时间快,首要条件需要了解,它们的运行场地,就是浏览器,了解浏览器是怎么解析,执行它们的,从而在编写代码的时候避免这些问题;其次深入了解JS,CSS,HTML等API运行原理,避免使用看似简单的代码,让其内部执行的时候,运行时间增长。当然还有一个简便,速成的方法:.

线程的三个方法:getName,setName,currentThread_setname与getname_rolic_的博客-程序员秘密

/* 三个方法: 1、获取当前线程对象,Thread.currentName(); 2、给线程起名,t.setName(); 3、获取线程的名字,t.getName();*/public class fuck1{ public static void main(String[] args){ //如何获取当前线程对象 Thread t=Thread.currentThread();//t...

DATEPART() 函数_datepart函数_月亮哥的博客-程序员秘密

SQL Server DATEPART() 函数 定义和用法DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。语法DATEPART(datepart,date)date 参数是合法的日期表达式。datepart 参数可以是下列的值: datepart缩写年yy, yyyy季度qq,

Linux的文件系统及常用文件和目录操作命令看这一篇就够啦!超详细!_南北两的博客-程序员秘密

文章目录一、Linux文件系统基础1、Linux文件系统的特点2、Linux文件系统的组成二、Linux文件系统操作1、文件的基本概念2、Linux系统下的通配符和快捷操作3、文件操作命令4、目录操作命令一、Linux文件系统基础1、Linux文件系统的特点Linux文件系统采用树形结构,从根目录root(/)开始。Linux的虚拟文件系统允许众多不同类型的文件系统共存,并支持跨文件系统...

1_VSCode运行Java项目的基础配置_再难也要坚持的博客-程序员秘密

VS Code 提供基本的语言功能,例如代码完成、重构、linting、格式化和代码片段,以及方便的调试和单元测试支持。 VS Code 还集成了工具和框架,例如 Maven、Tomcat、Jetty 和 Spring Boot。 利用 Visual Studio Code 的强大功能,Java 开发人员可以获得一款出色的工具,可用于快速代码编辑以及完整的调试和测试周期。 如果您正在寻找一种工具,它是您的 Java 工作的绝佳选择:快速、轻量级、免费和开源。支持许多其他语言,而不仅仅是 Java。无需

回溯法-01背包问题之中的一个:递归模式_yuxiaoyu.的博客-程序员秘密

一、回溯法回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包括问题的全部解的解空间树中依照深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,总是先推断该节点是否肯定不包括问题的解。假设肯定不包括。则跳过对以该节点为根的子树的系统搜索,逐层向其原先节点回溯。否则,进入该子树,继续...

推荐文章

热门文章

相关标签