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]…;