1.0 数据模型
1.1第一种
MySQL客户端链接
- MySQL自带的客户端命令行
- mysql [-h 127.0.0.1][-P 3306] -u root -p
-
1.2 第二种
- 使用命令: mysql -uroot -proot
- -u:用户名
- -p: 密码
-
1.3 第三种: 使用客户端软件 navicat 和sqlyog等
- 关系型数据库
- 建立在关系建模基础上,由多张相互连接的二维表组成的数据库
- 特点
- 使用表储存数据,格式统一,便于维护
- 使用SQL语言操作,标准统一,便于方便
- 使用表储存数据,格式统一,便于维护
- 特点
- 数据模型
- 数据库
- 表
2.0 SQL
2.1SQL
-
2.1.1 通用语法
- SQL语句可以使用空格/缩进来增强语句的可读性
- SQL语句可以单行或多行书写,以分号结尾
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
-
2.1.2 注释
- 单行注释
- -- 注释内容或#注释内容(MySQL特有)
- 多行注释
- /*注释内容*/
-
2.1.3 SQL分类
- 数据查询语言
- 数据操作语言
- 数据定义语言
- 数据控制语言
- 事务控制语言TCL
2.2 DDL数据定义语言
2.2.1 数据库操作
- 数据类型
- int
- bigint
- float
- double
- decimal
- varchar 字符串类型 最大255
- text 文本
- date 日期类型
2.2.2 表操作
- 查询
- 查询当前数据库所有表
- SHOW WABLES
- 查询表结构
- DESC表名
- 查询指定表的建表语句
- SHOW CREATE TABLE 表名
- 创建
- 修改
- 增加一列
- ALTER TABLE 表名 ADD COLUMN 列名 数据类型
- 删除指定的列
- ALTER TABLE 表名 DROP COLUMN 列名
- 修改某一列的数据
- ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型
- 修改列名
- ALTER TABLE 表名 CHANGE COLUMN 原来的列名 新的列名 数据类型
2.2.3 约束
- 约束是作用于表中字段上的规则,用于限制存储在表中的数据
- 目的
- 保证数据库中数据的正确 有效性 和完整性
- 分类
- insert into 表名(列名,列名,....) values(值,值2.....) 往表里添加数据
- 外键约束
- 外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
- 为什么需要外键
- 数据完整性:外键可以确保数据的完整性,通过外键约束可以确保在一个表中的某个字段的值必须在另一个表中存在。这样可以避免在关联表之间出现不一致或错误的数据。
- 数据一致性:外键可以确保数据的一致性,通过外键约束可以保证在关联表中的数据是一致的,减少数据冗余和错误。
- 数据关联:外键可以建立表与表之间的关联关系,使得在查询数据时可以方便地通过外键进行关联查询,获取相关联的数据。
- 数据查询性能:外键可以提高数据查询性能,通过外键建立关联关系可以减少数据的冗余存储,提高数据的查询效率。
- 总结
- 通过外键可以确保数据的完整性、一致性,建立表与表之间的关联关系,提高数据查询性能,使得数据库的设计更加规范和高效。
- 添加和删除\更新外键
2.2 DML
-
2.2.1 概念
- DML(Data Mark Lau)数据标记性语言。该语言主要用户对数据库表中的记录进行操作的。【增加 删除 修改
-
2.2.2 语法
-
查询
- select * from 表名
-
增加
- 为表中所有列添加数据 insert into 表名 values(值,值,值.....)
- 为指定列添加数据 insert into 表名(列名,列名...) values(值,值...)
- 批量添加 insert into 表名(列名,列名...) values(值,值...),(值,值...)
-
删除
- delete from 表名;
- -- 删除表中所有的记录 [不建议使用]
- delete from 表名 where 条件
- -- 根据条件删除满足条件的记录
- delete from 表名;
-
where 条件
- 关系运算符: >,>=,<,<=,=,!=
- delete from 表名 where age = 25
- in运算符
- delete from 表名 where age in(12,19,20,26);
- between and
- delete from 表名 where age BETWEEN 19 and 25;
- 逻辑运算符: and(与) or(或)
- delete from 表名 where id=14 and age>20;
- delete from 表名 where id=14 or age>20;
- 关系运算符: >,>=,<,<=,=,!=
-
修改
- update 表名 set 列名 = 值 , 列名 = 值 , 列名 = 值. . . where 条件
- 注意: 最后一个列名=值不要使用,号
-
-
2.3 DQL
- 概念
- DQL( Data Query La)数据查询语言。作用:用于查询数据表中记录。
- 语法
- 查询 select [列名...] from 表名 [where 条件]
- 查询所有列的值 select * from 表名
- 查询指定列的值
- select 列名 from 表名
- 根据条件查询
- select * from 表名 [where 条件]
- 模糊查询
- select * from 表名 where 列名 like 通配符
- 通配符
- % 统配N个字符
- _ 通配一个字符
- 为查询的列起别名
- select 列名 as 别名,列名 as 别名 from 表名 【where 条件】
- 去除重复项
- select distinct 列名,列名 ... from 表名 【where 条件】
- 排序
- select * from 表名 order by 列1,列2...[desc降序 asc升序默认]
- 分页查询
- select * from 表名 limit 起始记录,每页显示条数;
- 规律
- select * from t_user limit (current-1)*pageSize,pageSize;
- 聚合函数
- MySQL自带的函数
- 分类
- sum() 求和
- count() 求个数
- avg() 平均值
- max() 最大值
- min() 最小值
- 案例
- select sum(age) 年龄和,max(age) 最大年龄,min(age) 最小年龄,count(id) 个数,avg(age) from t_user;
- 查询的结果或条件上可以使用运算符
- select age, age+1 from t_user where age+1>20;
- 分组查询
- select 分组的列,聚合函数 from 表名 group by 列名,列名 having 分组后的条件
- 导入和到处SQL语句
- 导出
- 导入
- 手动创建
- 导出
- 概念
-
2.4查看SQL执行原理
-
2.5 联表查询
- 内连接
- 两个表的公共部分
- select * from 表名1 inner join 表名2 on 联表条件;
- 两个表的公共部分
- 外连接
- 左外连接
- 查询左边所有的内容以及公共内容
- select * from 表名1 left join 表名2 on 联表条件
- 查询左边所有的内容以及公共内容
- 右外连接
- 查询右边所有的内容以及公共内容
- select 字段列表 from 表1 right [outer] join 表2 on 条件
- select * from 表1 right [outer] join 表2 on 条件
- 查询右边所有的内容以及公共内容
- 左外连接
- 子连接
- 自己连接自己的表
- 内连接
-
2.6 嵌套查询 select套select
-
2.7MySQL中内置的函数
- 字符串函数
- select [列名...] 函数 from 表名 [where 条件]
- select * from 表名 [where 条件]
- 时间函数
- 数学函数
- 字符串函数
-
3.0 远程连接
-
3.1JDBC
-
-
3.1.1 语法和案例
- 我们之前操作数据库--都是通过图形化界面来对mysql进行操作,我们实际开发是我们应该通过java代码来完成对数据库的操作。
-
- 协议:数据库类型://数据库服务器ip:端口号/数据库名
- 加载驱动: Class.forName("com.mysql.cj.jdbc.Driver")
- .获取连接对象: Connection con=DriverManager.getConnection(url,user,password);
- Connection - 表示数据库连接的对象
- DriverManager - 用于管理数据库驱动程序的类
- getConnection - 用于建立数据库连接的方法
- Url - 数据库连接的URL
- 获取执行sql语句的对象: Statement st=con.createStatement();
- Statement - 用于执行SQL语句的对象
- 执行增删改sql语句: st.executeUpdate(sql);
- executeUpdate - 用于执行增删改SQL语句的方法
- 关闭资源
- st.close()
- con.colse()
-
- " insert into 列名 values (列的内容)
-
- "delete from 表名 where 列名 =" +列的内容
- sql - 要执行的SQL语句*
-
3.1.2常见错误
- 第一种
- 写错驱动名
- 没有引入mysql的驱动包
- 没有构建jar
- 第二种
- 服务IP写错
- MySQL服务没开
- 第三种
- 账号密码错误
- 第四种
- sql错误--sql和navicat再运行一下
- 第一种
-