JingBin's Home

数据库基础

我坚信在行动之前,必须先有足够的观察和知识。 - 奇异博士

  • 持久化操作:保存到数据库
  • 主键:用户表里的id,唯一标识
  • 外键:另一个表里引用的用户id,外键

下载mysql 配置环境 更改密码:a12345678

Navicat Premium for Mac的破解教程 注意时间戳是今天的时间-2019-02-20 12:00:00

命令行操作(一般来说关键字都用大写):

1
2
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin
启动mysql
mysql
// 更换密码:
mysqladmin -u root -p password
登录:
mysql -u root -p

数据库操作

;是结束符

  • 1.创建数据库
    create database mysql_0219;

  • 2.查看所有数据库
    show databases;

  • 3.使用数据库
    use mysql_0219;

  • 4.删除数据库
    drop database mysql_0219;

  • 5.查看数据库状态
    status (注意编码:utf-8)

表的创建与管理:

  • 1.创建表
    create table t_user1(id int,name varchar(20),age int,birthday date);

  • 2.修改表
    alter table t_user1 rename t_user2;

  • 3.查看具体表
    desc t_user2;

  • 4.查看所有表
    show tables;

  • 5.删除
    drop table t_user2;

  • 6.表中添加字段

1
2
alter table 表名称 add 字段名称 字段类型
alter table t_user1 add sex varchar(3);
  • 7.修改表中的字段
1
2
3
alter table t_user1 change name user_name varchar(3);
// 更改表的类型名称 布尔为 tinyint(1)
alter table t_user1 modify user_name varchar(2);
  • 8.删除表重的字段
    alter table t_user1 drop birthday;

表数据更新:

  • 1.数据插入
    insert into t_user1(id,user_name,age,sex) values('1','ad','22','男');

  • 2.查看数据
    select * from t_user1;

  • 3.数据更新

1
2
3
4
单条
update t_user1 set user_name='admin' where id=1;
多条
update t_user1 set age=33,sex='女' where id=1;
  • 4.删除数据
1
2
delete from t_user1 where id =2;
delete from t_user1;(清空表)

约束条件

非空约束 唯一约束 主键约束 主外键约束

图形化连接:

使用 Navicat for MySQL 输入密码:a123456789 新建查询创建

非空约束:

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE t_user2(
id int,
name VARCHAR(2) not null
);
show TABLES;
INSERT INTO t_user2(id,name) VALUES(1,23);
-- INSERT INTO t_user2(id,name) VALUES(1,null);
SELECT * FROM t_user2;

唯一约束:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE t_user3(
id int,
name VARCHAR(30) not null,
email VARCHAR(20) UNIQUE -- 唯一约束,邮箱不允许重复
);
INSERT INTO t_user3(id,name,email) VALUES(1,23,'[email protected]');
INSERT INTO t_user3(id,name,email) VALUES(2,333,'[email protected]');
SELECT * FROM t_user3;

主键约束:

1
2
3
4
5
6
7
8
9
10
DROP TABLE t_user3;
CREATE TABLE t_user3(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键唯一不能为null,自增
name VARCHAR(30) not null,
email VARCHAR(20) UNIQUE -- 唯一约束,邮箱不允许重复
);
INSERT INTO t_user3(name,email) VALUES(23,'[email protected]');
INSERT INTO t_user3(name,email) VALUES(2223,'[email protected]');

主外键约束:

一般不会建,不能单独删除这个约束表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键不能为 null,且不能重复,自增
name VARCHAR(30) not null
);
CREATE TABLE t_order(
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键不能为 null,且不能重复,自增
order_name VARCHAR(30),
user_id int,
CONSTRAINT user_id_fk FOREIGN key (user_id) REFERENCES t_user(id) -- 添加外键
);
INSERT INTO t_user(name) VALUES('amdin');
SELECT * FROM t_user;
INSERT INTO t_order(order_name,user_id) VALUES('订单1',1);
INSERT INTO t_order(order_name,user_id) VALUES('订单2',2);// 报错
SELECT * FROM t_order;

Mysql的备份与恢复

备份

导出数据库:

mysqldump -u root -p mysql_0219>/Users/jingbin/Documents/LearningFile/S-Mybatis/mysql_0219.sql;

一、Mac os导出Mysql数据库

1.打开终端,

2.执行: cd 要导出到的目录 (如:cd /Users/jingbin/Documents/LearningFile/mysql)

3.执行:

1
2
3
4
  alias mysqldump=/usr/local/mysql/bin/mysqldump
  mysqldump -u root -p 要导出的数据库名>名字随意.sql
  (如:mysqldump -u root -p mysql_0219>mysql_0219.sql;) 输入数据密码
此时,会在/Users/jingbin/Documents/LearningFile/mysql中发现已经导出的.sql文件:mysql_0219.sql。

导出数据库里对应的表:

1
mysqldump -u root -p mysql_0219 t_user>mysql_0219_user.sql;

恢复

1
2
3
4
5
6
create database mysql_back;
use mysql_back;
show tables;
source /Users/jingbin/Documents/LearningFile/mysql/mysql_0219_user.sql
show tables;
select * from t_user;