文章目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/c2a6cd58270a4f4d9a9259ee75e57de0.png)
MySQL基础知识
基本概念
本地mysql服务启动与停止
这里的mysq对应的是windows下的服务名称,可能会有所出入
net start mysql
net stop mysql
也可以直接在服务中,点击选择开启与关闭
客户端连接mysql
windows可以直接使用cmd进行连接本地的mysql,(别忘了配置mysql的全局环境变量)
mysql [-h 127.0.0.1] [-p 3306] -u root -p
连接本地的时候直接使用
mysql -u 用户名 -p
然后输入你的密码即可
数据模型
关系型数据库
概念:建立在关系模型基础上,由多张项目连接的二维表组成的数据库
数据模型
数据类型
- 数值类型
- 字符串类型
- 日期类型
SQL语句
DDL
数据定义语言,用来定义数据库对象(数据库,表,字段)
表操作
-
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMIT 注释] [约束], ADD 字段名 类型(长度)[COMMIT 注释] [约束], ADD 字段名 类型(长度)[COMMIT 注释] [约束],
示例
ALTER TABLE example_table ADD COLUMN category VARCHAR ( 200 ) COMMENT "分类", ADD COLUMN domains TEXT COMMENT "可用域";
-
修改字段
ALTER TABLE 表名 MODIFY 字段名 新数据长度;
-
修改表名
ALTER TABLE 表名 RENAME TO 新表名
示例:将 person表改为student表
alter table person rename to student;
- 删除表
DROP TABLE [ IF EXISTS ] 表名;
示例:
drop table if exists teachers;
库操作
-
查询所有数据库
SHOW DATABASE;
-
查询当前数据库
SELECT DATABASE();
-
创建
CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAUT CHARST 字符集 ] [ COLLATE 排序规则 ] ;
-
删除
DROP DATABASE[ IF EXISTS ] 数据库名;
-
使用
USE 数据库名;
-
查询当前数据库所有表
SHOW TABLES
-
查询表结构
DESC 表名
-
查询指定表的建表语句
SHOW CREATE TABLE 表名;
-
创建表
CREATE TABLE 表名 { 字段1 类型 1[ COMMIT 字段1注释 ], 字段2 类型 2[ COMMIT 字段2注释 ], }
示例:我们创建一个十分简单的教师表teacher
CREATE TABLE teacher ( id INT COMMENT '唯一编号', NAME VARCHAR ( 50 ) COMMENT '名字', gender VARCHAR ( 10 ) COMMENT '性别' );
-
删除表
drop table if exists teachers;
删除并重新创建表
truncate teachers;
DML
数据库操作语言,用来对数据库表中的数据进行增删改
- 表中插入数据
注意:键值位置要一一对应
也可以这样写,但是得与表中得顺序一一对应INSERT INTO student ( NAME, age, gender, address ) VALUES ( '测试', 22, '男', '数据库' );
也可以一次插入多个数据INSERT INTO student VALUES ( 18,'测试', 22, '男', '数据库' );
INSERT INTO student VALUES ( 19, '测试', 22, '男', '数据库' ), ( 20, '测试', 22, '男', '数据库' ), ( 21, '测试', 22, '男', '数据库' );
- 更新数据
UPDATE student SET NAME = 'uuuuuuu' WHERE gender = '男';
- 删除数据
DELETE FROM student WHERE address = '数据库';
DQL
数据查询语言,用来查询数据库中表的记录
-
基本查询
SELECT NAME FROM student;
别名
SELECT NAME AS '姓名' FROM student;
-
条件查询(WHERE)
-
聚合查询 (count、max、min、avg、sum)
NULL 值不参与计算
-
分组查询 (GROUP BY)
WHRER和HAVING的区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
判断条件不同:where不是对聚合函数进行判断,而having可以 -
排序查询 (ORDER BY)
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
排序方式
- ASC 升序
- DESC 降序
示例:获取年龄相同升序,同龄的按照入职时间降序排列
SELECT * FROM emp ORDER BY age ASC, entrydata ASC;
-
分页查询 (LIMIT)
SELECT * FROM 表名 LIMIT 页数,查询记录数;
DCL
数据控制语言,用来创建数据库用户,控制数据库的访问权限
- 创建用户(仅在本地)
任意IPCREATE USER 'itecast' @localhost IDENTIFIED BY '123456';
修改用户密码CREATE USER 'itecast' @'%' IDENTIFIED BY '123456'
函数
字符串函数
数值函数
日期函数
流程函数
约束
约束是作用于表中字段上的规则,用于限制存储在表中的数据
外键约束
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
- 添加外键
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY ( dept_id ) REFERENCES dept ( id );
- 删除外键
- 删除/更新行为
多表查询
多表关系
基本分为三种
- 一对多(多对一)
- 部门与员工的关系(实现:在多的一方建立外键,指向一的一方的主键)
- 多对多
- 学生与课程的关系 (实现:建立第三种表,中间表至少包含两个外键,分别关联两方主键)
- 一对一