-- ########## 01、数据库概述 ##########
-- 1、信息:现实世界中各种可以接触到的东西
-- 2、数据:信息在计算机世界中的映射(反映) -- Java中可以把数据存储在内存中的各种容器里,但是电脑掉电后(或程序关闭后),存储在内存中的这些数据就被擦除掉了 -- 为了解决数据持久化的问题,人类提出了各种解决方案,比如:结绳记事、文字出现(记在石头上、乌龟壳上、竹简上、纸上)、计算机的使用(单个文件、文件系统、数据库) -- 解决的核心问题:
-- 1、数据的持久化问题(比如:使用头脑记忆会忘记)
-- 2、大量数据的管理问题 -- 数据库(DataBase)是按照数据结构来进行组织、存储和管理数据的仓库 -- 数据库特点:
-- 1、实现数据共享
-- 2、减少数据的冗余
-- 3、保证数据的独立性
-- 4、实现数据的集中控制
-- 5、数据的完整性和一致性
-- 6、数据的故障修复 -- 数据库的分类(依据数据类型 和 发展历史)
-- 1、层次型数据模型 -----> 层次型数据库
-- 2、网状型数据模型 -----> 网状型数据库
-- 3、关系型数据模型 -----> 关系型数据库(理论依据:关系代数) -- 主流数据库:
-- 关系型数据库:MySQL(甲骨文公司)、Oracle(甲骨文公司)、SQLServer(微软)、DB2(IBM)
-- 非关系型数据库(NoSQL):Mongodb、HBase、Cassandra等等 -- MySQL数据库:
-- 特点:体积小、功能比较强大、开源免费(企业特别看重)、应用广泛
-- 国内互联网三巨头BAT:都有自己针对MySQL的定制版本 -- MySQL数据库引擎:早期MySQL数据库默认引擎使用MyISAM引擎,较新的版本默认引擎改为使用InnoDB引擎
-- 1、MyISAM引擎:查询和增删速度较快,但是不支持事务
-- 2、InnoDB引擎:支持事务,是作为关系型数据库MySQL的首选引擎 -- MySQL数据库环境的搭建:
-- 1、安装
-- 2、设置
-- 3、查看MySQL服务是否开启,输入命令:services.msc
-- 4、在命令行窗口输入:mysql -uroot -p设置的密码
-- 如果看见Welcome to MySQL monitor...字样,说明安装和配置均成功 -- ########## 02、MySQL数据库语法 ##########
-- MySQL数据库语法
-- MySQL编码规范:
-- 1、在MySQL中编写的SQL语句均以英文分号;结尾
-- 2、强制要求SQL语句中的关键字使用大写,其他小写
-- 3、命名时,由多个单词组成的命名,多个单词之间使用下划线_连接 -- SQL语言:结构化查询语言(Structured Query Language)
-- 1、数据定义语言DDL:CREATE、DROP、ALTER、TRUNCATE
-- 2、数据操作语言DML:INSERT、UPDATE、DELETE
-- 3、数据查询语言DQL:SELECT
-- 4、数据控制语言DCL:COMMIT、ROLLBACK -- SQL文件:保存为.sql后缀名的文件
-- SQL语句的注释:使用--两个中横线,接上需要注释的内容 -- 数据定义语言DDL
-- 对于数据库的库的理解:类比超市,超市中有多个区域,分别卖不同的商品,比如:生鲜、水果、肉类等 -- MySQL数据库中库的概念:database -- 查看MySQL数据库中所有的库:(默认有四个库:information_schema、mysql、performance_schema、test)
-- 注意:这四个库,前三个都是和MySQL数据系统有关的库,平时不操作,test这个库是留给我们随意使用的
SHOW DATABASES; -- 创建库
CREATE DATABASE 数据库名; -- 删除库
DROP DATABASE 数据库名; -- 查看MySQL数据库所支持的引擎类型(查看列的结果中Support列,标为YES或DEFAULT默认的都是支持的引擎类型,标为NO是不支持的引擎类型)
SHOW ENGINES \g; -- 既然MySQL数据库中可以有多个database库,所以使用时,首先需要显式的说明要使用的是哪一个database库
USE 需要使用的数据库名; -- 对于数据库的库中的表的理解:类比超市,不同的区域中有若干个货架用来摆放商品 -- MySQL数据库真的某个库中会有若干个表:table,回想关系型数据库,这些表其实就是关系的体现
-- 表的特征通过字段:field来进行体现 -- 查看使用的这个库中所有的表
SHOW TABLES; -- 创建表
-- CREATE TABLE 表名
-- (
-- 字段名1 数据类型,
-- 字段名2 数据类型,
-- ...
-- 字段名n 数据类型
-- ); -- 最常用的数据类型
-- INT:整型
-- VARCHAR(长度):字符型 -- 查看表结构
-- 写法1
DESC 表名;
-- 写法2
DESCRIBE 表名; -- 修改表名
ALTER TABLE 旧表名 RENAME 新表名; -- 修改表的字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型; -- 修改表的字段名 和 数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; -- 添加字段(使用FIRST关键字把需要的字段添加在表结构的最前面,使用AFTER关键字把需要的字段添加在指定字段的后面)
ALTER TABLE 表名 ADD 新字段名 数据类型 FIRST;
ALTER TABLE 表名 ADD 新字段名 数据类型 AFTER 已存在的字段名; -- 删除字段
ALTER TABLE 表名 DROP 字段名; -- 删除表
DROP TABLE 表名; -- ########## 03、MySQL的基本增删改查操作 ##########
-- 使用命令行编码SQL语句,效率低下,考虑使用图形化客户端工具,例如:MySQL Work Bench、Navicat等,经过反复比较,推荐使用SQLyog -- 重音符`:在MySQL的SQL语句中使用特殊字符(关键字)时,一般会考虑使用重音符`,键盘位置一般在ESC键下方 CREATE TABLE userinfo
(
userid INT,
username VARCHAR(10),
`password` VARCHAR(10)
); DESC userinfo; -- 1、新增数据 INSERT
-- A:完整插入形式:INSERT INTO 表名(字段1, 字段2, ..., 字段n) VALUES(值1, 值2,..., 值n);
INSERT INTO userinfo(userid, username, `password`) VALUES(1, '张三', '123');
-- B:简写插入形式:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);
INSERT INTO userinfo VALUES(2, '李四', '456');
-- C:插入多行形式:
-- 早期版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);INSERT INTO 表名 VALUES(值11, 值12,..., 值1n);
INSERT INTO userinfo VALUES(3, '王五', '789');
INSERT INTO userinfo VALUES(4, '赵六', '999');
-- 后续版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n), (值11, 值12,..., 值1n);
INSERT INTO userinfo VALUES(5, '小明', '888'), (6, '小红', '777'); -- 注意:空值 和 空串
-- 空串:'',一对单引号包含的内容
INSERT INTO userinfo VALUES(7, '小张', '');
-- 空值:NULL,特殊值
INSERT INTO userinfo VALUES(8, '小李', NULL);
-- 下句插入的是字符串NULL
INSERT INTO userinfo VALUES(9, '小王', 'NULL'); -- 2、修改数据 UPDATE
-- A:修改单个字段的值:UPDATE 表名 SET 字段名 = 新值 WHERE 条件子句;(注意:通过WHERE条件限定范围)
UPDATE userinfo SET `password` = '666' WHERE username = '赵六';
UPDATE userinfo SET `password` = '999' WHERE userid = 4;
UPDATE userinfo SET `password` = '666' WHERE username = '赵六' AND userid = 4;
-- B:修改多个字段的值:UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2, ..., 字段名n = 新值n WHERE 条件子句;(注意:特别注意SET后多个字段赋值之间使用的是英文逗号)
UPDATE userinfo SET username = '赵云', `password` = '999' WHERE userid = 4;
UPDATE userinfo SET username = '赵六', `password` = '666' WHERE username = '赵云';
UPDATE userinfo SET username = '赵云', `password` = '999' WHERE username = '赵六' AND userid = 4; -- 3、删除数据 DELETE TRUNCATE
-- A:删除满足条件的数据:DELETE FROM 表名 WHERE 条件子句;(注意:通过WHERE条件限定范围)
DELETE FROM userinfo WHERE `password` = '777';
-- B:删除全部数据:
-- 写法1:不使用WHERE子句的DELETE:DELETE FROM 表名;
DELETE FROM userinfo;
-- 写法2:使用TRUNCATE TABLE 表名;(注意:TRUNCATE常常翻译为截断和数据库的表的数据内容的联系)
TRUNCATE TABLE userinfo; -- 最简单的查询
SELECT * FROM userinfo;

MYSQL<一>的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. mysql每秒最多能插入多少条数据 ? 死磕性能压测

    前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  10. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

随机推荐

  1. 手机端 video 视频自动播放方法

    //创建一个video标签 var __video = $("#video").appendTo('.i-i-video'); //设置视频文件地址 __video.attr('s ...

  2. Web08_MySQL&JDBC回顾

    数据库操作:DATABASE 查看正在使用的数据库: SELECT DATABASE(); 表操作:TABLE 修改表修改列明 ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) ...

  3. rhel安装ambari

    RHEL/CentOS/Oracle Linux 6 On a server host that has Internet access, use a command line editor to p ...

  4. scanf("%[^\n]",str)

    题目地址 scanf()   遇到空格结束输入 可以用 scanf("%[^\n]" , str)   输入一行数据包括空格,直到遇到换行符 ' \n ' #include< ...

  5. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  6. docker 运行mysql最新版本用navicat连接报错:1251

    主要是:新版的mysql的加密方式发生了变化,解决方法如下: 1:进入docker容器: docker exec -it  mysql(启动mysql时候起的别名)  /bin/bash 2:登陆my ...

  7. session 的理解

  8. Akka系列(九):Akka分布式之Akka Remote

    前言.... Akka作为一个天生用于构建分布式应用的工具,当然提供了用于分布式组件即Akka Remote,那么我们就来看看如何用Akka Remote以及Akka Serialization来构建 ...

  9. java期末考试

    水仙花数 package txt; public class shuixianhua { public static void main(String[] args) { // TODO Auto-g ...

  10. [转帖]软件的变革与 AOT

    软件的变革与 AOT https://www.colabug.com/851475.html 文章写的很牛B .. 前言 AOT 即 Ahead of Time Compilation,即运行前编,与 ...