Mac上安装MySQL以及MySQL基本操作
# 一、MySQL 安装
# 1、安装 mysql
brew install mysql
# 2、启动、关闭、重启 mysql
mysql.server start #启动
mysql.server stop #关闭
mysql.server restart #重启
2
3
4
5
# 3、执行安全设置
mysql_secure_installation
按照提示选择密码等级并设置 root 密码。
# 4、登录 mysql
#登录本机的MySQL数据库
mysql -u root -p
/*
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
*/
mysql -h 主机名 -u 用户名 -p
2
3
4
5
6
7
8
9
按提示输入 root 密码
# 二、MySQL 基本操作
# 1、创建数据库
CREATE DATABASE 数据库名;
如果数据库已存在,则会创建失败,创建时,一般会先判断数据库是否存在,如不存在再创建
#创建一个数据库,指定默认字符集为utf8,默认校对规则为utf8_chinese_ci(简体中文,不区分大小写)
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_chinese_ci;
2
# 2、删除数据库
DROP DATABASE 数据库名;
如果数据库不存在,执行上面操作会报错,此时可以使用 IF EXISTS,判断是否存在,如存在再进行删除操作
DROP DATABASE IF EXISTS 数据库名;
ps:此操作慎用,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。因此最好在删除数据库之前先将数据库进行备份。
# 3、选择数据库
在 MySQL 中有许多系统自带的数据库,因此在操作前需要确定是哪一个数据库,当用 CREATE DATABASE 语句创建数据库后,该数据库不会自动成为当前数据库,需要使用 USE 来指定当前数据库
use 数据库名;
# 4、创建表
CREATE TABLE table_name (column_name column_type);
示例代码:
root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_tbl(
-> runoob_id INT NOT NULL AUTO_INCREMENT,
-> runoob_title VARCHAR(100) NOT NULL,
-> runoob_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
说明:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为 NULL ,就会报错。
AUTO_INCREMENT 定义列为自增的属性,一般用于主键,数值会自动加 1。
PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
注意:MySQL 命令终止符为分号;。
注意: -> 是换行符标识,不要复制。
# 5、删除表
DROP TABLE table_name;
# 6、查看表
SHOW TABLES;
# 7、插入数据
INSERT INTO table_name (field1, field2, ...fieldN)
VALUES
(value1, value2, ...valueN);
2
3
ps:注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;。
# 8、查询数据
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
#例如:读取user_list表中所有数据
select * from user_list;
2
3
4
5
6
7
# 9、删除数据
DELETE FROM table_name [WHERE Clause]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE 子句中指定任何条件
# 10、更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
2
# 11、修改表,添加字段
ALTER TABLE table_name ADD column_name column_type;
-- 例如,如下语句将为user_list表添加一个新字段id_card,为char类型,可存储20个字符。
ALTER TABLE user_list ADD id_card char(20);
2
3
4
# 12、修改表,修改字段
ALTER TABLE table_name CHANGE column_name1 column_name2 column_type;
-- 例如,将user_list表中id_card字段修改为idCard字段
ALTER TABLE user_list CHANGE id_card idCard char(20);
2
3
4
# 13、查询表结构
DESC table_name;
# 14、修改表,删除字段
ALTER TABLE table_name DROP column_name;
# 删除user_list表中的id_card字段
ALTER TABLE user_list DROP id_card;
2
3
4
# 15、多表查询
# 例如,同时从students表和classes表中查询
SELECT * FROM students, classes;
/*
当上述表查询结果中有两个id,两个name的时候,在结果集中不好区分,
这时候可以利用投影查询的“设置列别名”来给两个表各自的id和name起别名
*/
SELECT
students.id sid,
students.name,
students.gender,
students.score,
classes.id cid,
classes.name cname
FROM students, classes;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意:多表查询时,要使用 表名。列名 这样的方式来引用列和设置别名,这样避免了结果集的列名重复问题。可能你发现了,使用 表名。列名 这种方式来列举两个表所有列很繁琐,MySQL 考虑到了这点,贴心的提供了给表设置别名的功能。
SELECT
s.id sid,
s.name,
s.gender,
s.score,
c.id cid,
c.name cname
FROM students s, classes c;
2
3
4
5
6
7
8
注意:FROM 子句给表设置别名的语法是 FROM 表名 1 别名 1, 表名 2 别名 2。这样用别名 s 和 c 分别表示 students 和 classes 表。
# 16、聚合查询
# 查询表总条数
SELECT COUNT(*) FROM students;
# 查询的时候可以给列起个别名,便于处理结果, COUNT(*)和COUNT(id)效果一样
SELECT COUNT(*) num FROM students;
2
3
4
5
常用聚合函数:
函数 | 说明 |
---|---|
COUNT | 计算所有列的行数 |
SUM | 计算某一列的合计值,该列必须为数值类型 |
AVG | 计算某一列的平均值,该列必须为数值类型 |
MAX | 计算某一列的最大值 |
MIN | 计算某一列的最小值 |