MySQL
一、数据库中列的常用类型
类型 | mysql | java |
---|---|---|
整型 | int、bigint | int、long |
小数 | double、decimal | double、BigDecimal |
日期 | date、datetime | java.util.date |
字符 | char(定长)、varchar(变长) | String |
二进制 | bit(0/1) | boolean |
注意:
MySQL中,字符类型必须指定长度,值要使用单引号
日期时间类型值要用单引号
二、SQL包含的6部分
1.数据查询语言(DQL)
在表中查询数据,
基本语法:SELECT * FROM t_table WHERE condition
2.数据操作语言(DML)
语句包括:增、删、改
INSERT \ DDELETE \ UPDATE
3.事务处理语言(TPL)
它的语句能确保被DML语句影响的表的所有行及时更新.
语句包括:begin、transaction、commit、rollback
4.数据控制语言(DCL)
它的语句通过grant或revoke获得许可,确定单个用户和用户组对数据库对象的访问
权限访问
5.数据定义语言(DDL)
在数据库中创建新表或删除表,为表加入索引等
语句包括:create table{}、drop table
6.指针控制语言(CCL)
用于对一个或多个表,单独执行的操作
三、DDL语法操作
以下的操作都是在cmd中进行的操作
1.进入数据库
mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口;
2.查看数据库
show databases;
3.创建数据库
create datebase 数据库名称;
4.进入数据库
use 数据库名称;
5.查看数据库中的表
show tables;
6.在数据库中创建表
create table 表名(
id bigint primary key auto_increment,
列名2 列的类型 [约束],
列名3 列的类型 [约束]
);
7.在数据库中删除表
drop table 表名;
注意:
常见的表的约束
①主键约束:primary key 非空且唯一
②主键自增:auto_increament(1开始、步长为1)
四、DML语法操作
1.增加
INSERT INTO 表名(列名1,列名2,列名3,...) VALUES (值1,值2,值3,...);
2.删除
DELETE FROM 表名 [WHERE 条件]
如果没写条件,就是清空表中的所有数据,有条件就是只删除符合条件的.
3.修改
UPDATE 表名 SET 列名1=值1,列名2=值2,列名3=值3,... [WHERE 条件];
没加条件就是将表中所有数据都修改,如果有条件就只修改符合条件的.
五、DQL语法操作
1.普通查询
①消除重复数据
SELECT DISTINCT 列名 FROM 表名 [WHERE 条件];
②别名
SELECT 列名 AS 别名 FROM 表名 [WHERE 条件];
③按指定格式输出
SELECT CONCAT(列名,字符串,列名,字符串…) FROM 表名 [WHERE 条件];
注意:
concat将里面的所有拼接成一个字符串,查询后列名显示的就是这样的格式内容
2.过滤查询
①比较运算符
!=、==、>=、<=、>、<
②逻辑运算符
and or not
查询年龄18且是java班的学生
SELECT * FROM student WHERE age = 18 AND className = 'java';
查询年龄是18 或者 年龄是23的学生
SELECT * FROM student WHERE age=18 or age=23
查询年龄不是18 和 23 的学生
SELECT * FROM student WHERE (NOT age = 18) AND (NOT age = 23);
③范围和集合
between 数值1 and 数值2 == [数值1,数值2]
in (值1,值2,值3,…) 符合值1、值2、值3等.
例如:查询年龄是18-25的学生
SELECT * FROM student WHERE age BETWEEN 18 AND 25;
例如:查询年龄是18.20.22的学生
SELECT * FROM student WHERE age IN (18,20,22);
④判空
is null 和 ‘’ (什么都没存,但是不是为NULL的情况)
例如:找空的情况
SELECT * FROM student WHERE t_name IS NULL;
找不为空的情况
SELECT * FROM student WHERE NOT t_name IS NULL;
找空字符串的情况
SELECT * FROM student WHERE t_name = '';
找不为空字符串的情况
SELECT * FROM student WHERE t_name != '';
SELECT * FROM student WHERE NOT t_name = '';
⑤模糊匹配查询
%:匹配任意个数的任意字符
_:匹配任意一个字符
查询名字带有M的学生
SELECT * FROM student WHERE t_name LIKE '%M%';
查询名字不带有M的学生
SELECT * FROM student WHERE NOT t_name LIKE '%M%';
查询名字第二个字母是M的学生
SELECT * FROM student WHERE t_name LIKE '_M%';
3.结果排序
ORDER BY 升序:ASC/降序:DESC
按照年龄升序排序
SELECT * FROM student ORDER BY age;
SELECT * FROM student ORDER BY age ASC;
按照年龄降序排序
SELECT * FROM student ORDER BY age DESC;
4.分页查询
limit ?,?
第一问号是:当前开始的索引
第二个问号是:当前页存储的最大数据量
显示3条数据量的第一页数据
SELECT * FROM student LIMIT 0,3;
显示3条数据量的第三页数据
SELECT * FROM student LIMIT 6,3
补充:
第一个问号的计算公式:(要显示的页码 - 1)*每页数据量
5.统计函数
COUNT(*):数据的总条数
SUM():对应列的总值
MAX():对应列的最大值
MIN():对应列的最小值
student表中的数据总数
SELECT COUNT(*) FROM student;
员工表中的工资总数
SELECT SUM(salary) FROM employee;
员工表中的最高工资
SELECT MAX(salary) FROM employee;
员工表中的最低工资
SELECT MIN(salary) FROM employee;
补充
执行顺序
from
where
select
order by
因此别名可在order by上使用
六、数据备份和恢复
1.MySQL自带的
mysqldump.exe:备份
mysqldump -u账户 -p密码 数据库名称>脚本文件存储地址\文件名.sql
mysql.exe:还原
mysql -u账户 -p密码 数据库名称 < 脚本文件存储地址\文件名.sql
补充
支持各种数据库和可视化界面的还原
后面的文件名的后缀一定要是.sql
备份和还原的区别就是mysqldump 和mysql 以及 > <的区别