首页 > 数据库 >day02-MySQL

day02-MySQL

时间:2023-12-21 10:22:26浏览次数:46  
标签:comment day02 MySQL 索引 表名 table where 字段名

数据库-MySQL

1. 数据库基础操作

  • mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]

    -h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器,-P参数不加,默认连接的端口号是 3306
    eg. mysql -uroot -p1234

  • 查询所有数据库

    show databases;

  • 创建数据库

    create database [ if not exists ] 数据库名

  • 使用和删除数据库

    use 数据库名;
    drop database [ if exists ] 数据库名 ;

2. 表基础操作

2.1. 创建表

create table 表名(
字段1 字段1类型 [约束] [comment 字段1注释 ],
字段2 字段2类型 [约束] [comment 字段2注释 ],
......
字段n 字段n类型 [约束] [comment 字段n注释 ]
) [ comment 表注释 ] ;

eg:
    create table tb_user (
    id int primary key auto_increment comment 'ID,唯一标识', #主键自动增长
    username varchar(20) not null unique comment '用户名',
    name varchar(10) not null comment '姓名',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
    ) comment '用户表';

2.2. 修改表

  • alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
  • alter table 表名 modify 字段名 新数据类型(长度);
  • alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
  • rename table 表名 to 新表名;
eg.
    alter table tb_emp add qq varchar(11) comment 'QQ号码';
    alter table tb_emp modify qq varchar(13) comment 'QQ号码';
    alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';
    rename table tb_emp to emp;

2.3. 删除字段

alter table 表名 drop 字段名;

alter table tb_emp drop qq_num;

3. 数据库操作

  • 批量添加数据(指定字段)

insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);

  • 批量添加数据(全部字段)

insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

  • update语法

update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

  • delete语法:

delete from 表名 [where 条件] ;

  • 查询操作

select 字段列表 from 表名列表
where 条件列表 group by 分组字段列表 having 分组后条件列表
order by 排序字段列表 limit 分页参数(起始索引, 查询记录数)

案例:查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等
于2的职位

select job, count(*)
from tb_emp
where entrydate <= '2015-01-01' -- 分组前条件
group by job -- 按照job字段分组
having count(*) >= 2; -- 分组后条件

where与having区别(面试题)

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之
    后对结果进行过滤
    -判断条件不同:where不能对聚合函数进行判断,而having可以。

4. 多表查询

多表查询可以分为:

  1. 连接查询

    • 内连接:相当于查询A、B交集部分数据
  2. 外连接

    • 左外连接:查询左表所有数据(包括两张表交集部分数据)

    • 右外连接:查询右表所有数据(包括两张表交集部分数据)

  3. 子查询

  • 内连接

select 字段列表 from 表1 , 表2 where 条件 ... ;

  • 左外连接

select 字段列表 from 表1 left join 表2 on 连接条件 ... ;

  • 右外连接

select 字段列表 from 表1 right join 表2 on 连接条件 ... ;

事务

四大特性

事务有哪些特性?

  • 原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败。
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境
    下运行。
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

索引

作用:提高查询的效率。
缺点:索引会占用存储空间。索引大大提高了查询效率,但是同时也降低了insert,update,delete的效率

  • 添加索引

    create index idx_sku_sn on tb_sku (sn); #在添加索引时,也需要消耗时间

MySQL数据库支持的索引结构有很多,如:Hash索引、B+Tree索引、Full-Text索引等。
我们平常所说的索引,如果没有特别指明,都是指默认的 B+Tree 结构组织的索引。

标签:comment,day02,MySQL,索引,表名,table,where,字段名
From: https://www.cnblogs.com/bai1013/p/17918402.html

相关文章

  • 生产环境部署过的二种mysql同步: binlog和gtid
    生产环境部署过的二种mysql同步:binlog和gtid服务器A:192.168.21.33|master|winserver2019服务器B:192.168.21.40|slave |winserver2019Mysql版本:8.0.34.0数据库连接软件:mysql-workbench-community-8.0.30-winx64(注:linux版本一样的配置方法,注意my.ini和......
  • MySQL-基础篇
    索引的数据结构二叉树树高度普通二叉树最坏n.红黑树二叉平衡树,树高度logn+1.以20000000条数据为例,h=log20000000=25Hash表对索引的key进行一次hash计算就可以定位出数据存储的位置很多时候Hash索引要比B+Tree更高效仅能满足=、in,不支持范围查询hash冲突问题(数组+链表)......
  • linux安装jdk和mysql
    一、jdk安装1、yum-ylistjava*------------查看所有jdk版本2、yuminstall-yjava-1.8.0-openjdk.i686 ------------------安装指定jdk,yum会使用标准方式进行下载并安装 二、mysql安装1、wgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm......
  • MySQL——子查询用法
    1、子查询概述子查询指一个查询语句嵌套在另一个查询语句内部的查询,内部的查询是外部查询的条件,这个特性从MySQL4.1开始引入。SQL中子查询的使用大大增强了SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可......
  • MySQL运维13-Mycat分库分表之按月分片
    一、按照月分片使用场景为按照自然月来分片,每个自然月为一个分片,但是一年有12个月,是不是要有12个数据节点才行呢?并不是。例如我现在只有三个分片数据库,这样就可以1月在第一个数据分片中,2月在第二个数据分片中,3月在第三个数据分片中,当来到4月的时候,就会重新开始分片,4月在第一......
  • MySQL InnoDB加锁规则分析
    1. 基础知识回顾1、索引的有序性,索引本身就是有序的2、InnoDB中间隙锁的唯一目的是防止其他事务插入间隙。间隙锁可以共存。一个事务取得的间隙锁并不会阻止另一个事务取得同一间隙上的间隙锁。共享和独占间隔锁之间没有区别。它们彼此之间不冲突,并且执行相同的功能。3、My......
  • 如何解决MySQL Workbench中的错误Error Code: 1175
    错误描述:在MySQLWorkbench8.0中练习SQL语句时,执行一条update语句,总是提示如下错误:ErrorCode:1175.YouareusingsafeupdatemodeandyoutriedtoupdateatablewithoutaWHEREthatusesaKEYcolumnTodisablesafemode,toggletheoptioninPreferences->SQ......
  • Mysql以及TCP socket的C++代码
    在使用socket编写tcp的C++程序时,遇到了一个问题:那就bind冲突了,分析原因:是因为std中有bind函数,而socket中也有,但是没有报重复定义的错误,这就有一点难办了。百度了一下:发现只要使用::bind就可以调用socket的bind。下面把这个套接字socket的server端代码贴出来:staticvoid*serv......
  • mysql新增字典
    INSERTINTO`xxx`.`sys_dict`(`type`,`description`,`create_time`,`update_time`,`remarks`,`system`,`del_flag`,`tenant_id`)VALUES('status_flag','xxx','2022-08-0113:35:50','2022-08-0113:35:50','xxx&......
  • mysql主从配置(1主2从)
    1、主库数据库配置[root@master~]#cat/etc/my.cnf#Foradviceonhowtochangesettingspleasesee#http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]##Removeleading#andsettotheamountofRAMforthemostimportan......