MySQL

1. 创建数据库

create database test_db;

MySQL 不允许在同一系统创建两个相同名称的数据库。
如果加上IF NOT EXISTS从句,则可以避免类似错误。

create database if not exists test_db;

创建 MySQL 数据库时指定字符集和校对规则

create database if not exists test_db_char
default CHARACTER set utf8
default COLLATE utf8_chinese_ci;(mysql5.5版本及以上)

create database if not exists test_db_char
default CHARACTER set utf8
default COLLATE utf8_general_ci;(mysql5.5版本及以下)

查看数据库定义声明

show create database test_db;
运行结果

2. 查看数据库

1. 查看所有数据库

show databases;

2、使用like从句查看

  • 查看与test完全匹配的数据库
    show databases like ‘test’;
    在这里插入图片描述
    - 查看名字中包含 test 的数据库:
    show databases like ‘%test%’;
    在这里插入图片描述
  • 查看名字以 test 开头的数据库
    show databases like ‘test%’;
    在这里插入图片描述
  • 查看名字以 test 结尾的数据库
    show databases like ’%test‘;
    在这里插入图片描述

3. 修改数据库

先查看数据库的定义声明
show create database test_db;
在这里插入图片描述

4. 删除数据库

drop database bbs;
在这里插入图片描述
若删除已经不在的数据库,会报此类错误
在这里插入图片描述
为避免报此类错误可用 drop database if exists bbs;
在这里插入图片描述

5.选择数据库

use test;
在这里插入图片描述

6.数据库MySQL存储引擎

查看系统所支持的引擎类型
show engines;
在这里插入图片描述
MySQL存储引擎优缺点
在这里插入图片描述
可以根据以下的原则来选择 MySQL 存储引擎:

  • 如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。
  • 如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
  • 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL
    中使用该引擎作为临时表,存放查询的中间结果。
  • 如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive
    存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用
    Archive 引擎。

提示:使用哪一种引擎要根据需要灵活选择,一个数据库中多个表可以使用不同的引擎以满足各种性能和实际需求。使用合适的存储引擎将会提高整个数据库的性能。
修改数据库临时的默认存储引擎
set default_storage_engine=引擎名字
set default_storage_engine=InnoDB;
在这里插入图片描述
在这里插入图片描述
但是当再次重启客户端时,默认存储引擎仍然是 MyISAM 。

7.数据库MySQL常见数据类型

1. 整数类型
tinyint、smallint、mediumnt、int、bigint、float、double、定点数类型decimal
在这里插入图片描述
在这里插入图片描述
2. 日期、时间类型
year、time、date、datetime、timestamp
在这里插入图片描述
3. 字符串类型
char、varchar、 varbinary、blob、text、enum、set等
5. 二进制类型
bit、binary、varbinary、tinyblob、blob、mediumblob、longblob

8.创建数据库表

1. 先使用数据库
use test_db;

2. 创建表emp1
create table emp1
(
id int(25),
name varchar(225),
sex varchar(225),
number int(50)
);
在这里插入图片描述
3. 查看表结构
describe emp1;
简写
desc emp1;
在这里插入图片描述

9.修改数据库表

1. 添加字段

表的第一列添加一个 int 类型的字段 age4
alter table emp1 add age2 int first;
在这里插入图片描述
列 name 后添加一个 int 类型的字段 name2
alter table emp1 add name2 int after name;
在这里插入图片描述

2. 修改字段数据类型
把字段name2的数据类型由int改为varchar(200)
alter table emp1 modify name2 varchar(200) ;
在这里插入图片描述

3.删除字段
删除表emp中的age4字段
alert table emp1
drop age4;
在这里插入图片描述
4、修改字段名称
修改表emp1中字段name2改为name3
alert table emp1
change name2 name3 varchar(100)
在这里插入图片描述
5、修改表名称
把表名emp1改为emp
alter table emp1
rename to emp;
在这里插入图片描述

10.删除数据库表

use test_db;
create table emp1
(
id int(11),
name varchar(100)
);
show tables;
drop table emp1;
show tables;
在这里插入图片描述

11.MySQL主键(PRIMARY KEY)

在创建表时设置主键约束

  • create table emp1 (
    id int(11) primary key,
    name varchar(220),
    unmber float )default CHARACTER set utf8 default COLLATE utf8_general_ci;
  • create table key_2 (
    id int(11),
    name varchar(220),
    unmber float ,
    primary key(id)
    )default CHARACTER set utf8 default COLLATE utf8_general_ci;

在这里插入图片描述
在创建表时设置复合主键

  • create table key_3 (
    id int(11),
    id2 int(11),
    name varchar(220),
    unmber float ,
    primary key(id,id2)
    )default CHARACTER set utf8 default COLLATE utf8_general_ci;
    在这里插入图片描述
    在修改表时添加主键约束
  • alter table key_4 add primary key(id);
    在这里插入图片描述

12.MySQL外键约束(FOREIGN KEY)

MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。

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

外键是表的一个字段,不是本表的主键,但对应另一个表的主键。定义外键后,不允许删除另一个表中具有关联关系的行。

外键的主要作用是保持数据的一致性、完整性。例如,部门表 dept 的主键是 id,在员工表 tb_emp5 中有一个键 deptId 与这个 id 关联。

  • 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。
  • 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表

在创建表时设置外键约束

  • create table name3
    (
    id int(11),
    name varchar(220),
    number int(25),
    constraint name1
    foreign key(name) references name1(id)

    )default CHARACTER set utf8 default COLLATE utf8_general_ci;
    在这里插入图片描述

在修改表时添加外键约束

  • alter table name2
    add constraint name1
    foreign key(name) references name1(id);

在这里插入图片描述
在这里插入图片描述

13.插入数据

向表中的全部字段添加值
1.先创建一个表class1

  • create table class1
    (
    class_id int not null,
    class_name varchar(50) not null,
    class_grade float not null,
    primary key(class_id)
    ) default CHARACTER set utf8 default COLLATE utf8_general_ci;
    在这里插入图片描述
    2.查看表内容
    (此时为空)
    select * from class1;
    在这里插入图片描述
    3.向表中插入数据

  • 按表字段顺序添加

  • insert into class1
    (class_id,class_name,class_grade )
    values
    (1,‘math’,89);

  • 查看数据
    在这里插入图片描述

  • 不按表字段顺序添加

  • insert into class1
    (class_name,class_grade,class_id)
    values
    (‘English’,90,2);

  • 查看数据在这里插入图片描述

  • 不输入表字段添加

  • insert into class1
    values
    (5,‘chinese’,98);

    • 查看数据在这里插入图片描述

向表中指定字段添加值

  • insert into class1
    (class_id,class_name)
    values
    (8,‘py’);
    在这里插入图片描述
    在这里插入图片描述

4.使用 INSERT INTO…FROM 语句复制表数据

先创建表class2,字段与class1一样

  • create table class2
    (
    class_id int not null,
    class_name varchar(50) not null,
    class_grade float not null,
    primary key(class_id)
    )default CHARACTER set utf8 default COLLATE utf8_general_ci;
    在这里插入图片描述
    查看class2数据为空
  • select * from class2;
    在这里插入图片描述
    复制表class1的数据到表class2中
  • insert into class2
    (class_id,class_name,class_grade)
    select
    class_id,class_name,class_grade
    from class1;
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值