• Mysql 基本操作


    Mysql学习笔记

    MySQL 是一个 DBMS(数据库管理系统),由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司,MySQL 是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发者都选择 MySQL 作为网站数据库。MySQL 使用 SQL 语言进行操作。

    数据库分为关系型数据库和非关系型数据库。

    • 关系型数据库有:

    Oracle
    Mysql
    Sqlserver
    DB2
    Postgresql
    Sqlite
    access
    

    安装操作

    mysql 下载地址: MySQL Community Server 5.7.20

    • windows安装
      安装很简单,直接点击下一步,安装完成后,可以在服务里面(win+R然后输入services.msc)找到mysql服务,可以手动停止或关闭。

    • ubuntu安装

    # 安装 MySQL 服务端、核心程序
    sudo apt-get install mysql-server
    
    # 安装 MySQL 客户端
    sudo apt-get install mysql-client
    
    # 安装结束后,用命令验证是否安装并启动成功
    sudo netstat -tap | grep mysql
    
    # 可以根据自己的需求,用 vim 修改 MySQL 的配置文件(my.cnf),使用以下命令
    sudo vim /etc/mysql/my.cnf
    
    # 启动 MySQL 服务
    sudo service mysql start             
    
    # 使用 root 用户登录,实验楼环境的密码为空,直接回车就可以登录
    mysql -u root -p
    

    停止mysql进程

    ps -ef      #查看所有进程
    ps -ef | grep mysql     # 筛选mysql
    
    kill 4299   # 删除进程号为4299的进程
    

    其他操作

    mysqladmin --version    # 查看mysql版本
    mysqladmin -u root password `new_password`;     #创建密码
    # mysql数据库登陆
    mysql -h 'remote_ip' -u username -p     # 之后会提示输入密码
    

    数据库的增删改查

    查询数据库

    SELECT column_name, column_name
    from table_name
    [WHERE Clause]
    [LIMIT N][OFFSET M]
    
    select * from student limit 10 offset 2;
    select * from student where id>10;
    select * from student where register_date > `2016-03-04`;
    select * from student where register_date like `2016-04%`
    

    插入数据

    insert into student (name, sex, age, register_date) values (`alex`, `M`, 23, `2017-07-12` );
    

    修改表单

    update student set name=`chenronghua`, age=33 where id=4;
    
    

    删除表单元素

    delete from stuent where name=`chenronghua`
    

    排序 order by

    select * from student order by id desc;
    

    Group by

    select name,count(*) from student group by name;
    select register_date,count(*) from student group by register_date;
    
    select register_date,count(*) as stu_num from student group by register_date;
    
    select name,sum(age) as stu_num from student group by register_date;
    
    select coalesce(name,`Total Age`),sum(age) from student group by name with rollup;
    

    修改数据表属性

    • modify字句
    alter table study_record modify id int auto_increment;
    alter table student modify sex enum(`F`,`M`) not null;
    
    • change字句
    alter table student change sex gender char(32) not null default `F`;
    

    外键

    create table `study_record`(`id` int(4) auto_increment,
        `day` int(11) not null,
        `stu_id` int(11) not null,
        `status` char(32) not null,
        primary key (`id`),
        key `fk_student_key` (`stu_id`),
        constraint `fk_studnet_key` foreign key (`stu_id`) references `student` (`id`));
    

    连接查询(left join, right join, )

    先创建两个表A和B,并且增加一些数据

    create table A(a int not null);
    create table B(b int not null);
    
    insert into A (a) values (1);
    insert into A (a) values (2);
    insert into A (a) values (3);
    insert into A (a) values (4);
    
    insert into B (b) values (3);
    insert into B (b) values (4);
    insert into B (b) values (5);
    insert into B (b) values (6);
    insert into B (b) values (7);
    

    求A和B表格的交集,并集,差集等。

    • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    inner join 交集

    select * from A inner join B on A.a = B.b
    select A.*,B.* from A,B where A.a = B.b
    

    left join , right join 差集

    select * from A left join B on A.a = B.b
    select * from A right join B on A.a = B.b
    

    full join 不直接支持

    select * from A full join B on A.a = B.b    # 出错
    -- # 可以通过下面的语法间接支持
    select * from A left join B on A.a=B.b union select * from A right join B on A.a=B.b
    

    事务

    begin;      # 开始事务
    rollback;   # 回滚
    commit;     # 提交
    

    索引

    • 创建索引
    -- 已经创建的表增加索引
    create index name_index on student (name(32))   
    -- alter student add index date_index on (register_date(32))
    
    -- 创建表的时候增加索引
    
    • 删除索引
    drop index index_name on student;
    show index from student;    -- 显示index
    
    • 创建唯一索引
    -- 已经创建的表增加索引
    create unique index name_index on student (name(32))   
    
  • 相关阅读:
    微服务基础——厉害了!API网关
    11.11 大促背后的秘密——智能合图
    那些我们对2019技术世界趋势的预测都说准了吗?
    DevOps云翼日志服务实践
    技术沙龙|原来落地AI应用是这么回事儿!
    直击JDD | 京东开启技术服务元年:携手合作伙伴,共创产业未来
    直击JDD | 徐雷:智能化零售,以技术为驱动力的突破路径
    直击JDD | 陈生强:京东数科的底层是数字化操作系统
    干货 | Spark Streaming 和 Flink 详细对比
    持续集成与自动化部署
  • 原文地址:https://www.cnblogs.com/tjuyuan/p/7860955.html
Copyright © 2020-2023  润新知