MySQL

SQL

SQL:结构化查询语言(Structured Query Language)

SQL包含6个部分

1.数据库查询语言(DQL)
2.数据操作语言(DML)
3.事务处理语言(TCL)
4.数据控制语言(DCL)
5.数据定义语言(DDL)

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。
通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。
InnoDB:支持事务,支持外键,支持行级锁定,性能较低。

InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但对比MyISAM,处理效率差,且会占用更多的磁盘空间以保留数据和索引。

ORM思想: 对象关系映射 –> Java的对象和关系型数据库的映射

面向对象
表结构
表的列 属性
表的行 对象

MySQL命令行

1.sudo mysql.server start : 启动数据库
2.sudo mysql.server stop : 关闭数据库
3.mysql -u root -p : 进入数据库(我的版本信息:Server version: 8.0.12 Homebrew)
4.use mysqlname; : 进入数据库
5.show tables;   : 查看表
6.desc table_name; : 查看表结构
7.create table table_name : 创建表
8.drop table table_name : 删除表

MySQL列的常见类型

Java MySQL
int INT
long BIGINT
BigDecimal DECIMAL
boolean BIT
java.util.Date DATE/DATETIME
String VARCHAR

表约束

1.非空约束:NOT NULL(NK),不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY(PK), 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)
6.外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。

数据操作(DML)

保存操作

1
INSERT INTO table_name(column1,column2,colum3...) VALUES (value1, value2, value3);

更新操作

1
UPDATE table_name SET `columnName` = 'value' WHERE (`condition` = 'num');

删除操作

1
DELETE FROM table_name WHERE (`condition` = 'num');

数据查询操作(DQL)

基本语法

1
SELECT * FROM table_name;

说明:
SELECT 选择查询列表,列与列之间用逗号隔开
FROM 提供数据源(表、视图或其他的数据源)

如果为 * 和创建表时的顺序一致。
可以自己调整顺序,在select后边加上要查询的列名。

消除结果中重复的数据

1
SELECT DISTINCT 列名.. FROM table_name;

数学运算

数学运算:对NUMBER型数据可以使用算数操作符创建表达式(+  -  *  /)
对DATE型数据可以使用部分算数操作符创建表达式 (+  -)
运算符优先级:
1、乘法和除法的优先级高于加法和减法
2、同级运算的顺序是从左到右
3、表达式中使用"括号"可强行改变优先级的运算顺序

设置显示格式:

一旦遇到变量和常量拼接就必须使用CONCAT函数
把多个值以字符串拼接的形式拼在一起,可以使用函数concat(...)

设置列名的别名

1.改变表的名字;
2.用于表示计算结果的含义;
3.作为列的别名;
4.如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加引号;别名以后都不加引号.加了引号的别名导致排序失效.

过滤查询

过滤查询

比较运算符

运算符 含义
= 等于
> 大于
>= 大于或等于
< 小于
< 小于
<= 小于或等于
!=(<>) 不等于

逻辑运算符

运算符 含义
AND(&&) 如果组合的条件都是TRUE,返回TRUE
OR(||) 如果组合的条件之一是TRUE,返回TRUE
NOT(!) 如果下面的条件是FALSE,返回TRUE

范围查询

使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。
格式:
SELECT <columnList> FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

集合查询

使用IN运算符,判断列的值是否在指定的集合中。
格式: WHERE 列名 IN (值1,值2....);

空值查询

IS NULL:判断列的值是否为空。
空值是特指没有值的列
格式:WHERE  列名  IS NULL;

模糊查询

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%通配符:可表示任意个数的任意字符。
_通配符:可表示一个任意字符。
通配符:用来实现匹配部分值得特殊字符。

结果排序

使用ORDER BY子句将记录排序
ASC升序
DESC降序
ORDER BY 子句出现在SELECT语句的最后。
格式:
SELECT
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]…;