Mysql 学习笔记01

时间:2022-04-27 16:26:14

一、登录Mysql

  安装Mysql,配置好环境变量,打开命令窗口(Windows),使用命令Mysql -u  username -p 回车,输入密码登录

  Mysql 学习笔记01

二、操作数据库

  1.查看数据库  show databases;

  Mysql 学习笔记01

  2.创建数据库 create database db_name

  Mysql 学习笔记01

  查看创建的好的数据库的定义 show create database db_name

  Mysql 学习笔记01

  再次查看数据库是否新增test_db数据库

  Mysql 学习笔记01

  3.使用数据库 use db_name;

  Mysql 学习笔记01

  代表使用test_db,之后就可以对该数据进行表的操作了,如show tables 等

  4.删除数据库 drop database db_name;

  Mysql 学习笔记01

  再次查看数据库

  Mysql 学习笔记01

  test_db数据库已删除

  5.数据库引擎查看 show engines;

  Mysql 学习笔记01

  不同的表可以使用不同的合适的引擎,从而提高性能。

   6.查看默认的存储引擎  

show variables like '%engine';

  Mysql 学习笔记01

三、操作数据表

  创建数据库 create database test_db;

        使用数据库 use test_db;

1.创建表 

CREATE TABLE table_name(
  字段1 数据类型
[列级别约束条件][默认值],
  字段2 数据类型
[列级别约束条件][默认值],
  ......
  
[表级别约束条件]
  )

1.1简单的员工表

CREATE TABLE tb_emp1
(
id
INT(11),
NAME
VARCHAR(25),
deptid
INT(11),
salary
FLOAT
);

Mysql 学习笔记01

1.2使用主键

a.单字段主键

CREATE TABLE tb_emp2
(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(25),
deptid
INT(11),
salary
FLOAT
);
CREATE TABLE tb_emp3
(
id
INT(11) ,
NAME
VARCHAR(25),
deptid
INT(11),
salary
FLOAT,
PRIMARY KEY(id)
);

上面的都是在id列上设置了主键

b.多字段联合主键

CREATE TABLE tb_emp4
(
NAME
VARCHAR(25),
deptid
INT(11),
salary
FLOAT,
PRIMARY KEY(NAME,deptid)
);

name和deptid组合在一起为表tb_emp4的联合主键,name和deptid都相同的两条数据则只能存在一条。

1.3 使用外键约束

  外键是用来在两个表的数据之间建立连接,它可以是一个或多个列,一个表可以有一个或多个外键。

       外键的对应是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于两一个表中主键的值,

  定义外键后,不允许删除在另一个表中具有关联关系的行。

       主表:对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表

       从表:对于两个具有关联关系的表而言,相关联字段中外键所在的表即是 从表

语法:

[CONSTRAINT 外键名] FOREIGN KEY(字段名,..) REFERENCES <主表名>(主键列,..)

例子:

CREATE TABLE tb_dept1(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(22),
location
VARCHAR(50)
);


CREATE TABLE tb_emp5
(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(25),
deptid
INT(11),
salary
FLOAT,
CONSTRAINT fk_emp_demp1 FOREIGN KEY(deptid) REFERENCES tb_dept1(id)
);

1.4 非空约束

非空约束指的是字段值不能为空,必须要有值

字段值 数据类型 not null
CREATE TABLE tb_emp6(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(22) NOT NULL,
deptid
INT(11),
salary
FLOAT
);

1.5 唯一性约束

唯一性约束指的是要求该列唯一,允许为空,唯一性约束确保一列或几列不出现重复的值

字段值 数据类型 unique
CREATE TABLE tb_dept2(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(22) UNIQUE,
location
VARCHAR(50)
);
最后指派,效果和上面一样:
[
CONSTRAINT <约束名>] UNIQUE(字段名)
CREATE TABLE tb_dept3(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(22) ,
location
VARCHAR(50),
CONSTRAINT sth UNIQUE(NAME)
);

UNIQUE 和 PRIMARY KEY 的区别,表中可以多列为UNIQUE,允许存在NULL值,但是只能声明一个PRIMARY KEY,不允许NULL值

1.6 默认约束

某列在不设置值的情况下自动默认一个值

字段名 数据类型 default 默认值 
CREATE TABLE tb_emp7(
id
INT(11) PRIMARY KEY,
NAME
VARCHAR(22) NOT NULL,
deptid
INT(11) DEFAULT 11,
salary
FLOAT
);

1.7 主键自动增加

字段名 数据类型 AUTO_INCREMENT
CREATE TABLE tb_emp8(
id
INT(11) PRIMARY KEY AUTO_INCREMENT,
NAME
VARCHAR(22) NOT NULL,
deptid
INT(11),
salary
FLOAT
);

每次插入值的时候id会从1开始自动增加

2.查看数据表的结构

2.1 查看表的基本结构

DESCRIBE 表名;
或者
DESC 表名;

Mysql 学习笔记01

2.2 查看表的创建语句

SHOW CREATE TABLE <表名\G>

Mysql 学习笔记01

Mysql 学习笔记01

有没有\G的区别,\G看着清晰点

3.修改数据表

3.1修改表名

ALTER TABLE <旧表名> RENAME [TO] <新表名>

Mysql 学习笔记01

3.2 修改字段的数据类型

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

Mysql 学习笔记01

3.3 修改字段名

ALTER TABLE <表名> CHANGE <旧字段名><新字段名><新数据类型>

Mysql 学习笔记01

3.4添加字段

ALTER TABLE <表名> ADD <新字段名><数据类型> [约束条件][FIRST | AFTER 已存在的字段名]
ALTER TABLE tb_emp1 ADD managerId;
ALTER TABLE tb_emp1 ADD column1 VARCHAR(10) NOT NULL;
ALTER TABLE tb_emp1 ADD fistCol VARCHAR(12) FIRST;
ALTER TABLE tb_emp1 ADD secName VARCHAR(30) AFTER e_name;

Mysql 学习笔记01

3.5 删除字段

ALTER TABLE <表名> DROP <字段名>
ALTER TABLE tb_emp1 DROP column1;

Mysql 学习笔记01

3.6 修改字段的位置

ALTER TABLE <表名> MODIFY <字段1><数据类型> FIRST | AFTER <字段2>
ALTER TABLE tb_emp1 MODIFY managerId INT(12) FIRST;
ALTER TABLE tb_emp1 MODIFY deptid INT(11) AFTER salary;

Mysql 学习笔记01

3.7 更改表的存储引擎

ALTER TABLE <表名> ENGINE=<更改后的引擎名>

Mysql 学习笔记01

ALTER TABLE tb_emp1 ENGINE=MYISAM

Mysql 学习笔记01

3.8 删除表的外键约束

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
create table tb_emp9(
id
int primary key auto_increment,
name
varchar(30),
salary
float,
deptId
int(11),
constraint fk_emp9_dept1 foreign key (deptId) references tb_dept1(id)
);
alter table tb_emp9 drop foreign key  fk_emp9_dept1;

4.删除数据表

4.1 删除没有被关联的表

DROP TABLE [IF EXISTS] 表1,表2,表3...

Mysql 学习笔记01

4.2 删除被其他表关联的主表

  删除语句和上面的一样,但是需要先将外键约束删掉之后再删除主表即可。