当前位置: 首页 > 编程日记 > 正文

MySQL的基础

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

数据库和SQL

什么数据库

数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务。

什么是SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

什么是mysql

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

关系数据库管理系统(Relational Database Management System:RDBMS):

指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。

mysql中的数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 字节(-128,127)(0,255)小整数值
SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度浮点数值
DOUBLE8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

时间/日期类型

类型大小(字节)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

字符串类型

类型大小用途
CHAR0-255字节定长字符串
VARCHAR0-65535 字节变长字符串
TINYBLOB0-255字节不超过 255 个字符的二进制字符串
TINYTEXT0-255字节短文本字符串
BLOB0-65 535字节二进制形式的长文本数据
TEXT0-65 535字节长文本数据
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据
LONGTEXT0-4 294 967 295字节极大文本数据

mysql的数据库操作

数据库的新增

登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

CREATE DATABASE 数据库名;
DROP DATABASE if exists 数据库名;
create database 数据库名;

实例:

CREATE DATABASE test_db;

数据库的查询

获取所有表名:

USE information_schema;
SELECT table_name FROM TABLES WHERE TABLE_SCHEMA=’数据库名’;

数据库的删除

使用 drop 命令删除数据库,语法如下:

DROP DATABASE 数据库名;

mysql的数据表操作

数据表的新建

实例:

USE test_db;
CREATE TABLE IF NOT EXISTS `student`(`stu_id` INT UNSIGNED AUTO_INCREMENT,`stu_age` INT NOT NULL COMMENT '学生的年龄',`stu_name` VARCHAR(20) NOT NULL COMMENT '学生的姓名',`stu_number` VARCHAR(30) NOT NULL UNIQUE COMMENT '学号',`stu_address` VARCHAR(30) NOT NULL COMMENT '学生的地址',PRIMARY KEY ( `stu_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

图解

总结:

CREATE TABLE table_name (column_name1 data_type constraint[...],column_name2 data_type constraint[...],column_name3 data_type constraint[...],...PRIMARY KEY ( `column_name` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据的增添

实例:

INSERT INTO `student`
(`stu_age`, `stu_name`, `stu_number`, `stu_address`)
VALUES
(22, '刘太刚', '1234', '贵州'),
(15, '徐维松', '2345', '四川'),
(19, '徐任达', '3456', '贵州'),
(18, '彭克喜', '4567', '贵州'),
(20, '潘姚瑶', '5678', '新疆');

总结:

INSERT INTO table_name
(column_name1, column_name2, column_name3, ...)
VALUES
(value1, value2, value3, ...),
(value1, value2, value3, ...),
...
(value1, value2, value3, ...);

数据表的删除

删除数据表

DROP TABLE 表名;  

删除数据

删除表内数据,用 delete。格式为:

DELETE FROM 表名 WHERE 删除条件;

实例:

DELETE FROM student WHERE stu_name = "刘太刚";   --删除学生表内姓名为刘太刚的记录

注: 只用delete的时候,一定要使用where并注明删除的条件,否则会删除整张表。

删除数据,但是保留表结构

清除表内数据,保存表结构,用 truncate。格式为:

TRUNCATE TABLE 表名;

数据表的修改

增加一个字段:

ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 字段约束; 

实例:

ALTER TABLE student ADD COLUMN stu_honor VARCHAR(20) DEFAULT NULL;

删除一个字段:

ALTER TABLE 表名 DROP COLUMN 字段名; 

修改一个字段:

ALTER TABLE 表名 MODIFY 字段名 数据类型;  --修改数据类型ALTER  TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;   --修改字段名称
ALTER TABLE student MODIFY stu_honor VARCHAR(10); ALTER TABLE student CHANGE stu_honor stu_honour varchar(200);   

数据表的查询

一般查询

一般查询的格式

SELECT column_name,column_name, ...
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

查询所有数据

实例:

SELECT * FROM student ;
SELECT stu_name, stu_number FROM student ;    --所有数据中的指定字段

根据条件查询

实例:

select * from student where id= 1;
select * from student where stu_name='徐维松' and stu_number='2345' ;
select * from student where stu_name='徐维松' or stu_number='3456' ;
select * from student where stu_age>=18 and stu_age<=21 ;
select * from student where stu_age between 20 and 23;

模糊查询

实例:

select * from student where stu_name like '%克喜';     --%通配符代表任意多个字符

排序

实例:

select * from student order by stu_age asc;    --按照价格升序排列
select * from student order by stu_age desc;    --按照价格降序排列

统计函数(聚合函数)

实例:

select count(*) from student;     --查询表中有多少条数据
select max(stu_age) from student;     --取价格的最大值
select min(stu_age) from student;     --取价格的最小值
select sum(stu_age) from student;     --取价格的总和
select avg(stu_age) from student;     --取价格的平均值

分组查询

实例1:

select count(*) from student group by stu_address;

注: group by,一般和聚合函数一起使用,如果,查询的字段出现在GROUP BY后,却没有包含在聚合函数中,该字段显示的是,分组后的第一条记录的值,这样,可能会导致查询结果不符合我们的预期。

实例2:

SELECT COUNT(*) FROM student GROUP BY stu_address HAVING SUM(stu_age)>60;    --使用stu_address作为分组的条件, 找出满足stu_age的和大于60的那一组

注: HAVING关键字和WHERE关键字的作用相同,都是用于设置条件表达式,对查询结果进行过滤。两者的区别是,HAVING关键字后,可以跟聚合函数,而WHERE关键字不能,通常情况下,HAVING关键字,都是和GROUP BY一起使用,用于对分组后的结果进行过滤。

分页查询

select * from student limit 0,3;    -- 跳过几条数据取几条数据

总结:

SELECT * FROM table_name LIMIT offset, size;    -- offset:偏移量; size:数据量

去重(chong)查询

select distinct stu_address from student;

连结查询

内联接

(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

外联接

外联接可以是左向外联接、右向外联接或完整外部联接。

在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:

1)LEFT JOIN或LEFT OUTER JOIN

左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

2)RIGHT JOIN 或 RIGHT OUTER JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

3)FULL JOIN 或 FULL OUTER JOIN 完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉联接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。 FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。

例子

img

1) 内连接

img

2)左连接

img

3) 右连接

img

4) 完全连接

img

转载于:https://my.oschina.net/u/3471006/blog/1831173

相关文章:

Python:Bug 官网不要了,全迁去 GitHub

近几年&#xff0c;GitHub 开发者数量逐年上升&#xff0c;仅过去一年 GitHub 的新增用户便有 1600 万人&#xff0c;总用户数更是达到了 7300 万——在开源浪潮席卷全球中&#xff0c;GitHub 无疑成为了许多开发者迈入开源的一个重要途径。 Python 开发团队或许正是看中了这一…

最新的全球编程语言,操作系统,web服务器等使用率分析报告

由www.w3techs.com 根据alexa排名前100万的网站数据给出的分析报告&#xff0c;并每天持续更新。1.服务器端编程语言排名 http://w3techs.com/technologies/overview/programming_language/all点评&#xff1a;PHP是最高的&#xff0c;说明目前php是主流&#xff0c;但是asp.ne…

javascript中有关this的使用

this在面向对象编程中非常重要&#xff0c;他的值取决于调用的模式。 在Javascript中有4种调用模式&#xff1a;方法调用模式、函数调用模式、构造器调用和apply调用。 1. 方法调用模式&#xff1a;当一个方法被调用时&#xff0c;this被绑定到该对象。方法可以使用this访问自己…

Vue中v-if和v-show的使用场景

1. 官方文档 https://cn.vuejs.org/v2/guide/conditional.html#v-if-vs-v-show 2. v-if 和 v-show 的区别 2.1 官方解释 v-if 是“真正”的条件渲染&#xff0c;因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。 v-if 也是惰性的&#xff1a;如果在初…

手机自带的显示基站命令

安卓手机自带快捷指令显示当前的网络信息&#xff0c;不过手机厂商不同&#xff0c;命令也不一样。每次要用时总想不起来命令&#xff0c;记下备用。(1) HTC 安卓手机在拨号键盘输入 *#*#4636#*#* , 选择 “手机信息” (2)三星安卓手机 *#*#4636#*#* , 选择 “手机信息” (3)摩…

LB负载均衡集群 - NAT

前提&#xff1a;客户机 &#xff1a; eth0 192.168.0.200 eth1 192.168.205.129dir主机&#xff1a; eth0 192.168.0.166 eth1 192.168.205.128rs1主机&#xff1a; eth0 192.168.0.207rs2主机&#xff1a; eth0 192.168.0.208rs1 和 rs2的网关是dir 192…

时序预测的三种方式:统计学模型、机器学习、循环神经网络

作者 | luanhz来源 | 小数志导读时序预测是一类经典的问题&#xff0c;在学术界和工业界都有着广泛的研究和应用。甚至说&#xff0c;世间万物加上时间维度后都可抽象为时间序列问题&#xff0c;例如股票价格、天气变化等等。关于时序预测问题的相关理论也极为广泛&#xff0c;…

Python 爬虫练手项目—酒店信息爬取

from bs4 import BeautifulSoup import requests import time import reurl http://search.qyer.com/hotel/89580_4.html urls [http://search.qyer.com/hotel/89580_{}.html.format(str(i)) for i in range(1,10)] # 最多157页 infos [] # print(urls)# 批量爬取数据 def g…

应用交换技术的负载均衡算法

原文出处是&#xff1a;http://hi.baidu.com/ruijievideo/blog/item/5959be1f3c1621ff1bd576d2.html 应用交换技术的负载均衡算法应用交换技术里主要包括四项关键的技术&#xff1a;◆截获和检查流量◆服务器监控健康检查◆负载均衡算法◆会话保持截获和检查流量保证只有合适的…

平民架构的春天——UCloud数据方舟实战记

LNMP是最亲民的网页服务架构&#xff0c;整合了优秀的开源软件&#xff0c;想必大家再熟悉不过了&#xff0c;随着云计算的落地&#xff1b;大众创业&#xff0c;万众创新的倡导&#xff0c;为了更好的服务和安全&#xff0c;LNMP也迁入了云平台&#xff0c;比如像UCloud这样优…

用 Python 制作可视化报表,这也太快了!

作者 | 小F来源 | 法纳斯特在数据展示中使用图表来分享自己的见解&#xff0c;是个非常常见的方法。这也是Tableau、Power BI这类商业智能仪表盘持续流行的原因之一&#xff0c;这些工具为数据提供了精美的图形解释。当然了&#xff0c;这些工具也有着不少缺点&#xff0c;比如…

Django 错误汇总

1、 解决&#xff1a;python manage.py migrate sessions 2、转载于:https://blog.51cto.com/jacksoner/2130665

几种负载均衡算法

几种负载均衡算法 本地流量管理技术主要有一下几种负载均衡算法&#xff1a; 静态负载均衡算法包括&#xff1a;轮询&#xff0c;比率&#xff0c;优先权 动态负载均衡算法包括: 最少连接数,最快响应速度&#xff0c;观察方法&#xff0c;预测法&#xff0c;动态性能分配&#…

cassandra命令

压力测试&#xff1a;cassandra-stress [command] -node [nodes] -mode thrift user[user] password[password] example: cassandra-stress write n10 -node 192.168.0.105 -mode thrift usercassandra passwordcassandra

《2022产业互联网安全十大趋势》发布,专家学者透析产业安全新变化

2月28日&#xff0c;在中国产业互联网发展联盟指导下&#xff0c;人民邮电报、中国信息安全、腾讯安全联合实验室、腾讯研究院联合推出《2022产业互联网安全十大趋势》。该报告由《中国信息安全》杂志出品人温哲、腾讯副总裁丁珂、腾讯研究院院长司晓等20余位行业顶级专家、学者…

slurm用户快速入门手册

1. 概述2. 架构3. 命令3.1 sacct3.2 sattach3.4 sbatch3.5 sbcast3.6 scancel3.7 scontrol3.8 sinfo3.9 smap3.10 squeue3.11 srun3.12 strigger3.13 sview1. 概述 Slurm 是一个开源、容错、高可伸缩的集群管理和大型小型 Linux 集群作业调度系统。slurm不需要对操作系统内核进…

什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?

原文地址&#xff1a;http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/什么是CGICGI全称是“公共网关接口”(Common Gateway Interface)&#xff0c;HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具&#xff0c;其程序须运行在网络服务器上…

5个短小精悍的 Python 趣味脚本,太赞了,非常适合小白上手!

作者 | 菜鸟哥来源 | 菜鸟学Python今天特地为大家准备了几个简单的“开胃小菜”。希望大家能够通过这几个简单而实用的小案例&#xff0c;活跃一下自己的思维&#xff0c;为接下来的工作和学习做好准备。话不多说&#xff0c;我们接下来就开始介绍。1、图片尺寸缩小所需库&…

AjaxFileUpload文件上传组件(php+jQuery+ajax)

jQuery插件AjaxFileUpload可以实现ajax文件上传&#xff0c;下载地址&#xff1a;http://www.phpletter.com/contents/ajaxfileupload/ajaxfileupload.js 主要参数说明&#xff1a;1&#xff0c;url表示处理文件上传操作的文件路径&#xff0c;可以测试URL是否能在浏览器中直接…

Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)

Hadoop生态圈-Flume的组件之自定义拦截器&#xff08;interceptor&#xff09; 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 本篇博客只是举例了一个自定义拦截器的方法&#xff0c;测试字节传输速度。 1>.自…

Pandas 重复数据处理大全

作者 | 东哥起飞来源 | Python数据科学本次来介绍重复值处理的常用方法。重复值处理主要涉及两个部分&#xff0c;一个是找出重复值&#xff0c;第二个是删除重复值&#xff0c;也就是根据自己设定的条件进行删除操作。定位重复值对于重复值&#xff0c;我们首先需要查看这些重…

DEDECMS教程:上/下一篇文章标题长度的截取方法

对dedecms了解的朋友们&#xff0c;想必对如何获取上一篇、下一篇文章的标签也是非常熟悉。dedecms获取上一篇、下一篇文章的标签分别为&#xff1a;{dede:prenext getpre/}、{dede:prenext getnext}。 在这个标签里&#xff0c;并没有设置上一篇、下一篇文章标题字数的功能&am…

以太网帧最小字节数以及以太网碰撞

说明&#xff1a;本文源自多个网页&#xff0c;原文链接已经不可寻 以太网是无连接的&#xff0c;不可靠的服务&#xff0c;采用尽力传输的机制。以太网CSMA/CD我就不多讲了&#xff0c;我相信大家都了解这个原理。以太网是不可靠的&#xff0c;这意味着它并不知道对方有没有收…

lodash 提取前N个元素 take

_.take(array, [n1])从数组的起始元素开始提取 N 个元素。 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><…

JavaScript 中的有限状态机

http://www.ibm.com/developerworks/cn/web/wa-finitemach/JavaScript 中的有限状态机Page navigation系列文章有限状态机很早就已用作设计和实现事件驱动的程序&#xff08;比如网络适配器和编译器&#xff09;内复杂行为的组织原则。现在&#xff0c;可编程的 Web 浏览器为新…

健身也内卷?这届网友用 Python 掌握了做标准俯卧撑的秘诀

自己在家锻炼时&#xff0c;我们很难知道自己的动作是否标准。本文作者用Python写了一个可以检测俯卧撑动作是否标准的程序&#xff0c;一起来看看他是怎么做的。 译者 | 章雨铭 出品 | CSDN 在新加坡军队中&#xff0c;有一种测试叫做IPPT&#xff08;个人身体素质测试&#x…

Linux下配置SNMP

SNMP&#xff08;Simple NetworkManagement Protocol &#xff09;&#xff1a;简单网络管理协议本案列为Linux环境搭建&#xff08;CentOS-6&#xff09;使用yum进行安装&#xff1a;yum install -y net-snmp安装完成后先查看网络配置&#xff1a;netstat -anupl确认161端口被…

重磅!MaxCompute助力阿里开源自研语音识别模型DFSMN,准确率高达96.04%

阿里开源语音识别模型DFSMN 在近期举行的云栖大会武汉峰会上&#xff0c;装有DFSMN语音识别模型的“AI收银员”在与真人店员的PK中&#xff0c;在嘈杂环境下准确识别了用户的语音点单&#xff0c;在短短49秒内点了34杯咖啡。此外&#xff0c;装备这一语音识别技术的自动售票机也…

全球网络拓扑图

原文出自海外一个论坛&#xff1a;http://board.us.ikariam.com/board16-miscellaneous/board205-discussion-board/67724-internet/InternetSo, I always take a look at these maps and also information on the workings of the internetAnd I have questions:Are there map…

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

作者 | 一只河马h来源 | 简说Python一、前言二、需求描述三、开始动手动脑3.1 安装相关第三方包3.2 导入需要用到的第三方库3.3 读取pdf文件&#xff0c;并识别内容3.4 对识别的数据进行处理&#xff0c;写入csv文件总结前言扫描件一直受大众青睐&#xff0c;任何纸质资料在扫描…