本周内容
day01
1、mysql相关概念介绍
记录与字段
表
库
数据库管理软件
数据库服务器
2、mysql数据管理软件的安装
3、mysql的基本使用(配置文件)
4、库操作
5、表操作
数据类型
day02
1、约束条件(******)
表之间的三种关联关系
多对一
多对多
一对一
2、记录操作
单表查询(******)
day03
1、多表查询(******)
2、在python中如何操作mysql
pymysql模块
day04
考试
day05
1、视图
2、触发器
3、事务
4、存储过程
5、函数
day06
索引原理与慢查询优化
----------------------------------------> 重点 <-------------------------------------------------------
无论引入什么技术, 数据要想永久存储。
数据依然是存储在文件中的,
只不过这些文件是mysql帮你管理的
关系型数据库 与 非关系型数据库:
关系型数据库: 指建立表来存放数据
非关系型数据库: 指 全都是键值对,根据key进行存取value
mysql软件安装好,机器上就有一个客户端,一个服务端
ini为后缀的是 配置文件
如果只作为客户端使用,则只需要配置[mysql] 即可
[client] :针对所有客户端
如果只作为服务端使用,则只需要配置[mysqld] 即可
如果既作为客户端,也作为服务端,则 [mysql]和[mysqld] 都要配置
注意:
都是使用客户端,跟服务端进行交互
数据库的服务端可以是在本机, 也可以是在外部主机
mysql.exe 客户端的套接字软件
mysqld.ext服务端的套接字软件
utf8mb4 编码: 相较utf8,功能更加强大, 还能存储一些表情字符
mysql中的文件分为两种: 结构(frm) 和 数据(.ibd)
查看 库/表 的结构
show create table t1
查看 库/表 的数据:
show table t1
库(database) 和 表(table), 查增删改的关键字相同 : show create drop alter
记录(recode) , 则不同 : select insert delete update
注意: delete的速度不高, 所以清空整张表, 应该用truncate
另外, delete的删除的同时主键如果设置自增加,则自动增加不会消除
引擎:
文件就像池塘,里面装着数据
存储引擎就是一段代码, 像水泵
通过 水泵 进行抽水 送水
打开数据库后,
当涉及表的操作时候,必须要指定是 use 哪一个数据库.
因为表是位于 数据库中的, 不指明是哪一个数据库,则无法唯一定位到一个表.
select user(); # 查看当前操作的用户是谁
select database(); # 查看当前操作的数据库是哪一个
-------------------------------------------------> 自行整理 <---------------------------------------------------
所有MySQL命令的列表:
请注意,所有文本命令必须首先在行上并以“;”结尾
? (\?)“帮助”的同义词。
clear (\c)清除当前输入语句。
connect (\r)重新连接到服务器。可选参数是db和host。
定界符 (\d)设置语句定界符。
自我 (\G)发送命令到mysql服务器,垂直显示结果。
退出 (\q)退出mysql。与退出相同。
go (\g)发送命令到mysql服务器。
帮助 (\h)显示此帮助。
notee (\t)不要写入outfile。
print (\p)打印当前命令。
提示符 (\R)更改您的mysql提示符。
退出 (\q)退出mysql。
rehash (\#)重建完成哈希。
源 (\.)执行一个SQL脚本文件。以文件名作为参数。
status (\s)从服务器获取状态信息。
tee (\T)设置输出文件[to_outfile]。将所有内容附加到给定的文件外。
使用 (\u)使用另一个数据库。将数据库名称作为参数。
字符集 (\C)切换到另一个字符集。处理具有多字节字符集的binlog可能需要。
警告 (\W)在每个语句之后显示警告。
nowarning(\w)不要在每条语句后显示警告。
resetconnection(\ x)清空会话上下文。
要获取服务器端帮助,请输入“帮助内容”
mysql>
-----------------------------------------------------
注意: mysql语句结尾要加分号;
1. 登录进mysql
@localhost> mysql -u root -p # 进入mysql的登录界面
2. 查看mysql下的所有的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| db2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
3. 新建数据库
create database db1 charset utf8;
4 删除数据库
DROP DATABASE 数据库名;
5 修改数据库
alter database db1 charset utf8;
6. 进入/切换到 指定数据库
mysql> use db1;
Database changed
7. 查看当前数据库下的所有的表
# mysql> use db2;
# Database changed
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| t2 |
| t33 |
+---------------+
2 rows in set (0.00 sec)
8. 创建表
CREATE TABLE t1 (
id INT,
NAME VARCHAR (50),
sex enum ('male', 'female'),
age INT (3) ->
);
命令行格式下,也写成这种形式, 可以分成多行写, 最后再加一个分号表示结尾
mysql-> create table t1(
-> id int,
-> name varchar(50),
-> sex enum('male','female'),
-> age int(3)
-> );
9. 查看表详细结构
mysql> describe t2; # 查看表结构
mysql> desc t2; # 还可简写为desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | enum('male','female') | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-----------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
10. 删除表
DROP TABLE 表名;
11. 修改表
1. 修改表名
ALTER TABLE 表名
RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
3. 删除字段
ALTER TABLE 表名
DROP 字段名;
4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
----------------------------------- 表内数据的具体操作: 查、增、删、改
查
select * from studnet
select id,name from student
增:
1. 插入完整数据(顺序插入)
语法一:
INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);
语法二:
INSERT INTO 表名 VALUES (值1,值2,值3…值n);
2. 指定字段插入数据
语法:
INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);
3. 插入多条记录
语法:
INSERT INTO 表名 VALUES
(值1,值2,值3…值n),
(值1,值2,值3…值n),
(值1,值2,值3…值n);
4. 插入查询结果
语法:
INSERT INTO 表名(字段1,字段2,字段3…字段n)
SELECT (字段1,字段2,字段3…字段n) FROM 表2
WHERE …;
删:
语法:
DELETE FROM 表名
WHERE CONITION;
示例:
DELETE FROM mysql.user
WHERE password=’’;
练习:
更新MySQL root用户密码为mysql123
删除除从本地登录的root用户以外的所有用户
改:
语法:
UPDATE 表名 SET
字段1=值1,
字段2=值2,
WHERE CONDITION;
示例:
UPDATE mysql.user SET password=password(‘123’)
where user=’root’ and host=’localhost’;
模糊查询,用 LIKE
% :任意个字符
_ :一个字符
=======================================> 1. msyql相关概念介绍 <==================================================
mysql=》数据库管理软件,本质就是一个套接字程序
字段=》标题
记录=》文件中的一行内容
表=》文件
库=》文件夹
数据库管理软件=》套接字软件
数据服务器=》运行有数据库管理软件服务端的计算机
关系型
orcale db2 sqlserver mysql
非关系型
redis、memcache、mongodb
=======================================> 2. msyql基本管理 <=======================================================
# 设置密码
update mysql.user set password=password("123") where user="root" and host="localhost";
flush privileges;
# 忘记密码
(1)先关闭mysqld服务端
(2)重新启动:mysqld --skip-grant-tables
(3) 启动客户端:mysql -u
update mysql.user set password=password("") where user="root" and host="localhost";
flush privileges;
(3)重新启动mysqld
=========================================>3 mysql语句基础 <==========================================================
# =======================1、库操作=>文件夹=======================
create database db1 charset utf8mb4;
show databases;
show create database db1;
alter database db1 charset gbk;
drop database db1;
# =======================2、表操作=》文件=======================
create database db1;
# 切换文件夹
use db1;
select database();
create table db1.t1(id int,name char);
# 查看所有的表名
show tables;
# 查看刚刚创建表的命令
show create table db1.t1;
# 查看创建成功的表的结构
desc t1;
alter table t1 rename tt1;
alter table tt1 modify name char(10);
alter table tt1 change name mingzi char(3);
drop table tt1;
# =======================3、记录操作=》文件中的一行内容=======================
insert t2 values(1,"egon");
insert t2 values(2,"tom"),(3,"lxx"),(4,"hxx");
insert t2(id) values(5),(6);
select * from t2;
select name from t2 where id=3;
update t2 set name="lxx",id=444 where id=4;
delete from t2 where id=444;
清空整张表:
truncate t2
create table t3(id int primary key auto_increment,name char(10));
insert t3(name) values("egon"),("tom"),("jack");