MySQL整体使用》导入数据、约束、多表查询、事务、变量类型、资源占用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 我发的MySQL相关内容

C#基础知识体系框架图及起对应我发过的博客

linux安装mysql8配置使用并解决常见问题

MySQL常用命令DQL

执行脚本命令本地生成SQL文件后在服务器执行

// 进入mysql命令控制
mysql
// 如果database已经存在就先删除
show databases;
drop database xx;
// 执行命令添加如果命令中没有选中对应database则需要创建后进入该dadabase再执行以下命令
source /root/web/xx20220805.sql;
quit

约束

drop table if exists emp;# 表格存在则删除

create table emp (
    id int primary key auto_increment,-- 员工id主键且自增长
    ename varchar(50) not null unique, -- 员工姓名非空且唯一
    joindate date not null,-- 入职日期非空
    salaray double(7, 2) not null,-- 工资非空
    bonus double(7, 2) default 0-- 奖金如果没有设置默认为0
);

insert into emp values(1, '张三', '1991-11-11', 8000, 5000);
select * from emp;
-- 建完表后添加非空约束
# alter table 表名 modify 字段名 数据类型 not null;
-- 删除约束
# alter table 表名 modify 字段名 数据类型;

外界约束

需要先创建主表再创建从表两个表之间关联关系

 示例代码

drop table if exists emp;# 表格存在则删除
-- 部门表
create table dept(
id int primary key auto_increment,
    dep_name varchar(20),
    addr varchar(2)
);
-- 员工表
create table emp(
id int primary key auto_increment,
    name varchar(20),
    age int,
    dep_id int,
    -- 添加外键dep_id关联id主键
    constraint fk_emp_dept foreign key(dep_id) references dept(id)
);
-- 添加必须按照这个顺序先添加父类再添加子类
insert into dept(dep_name, addr) values('研发部', '广州'), ('销售部', '深圳');
insert into emp(name, age, dep_id) values
('张三', 20, 1),
('李四', 20, 1),
('王五', 20, 1),
('赵六', 20, 2),
('孙七', 23, 2),
('周八', 16, 2);

select * from emp;

-- 删除时需要把子类删除完再删父类

-- 删除外键关联关系
alter table emp drop foreign key fk_emp_dept;

-- 建表后添加外键
alter table emp add constraint fk_emp_dept foreign key(dep_id) references dept(id);

数据库设计

表关系一对多

        上面的一个部门对应多个员工多对一与之相反

表关系多对多

        建立第三张中间表。中间表至少包含2个快键分别关联双方主键。

表关系一对一

        在任意一方建立外键关联对方主键并设置外键唯一

 多表查询

-- 多表查询
select * from emp, dept;# 取所有集合的组合关系显示内容太多需要筛选
select * from emp, dept where emp.dep_id = dept.id;# 内连接按照id相同的来显示会比上一个少显示
select * from emp inner join dept on emp.dep_id = dept.id;# 同上
select * from emp left join dept on emp.dep_id = dept.id;# 左半连接查询
select * from emp right join dept on emp.dep_id = dept.id;# 右半连接查询
# 多表查询获取部门属于广州的ID用该id在员工中查找信息
select * from emp where dep_id in (select id from dept where addr = '广州')

事务

整体数据更改前begin正常执行完后commit提交中间出现错误rollback回滚到begin时数据保证数据正常保存或执行完。

begin;        # 开始事物
rollback;     # 终止事物从begin开始的全部回滚
commit;       # 结束事物正常执行完

 数据库连接池

        多个用户访问数据库连接和关闭比较浪费资源多个连接后动态分配给用户已解决这个问题。 

 创建表格时如下关键字功能

PKPrimary Key, 主键

NNNot Null, 非空

UQUnique, 唯一索引具有unique属性的列确保所有的记录的值都不同。

BINBinary 二进制数据(比text更大的二进制数据)

UNunsigned 无符号 整数非负数

ZFZero fill用0填充所有剩余空间例如int(4)而值为1时则内容显示为0001

AIAuto Increment自动增长

GGenerated Column基于其它列的公式生成值的列

比如我这样添加默认值错误只用于描述

 数据库和java变量类型对比

JDBCType            JavaType
    CHAR                String         建议使用 mysql char(1) 代替boolean 0 , 1  
    VARCHAR             String
    LONGVARCHAR         String
    NUMERIC             java.math.BigDecimal
    DECIMAL             java.math.BigDecimal
    BIT                 boolean        mysql tinytin(1)
    BOOLEAN             boolean        mysql tinytin(1)
    TINYINT             byte           mysql tinyint
    SMALLINT            short
    INTEGER             int
    BIGINT              long
    REAL                float
    FLOAT               double
    DOUBLE              double
    BINARY              byte[]
    VARBINARY           byte[]
    LONGVARBINARY       byte[]
    DATE                java.sql.Date
    TIME                java.sql.Time
    TIMESTAMP           java.sql.Timestamp
    CLOB                Clob
    BLOB                Blob
    ARRAY               Array
    DISTINCT            mapping of underlying type
    STRUCT              Struct
    REF                 Ref
    DATALINK            java.net.URL[color=red][/color]

查看mysql占用资源大小

ps -ef | grep mysqld            // 看下ip
top -H -p mysql_pid             // 根据ip查看资源线程的资源占用
mysql -u root -p                // 登录后台然后输入密码
// 查看资源limit 0,5;从第0个开始显示5个
select thread_id,name,THREAD_OS_ID from performance_schema.threads limit 10;

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql

“MySQL整体使用》导入数据、约束、多表查询、事务、变量类型、资源占用” 的相关文章