首页 > 代码库 > MYSQL<一>

MYSQL<一>

  1 -- ########## 01、数据库概述 ##########
  2 -- 1、信息:现实世界中各种可以接触到的东西
  3 -- 2、数据:信息在计算机世界中的映射(反映)
  4 
  5 -- Java中可以把数据存储在内存中的各种容器里,但是电脑掉电后(或程序关闭后),存储在内存中的这些数据就被擦除掉了
  6 
  7 -- 为了解决数据持久化的问题,人类提出了各种解决方案,比如:结绳记事、文字出现(记在石头上、乌龟壳上、竹简上、纸上)、计算机的使用(单个文件、文件系统、数据库)
  8 
  9 -- 解决的核心问题:
 10 -- 1、数据的持久化问题(比如:使用头脑记忆会忘记)
 11 -- 2、大量数据的管理问题
 12 
 13 -- 数据库(DataBase)是按照数据结构来进行组织、存储和管理数据的仓库
 14 
 15 -- 数据库特点:
 16 -- 1、实现数据共享
 17 -- 2、减少数据的冗余
 18 -- 3、保证数据的独立性
 19 -- 4、实现数据的集中控制
 20 -- 5、数据的完整性和一致性
 21 -- 6、数据的故障修复
 22 
 23 -- 数据库的分类(依据数据类型 和 发展历史)
 24 -- 1、层次型数据模型    ----->  层次型数据库
 25 -- 2、网状型数据模型    ----->  网状型数据库
 26 -- 3、关系型数据模型    ----->  关系型数据库(理论依据:关系代数)
 27 
 28 -- 主流数据库:
 29 -- 关系型数据库:MySQL(甲骨文公司)、Oracle(甲骨文公司)、SQLServer(微软)、DB2(IBM)
 30 -- 非关系型数据库(NoSQL):Mongodb、HBase、Cassandra等等
 31 
 32 -- MySQL数据库:
 33 -- 特点:体积小、功能比较强大、开源免费(企业特别看重)、应用广泛
 34 -- 国内互联网三巨头BAT:都有自己针对MySQL的定制版本
 35 
 36 -- MySQL数据库引擎:早期MySQL数据库默认引擎使用MyISAM引擎,较新的版本默认引擎改为使用InnoDB引擎
 37 -- 1、MyISAM引擎:查询和增删速度较快,但是不支持事务
 38 -- 2、InnoDB引擎:支持事务,是作为关系型数据库MySQL的首选引擎
 39 
 40 -- MySQL数据库环境的搭建:
 41 -- 1、安装
 42 -- 2、设置
 43 -- 3、查看MySQL服务是否开启,输入命令:services.msc
 44 -- 4、在命令行窗口输入:mysql -uroot -p设置的密码
 45 -- 如果看见Welcome to MySQL monitor...字样,说明安装和配置均成功
 46 
 47 -- ########## 02、MySQL数据库语法 ##########
 48 -- MySQL数据库语法
 49 -- MySQL编码规范:
 50 -- 1、在MySQL中编写的SQL语句均以英文分号;结尾
 51 -- 2、强制要求SQL语句中的关键字使用大写,其他小写
 52 -- 3、命名时,由多个单词组成的命名,多个单词之间使用下划线_连接
 53 
 54 -- SQL语言:结构化查询语言(Structured Query Language)
 55 -- 1、数据定义语言DDL:CREATE、DROP、ALTER、TRUNCATE
 56 -- 2、数据操作语言DML:INSERT、UPDATE、DELETE
 57 -- 3、数据查询语言DQL:SELECT
 58 -- 4、数据控制语言DCL:COMMIT、ROLLBACK
 59 
 60 -- SQL文件:保存为.sql后缀名的文件
 61 -- SQL语句的注释:使用--两个中横线,接上需要注释的内容
 62 
 63 -- 数据定义语言DDL
 64 -- 对于数据库的库的理解:类比超市,超市中有多个区域,分别卖不同的商品,比如:生鲜、水果、肉类等
 65 
 66 -- MySQL数据库中库的概念:database
 67 
 68 -- 查看MySQL数据库中所有的库:(默认有四个库:information_schema、mysql、performance_schema、test)
 69 -- 注意:这四个库,前三个都是和MySQL数据系统有关的库,平时不操作,test这个库是留给我们随意使用的
 70 SHOW DATABASES;
 71 
 72 -- 创建库
 73 CREATE DATABASE 数据库名;
 74 
 75 -- 删除库
 76 DROP DATABASE 数据库名;
 77 
 78 -- 查看MySQL数据库所支持的引擎类型(查看列的结果中Support列,标为YES或DEFAULT默认的都是支持的引擎类型,标为NO是不支持的引擎类型)
 79 SHOW ENGINES \g;
 80 
 81 -- 既然MySQL数据库中可以有多个database库,所以使用时,首先需要显式的说明要使用的是哪一个database库
 82 USE 需要使用的数据库名;
 83 
 84 -- 对于数据库的库中的表的理解:类比超市,不同的区域中有若干个货架用来摆放商品
 85 
 86 -- MySQL数据库真的某个库中会有若干个表:table,回想关系型数据库,这些表其实就是关系的体现
 87 -- 表的特征通过字段:field来进行体现
 88 
 89 -- 查看使用的这个库中所有的表
 90 SHOW TABLES;
 91 
 92 -- 创建表
 93 -- CREATE TABLE 表名
 94 -- (
 95 --     字段名1   数据类型,
 96 --     字段名2   数据类型,
 97 --     ...
 98 --     字段名n   数据类型
 99 -- );
100 
101 -- 最常用的数据类型
102 -- INT:整型
103 -- VARCHAR(长度):字符型
104 
105 -- 查看表结构
106 -- 写法1
107 DESC 表名;
108 -- 写法2
109 DESCRIBE 表名;
110 
111 -- 修改表名
112 ALTER TABLE 旧表名 RENAME 新表名;
113 
114 -- 修改表的字段的数据类型
115 ALTER TABLE 表名 MODIFY 字段名 数据类型;
116 
117 -- 修改表的字段名 和 数据类型
118 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
119 
120 -- 添加字段(使用FIRST关键字把需要的字段添加在表结构的最前面,使用AFTER关键字把需要的字段添加在指定字段的后面)
121 ALTER TABLE 表名 ADD 新字段名 数据类型 FIRST;
122 ALTER TABLE 表名 ADD 新字段名 数据类型 AFTER 已存在的字段名;
123 
124 -- 删除字段
125 ALTER TABLE 表名 DROP 字段名;
126 
127 -- 删除表
128 DROP TABLE 表名;
129 
130 -- ########## 03、MySQL的基本增删改查操作 ##########
131 -- 使用命令行编码SQL语句,效率低下,考虑使用图形化客户端工具,例如:MySQL Work Bench、Navicat等,经过反复比较,推荐使用SQLyog
132 
133 -- 重音符`:在MySQL的SQL语句中使用特殊字符(关键字)时,一般会考虑使用重音符`,键盘位置一般在ESC键下方
134 
135 CREATE TABLE userinfo
136 (
137     userid INT,
138     username VARCHAR(10),
139     `password` VARCHAR(10)
140 );
141 
142 DESC userinfo;
143 
144 -- 1、新增数据 INSERT
145 -- A:完整插入形式:INSERT INTO 表名(字段1, 字段2, ..., 字段n) VALUES(值1, 值2,..., 值n);
146 INSERT INTO userinfo(userid, username, `password`) VALUES(1, ‘张三‘, ‘123‘);
147 -- B:简写插入形式:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);
148 INSERT INTO userinfo VALUES(2, ‘李四‘, ‘456‘);
149 -- C:插入多行形式:
150 --         早期版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n);INSERT INTO 表名 VALUES(值11, 值12,..., 值1n);
151 INSERT INTO userinfo VALUES(3, ‘王五‘, ‘789‘);
152 INSERT INTO userinfo VALUES(4, ‘赵六‘, ‘999‘);
153 --        后续版本:INSERT INTO 表名 VALUES(值1, 值2,..., 值n), (值11, 值12,..., 值1n);
154 INSERT INTO userinfo VALUES(5, ‘小明‘, ‘888‘), (6, ‘小红‘, ‘777‘);
155 
156 -- 注意:空值 和 空串
157 -- 空串:‘‘,一对单引号包含的内容
158 INSERT INTO userinfo VALUES(7, ‘小张‘, ‘‘);
159 -- 空值:NULL,特殊值
160 INSERT INTO userinfo VALUES(8, ‘小李‘, NULL);
161 -- 下句插入的是字符串NULL
162 INSERT INTO userinfo VALUES(9, ‘小王‘, ‘NULL‘);
163 
164 -- 2、修改数据 UPDATE
165 -- A:修改单个字段的值:UPDATE 表名 SET 字段名 = 新值 WHERE 条件子句;(注意:通过WHERE条件限定范围)
166 UPDATE userinfo SET `password` = ‘666‘ WHERE username = ‘赵六‘;
167 UPDATE userinfo SET `password` = ‘999‘ WHERE userid = 4;
168 UPDATE userinfo SET `password` = ‘666‘ WHERE username = ‘赵六‘ AND userid = 4;
169 -- B:修改多个字段的值:UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2, ..., 字段名n = 新值n WHERE 条件子句;(注意:特别注意SET后多个字段赋值之间使用的是英文逗号)
170 UPDATE userinfo SET username = ‘赵云‘, `password` = ‘999‘ WHERE userid = 4;
171 UPDATE userinfo SET username = ‘赵六‘, `password` = ‘666‘ WHERE username = ‘赵云‘;
172 UPDATE userinfo SET username = ‘赵云‘, `password` = ‘999‘ WHERE username = ‘赵六‘ AND userid = 4;
173 
174 -- 3、删除数据 DELETE    TRUNCATE
175 -- A:删除满足条件的数据:DELETE FROM 表名 WHERE 条件子句;(注意:通过WHERE条件限定范围)
176 DELETE FROM userinfo WHERE `password` = ‘777‘;
177 -- B:删除全部数据:
178 -- 写法1:不使用WHERE子句的DELETE:DELETE FROM 表名;
179 DELETE FROM userinfo;
180 -- 写法2:使用TRUNCATE TABLE 表名;(注意:TRUNCATE常常翻译为截断和数据库的表的数据内容的联系)
181 TRUNCATE TABLE userinfo;
182 
183 -- 最简单的查询
184 SELECT * FROM userinfo;

 

MYSQL<一>