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

7 篇文章 0 订阅
5 篇文章 0 订阅

 我发的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;       # 结束事物,正常执行完

 数据库连接池

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

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

PK:Primary Key, 主键

NN:Not Null, 非空

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

BIN:Binary 二进制数据(比text更大的二进制数据)

UN:unsigned 无符号 整数(非负数)

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

AI:Auto Increment,自动增长

G:Generated 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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值