MySQL
MySQL
https://dev.mysql.com/downloads/mysql/
双击安装
傻瓜式安装
修改环境变量
新建或者打开.bash_profile 文件
打开.bash_profile 文件输入下面的环境配置
export PATH=${PATH}:/usr/local/mysql/bin
在.zshrc 文件下配置 source ~/.bash_profile
Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "报错问题
cd /usr/local/mysql
sudo ./bin/mysqld_safe
8.0 以后版本的 mysql
mysql8 之前的版本中加密规则是 mysql_native_password,而在 mysql8 之后,加密规则是 caching_sha2_password
登录
查看 mysql 版本
修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'react521' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'react521';
刷新权限
FLUSH PRIVILEGES;
登录
mysql -u root -p
数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)
表(table) 某种特定类型数据的结构化清单
创建数据库
create database db_name;
查询已有的数据库
返回可用数据库的一个列表
show databases;
使用数据库
use db_name;
删除数据库
drop database testone;
创建表
create table pirate(id int not null,name char(60) null,address varchar(60) null,sex char(20) null,age char(20) null,primary key(id));
AUTO_INCREMENT
告诉 MySQL,本列每当增加一行时自动增量。每次执行一个 INSERT 操作时,MySQL 自动对该列增量(从而才有这个关键字 AUTO_INCREMENT ),给该列赋予下一个可用的值
PRIMARY KEY
表的主键可以在创建表时用 PRIMARY KEY 关键字指定。
更新列
alter table navy add intro varchar(600)
添加主键
主键 一列(或一组列),其值能够唯一区分表中每个行
唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行
任意两行都不具有相同的主键值
每个行都必须具有一个主键值(主键列不允许 NULL 值)
数据插入
INSERT 是用来插入(或添加)行到数据库表的
插入完整的行
要求指定表名和被插入到新行中的值
insert into pirate values(1,'凯多','和之国鬼岛','男',30);
插入多个行
insert into pirate(id,name,address,sex,age) values(2,'夏洛特·玲玲','拖特兰','女',28),(3,'爱德华·纽盖特','能力是被誉为最强超人系的震震果实','男',35);
更新数据
更新(修改)表中的数据,可使用 UPDATE 语句
update pirate set address = '不知名的一座小岛' where id = 3;
UPDATE 语句总是以要更新的表的名字开始。在此例子中,要更新的表的名字为 pirate 。SET 命令用来将新值赋给被更新的列。
UPDATE 语句以 WHERE 子句结束,它告诉 MySQL 更新哪一行。
删除数据
一个表中删除(去掉)数据,使用 DELETE 语句。
delete from pirate where id = 4;
更快的删除 如果想从表中删除所有行,不要使用 DELETE 。可使用 TRUNCATE TABLE 语句,它完成相同的工作,但速度更快(TRUNCATE 实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。
排序数据
为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。
单列排序
select * from eagle_team order by num;
按照 num 排序
按多个列排序
select name,num from eagle_team order by name,num;
指定排序方向
select * from eagle_team order by num desc;
DESC 关键字只应用到直接位于其前面的列名。
与 DESC 相反的关键字是 ASC (ASCENDING ),在升序排序时可以指定它。但实际上,ASC 没有多大用处,因为升序是默认的(如果既不指定 ASC 也不指定 DESC ,则假定为 ASC )。
使用 ORDER BY 和 LIMIT 的组合,能够找出一个列中最高或最低的值。
select * from eagle_team order by num desc limit 1;
过滤数据
使用 SELECT 语句的 WHERE 子句指定搜索条件。
数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。
在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名(FROM 子句)之后给出
select * from eagle_team where id = 1;
WHERE 子句操作符
数据过滤
AND 操作符
更新表
更新表定义,可使用 ALTER TABLE 语句
查询所有的表
返回当前选择的数据库内可用表的列表。
show tables;
查看表的基本信息
desc pirate;
检索数据
SELECT 检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
检索单个列
利用 SELECT 语句从 products 表中检索一个名为 prod_name 的列。所需的列名在 SELECT 关键字之后给出,FROM 关键字指出从其中检索数据的表名
select name from student;
检索多个列
select name,age,home from student;
检索所有列
给定一个通配符(* ),则返回表中所有列。
select * from student;
检索不同的行
select distinct name from eagle_team;
限制结果
SELECT 语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用 LIMIT 子句。
带一个值的 LIMIT 总是从第一行开始,给出的数为返回的行数。带两个值的 LIMIT 可以指定从行号为第一个值的位置开始。
select * from eagle_team limit 3;
select * from eagle_team limit 2,3;
MySQL 数据类型
串数据类型
不管使用何种形式的串数据类型,串值都必须括在引号内(通常单引号更好)
如果数值是计算(求和、平均等)中使用的数值,则应该存储在数值数据类型列中。如果作为字符串(可能只包含数字)使用,则应该保存在串数据类型列中。
数值数据类型
日期和时间数据类型
二进制数据类型
二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档