zoukankan      html  css  js  c++  java
  • mysql学习1

    1.什么是数据库?

    数据的仓库,如在ATM的示例中创建了一个db目录,称其为数据库

    2.安装 

    下载
    http://dev.mysql.com/downloads/mysql/

    安装
    windows:
    (1)解压:如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录;
    (2)初始化:MySQL解压后的bin目录下有一大堆可执行文件,执行如下命令初始化数据
    D:mysqlmysql5.7.16mysql-5.7.16-winx64inmysql --initialize-insecure
    (3)启动MySQL服务:
    #进入可执行文件目录
    cd D:mysqlmysql5.7.16mysql-5.7.16-winx64in
    #启动MySQL服务
    mysql
    (4)启动MySQL客户端并连接MySQL服务
    由于初始化数据时未给root账户设置密码
    #进入可执行文件目录

    cd D:mysqlmysql5.7.16mysql-5.7.16-winx64in
                #连接MySQL服务器
    mysql -u root -p
    #提示输入密码,直接回车即可

    见如下图表示安装成功:

    2.1添加环境变量

     【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】

    以后再启动服务并连接时,仅需:

    #启动MySQL服务,在终端输入
    mysqld
    #连接MySQL服务,在终端输入
    mysql -u root -p
    

    3.数据库操作

    (1)显示数据库

    show databases; 

    (2)创建数据库 

    create database db2;
    create database db2 default charset utf8;

    #查看数据库

    show databases;

    #使用数据库

    use 数据库名称

    #删除数据库名称为db2的数据库
    drop database db2;

    (3)用户管理

    #创建用户
    create user "alex"@"192.168.1.1" ["用户名”@“IP地址"] identified by "123123"[“密码”];
    
    #删除用户
    drop user  "alex"@"192.168.1.1"["用户名”@“IP地址"];
    
    #修改用户
    rename user "alex"@"192.168.1.1["用户名”@“IP地址"];to "alex1"@"192.168.1.2["新用户名”@“新IP地址"]
    
    #修改密码
    set password for "alex"@"192.168.1.1["用户名”@“IP地址"] = Password("新密码")
    

    (4)授权管理

    #查看权限
    show grants for "用户"@“IP地址”
    
    #授权
    grant 权限 on 数据库.表 to "用户"@“IP地址”
    
    #取消权限
    revoke 权限 on 数据库.表 from "用户"@“IP地址”
    

    4.基本数据表

    ( 1 )创建表

    create table 表名(
        列名  类型  是否可以为空,
        列名  类型  是否可以为空
    )engine=innodb default charset=utf8
    

    ( 2 )删除表

    drop table 表名
    

    (3)清空表

    delete from 表名
    truncate table 表名
    

    (4)修改表

    添加列:alter table 表名 add 列名 类型
    删除列:alter table 表名 drop column 列名
    修改列:
            alter table 表名 modify column 列名 类型;  -- 类型
            alter table 表名 change 原列名 新列名 类型; -- 列名,类型
      
    添加主键:
            alter table 表名 add primary key(列名);
    删除主键:
            alter table 表名 drop primary key;
            alter table 表名  modify  列名 int, drop primary key;
      
    添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    删除外键:alter table 表名 drop foreign key 外键名称
      
    修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
    

    5.基本数据类型

    MySQL的数据类型大致分为:数值,时间和字符串

    (1)整数类型

    tinyint, smallint, mediumint, int/intrger, bigint

    (2)浮点数类型

    float, double

    (3)日期时间

    date, datetime, timestamp, time, year

    (4)字符串类型

    char    速度快

    varchar   节省空间

     6.表内容操作

    (1)增

    insert into 表 (列名,列名...) values (值,值,值...)
    insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
    insert into 表 (列名,列名...) select (列名,列名...) from 表 

    (2)删

    delete from 表
    delete from 表 where id=1 and name='alex'

    (3)改

    update 表 set name = 'alex' where id>1 

    (4)查

    select * from 表
    select * from 表 where id > 1
    select nid,name,gender as gg from 表 where id > 1

    (5)其他

    a、条件
        select * from 表 where id > 1 and name != 'alex' and num = 12;
     
        select * from 表 where id between 5 and 16;
     
        select * from 表 where id in (11,22,33)
        select * from 表 where id not in (11,22,33)
        select * from 表 where id in (select nid from 表)
     
    b、通配符
        select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
        select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
     
    c、限制
        select * from 表 limit 5;            - 前5行
        select * from 表 limit 4,5;          - 从第4行开始的5行
        select * from 表 limit 5 offset 4    - 从第4行开始的5行
     
    d、排序
        select * from 表 order by 列 asc              - 根据 “列” 从小到大排列
        select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
        select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
     
    e、分组
        select num from 表 group by num
        select num,nid from 表 group by num,nid
        select num,nid from 表  where nid > 10 group by num,nid order nid desc
        select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
     
        select num from 表 group by num having max(id) > 10
     
        特别的:group by 必须在where之后,order by之前
     
    f、连表
        无对应关系则不显示
        select A.num, A.name, B.name
        from A,B
        Where A.nid = B.nid
     
        无对应关系则不显示
        select A.num, A.name, B.name
        from A inner join B
        on A.nid = B.nid
     
        A表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A left join B
        on A.nid = B.nid
     
        B表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A right join B
        on A.nid = B.nid
     
    g、组合
        组合,自动处理重合
        select nickname
        from A
        union
        select name
        from B
     
        组合,不处理重合
        select nickname
        from A
        union all
        select name
        from B
    

      

  • 相关阅读:
    结合P2P软件使用Ansible分发大文件
    Centos7 上安装 FastDFS
    go在centos配置以及go mod配置
    代理
    笔记本安装ubuntu18.08,解决过程中出现的各种问题
    CentOS7设置自定义开机启动脚本,添加自定义系统服务
    gitlab忘记密码找回
    zabbix配置短信报警
    将博客搬至CSDN
    RT-Thread-stm32f769-qspi-flash移植
  • 原文地址:https://www.cnblogs.com/asaka/p/6946137.html
Copyright © 2011-2022 走看看