• database


          数据库基础

    一、数据库概念

      1.数据库

        存储数据的仓库(逻辑概念,并未真实存在)

      2.数据库软件

        真实软件,用来实现数据库这个逻辑概念

      3.数据仓库

        数据量更加庞大,更加侧重数据分析和数据挖掘,供企业决策分析之用,主要是数据查询,修改和删除很少

    二、MySQL的特点 

      1.关系型数据库
      2.跨平台
      3.支持多种编程语言(python、java、php)
      4.基于磁盘存储,数据是以文件形式存放在数据库目录/var/lib/mysql下

     三 启动连接

    - 服务端启动 
    
    ```mysql
    sudo /etc/init.d/mysql start|stop|restart|status
    sudo service mysql start|stop|restart|status
    ```
    
    - 客户端连接
    
    ```mysql
    mysql -hIP地址 -u用户名 -p密码
    本地连接可省略 -h 选项

    四、基本sql命令

     

    **1.库管理**
    
    ```mysqle
        1、查看已有库; 
        show databases;
        2、创建库并指定字符集;
        create database 库名 charset utf8;
        3、查看当前所在库;
        select database();
        4、切换库;
        use 库名;
        5、查看库中已有表;
        show tables;
        6、删除库;
        drop database 库名;
    ```
    **2.表管理**
    
    ```mysql
        1、创建表并指定字符集;
        create table 表名(字段名 数据类型,xxx)charset=utf8;
        2、查看创建表的语句 (字符集、存储引擎);
        show create table 表名;
        3、查看表结构;
        desc 表名;
        4、删除表;
    ```    drop table 表名;
    1 **3.表记录管理**
    2 
    3 ```mysql
    4     1、增 :insert into 表名(字段名)values(),();
    5     2、删 :delete from 表名 where 条件;
    6     3、改 :update 表名 set 字段名=值 字段名=值 where 条件;
    7     4、查 :select * from 表名 where 条件;
    8 ```
    1 **4.表字段管理**
    2 
    3 ```mysql
    4     1、增 : alter table 表名 add 字段名 类型 first;(添加首字段)
    5             alter table 表名 add 字段名 类型 after 字段名;(添加在什么字段后)
    6             alter table 表名 add 字段名 类型(添加最后的字段)
    7     2、删 :alter table 表名 drop 字段名;
    8     3、改 :alter table 表名 modify 字段名 新类型;
    9     4、表重命名 :alter table 表名 rename 新表名;

    五、数据类型

    1 -  数值类型
    2     int smallint bigint tinyint
    3     float(m,n) double decimal
    4 - 字符类型
    5     char(固定长度) varchar(不固定长度) text logtext blob longblob
    6 - 枚举类型 
    7     enum(多个中选一个) set(多个中选多个)
    8   日期时间类型
    9     data time year datatime timestamp
    **日期时间函数** 
    ```mysql
        NOW() CURDATR() YEAR(字段名) DATE(字段名) TIME(字段名)
    ```
    **日期时间运算**
    ```mysql
        select * from 表名 where 字段名 运算符(NOW()-interval 间隔)
        间隔单位:1day| 3month|2year
        eg1:查询一年以前的用户充值信息
        select * from tab where time <(now()-interval 1 year);
    ```

    六、MySQL运算符

    - **数值比较**
    
    ```mysql
    > >= < <= = !=
    eg1 : 查询成绩不及格的学生
          select * from student where score >60;
    eg2 : 删除成绩不及格的学生
          delete from sutdents where score <60;
    eg3 : 把id为3的学生的姓名改为 周芷若
          update students set name="周芷若" where id = 3;
    ```
    - **逻辑比较** 
    
    ```mysql
    and  or
    eg1 : 查询成绩不及格的男生
         select * from students where score <60 and gender="m";
    eg2 : 查询成绩在60-70之间的学生
    ```   select * from students where score>=60 and score<=70;
    - **范围内比较** 
    
    ```mysql
    between 值1 and 值2 、in() 、not in()
    eg1 : 查询不及格的学生姓名及成绩
        select name,score from students where score between 0 and 59;
    eg2 : 查询AID1903和AID1902班的学生姓名及成绩
        select name,score from students where class in("AID1903","AID1902");
    - **模糊比较(like)**
    
    ```mysql
    where 字段名 like 表达式(%_)
    eg1 : 查询北京的姓赵的学生信息
        select *from students where address="北京" and name like "赵%"; 
    - **NULL判断**
    
    ```mysql
    is NULL 、is not NULL
    eg1 : 查询姓名字段值为NULL的学生信息
        select * from students where name is NULL;
    ```

     七、查询

    - **order by**
    给查询的结果进行排序(永远放在SQL命令的倒数第二的位置写)
    ```mysql
    order by 字段名 ASC/DESC
    eg1 : 查询成绩从高到低排列
        select * from students where score order by DESC
    ```
    - **limit**
    
    限制显示查询记录的条数(永远放在SQL命令的最后写)
    
    ```mysql
    limit n :显示前n条
    limit m,n :从第(m+1)条记录开始,显示n条
    分页:每页显示10条,显示第6页的内容
        limit (6-1)*10 ,10

    八、MySQL基础巩固

    - **创建库 :country(指定字符编码为utf8)**
      create database country; - **创建表 :sanguo 字段:id 、name、attack、defense、gender、country**
      create table sanguo(id int primary key auto_increment,
                  name varchar(16) not null,
                  attack int not null,
                  defense int not null,
                  gender enum("w","m") not null,
                  country varchar(16) not null)charset=utf8;
    **插入5条表记录(id 1-5,name-诸葛亮、司马懿、貂蝉、张飞、赵云),攻击>100,防御<100)**
       insert into sanguo values(1,"诸葛亮",150,80,"m","蜀国";
                       2,"司马懿",160,70,"m","魏国";
                       3,"貂蝉",110,50,"w","吴国";
                       4,"张飞",200,90,"w","蜀国";
                       5,"赵云",21,80,"w","蜀国";)
    - **查找所有蜀国人的信息**
      select * from sanguo where country="蜀国";
    - **将赵云的攻击力设置为360,防御力设置为68*
      update sanguo set attack=360 ,defense=68 where name="赵云";
    - **将吴国英雄中攻击值为110的英雄的攻击值改为100,防御力改为60**
      update sanguo set attack = 100 ,defense=60 where country="吴国"
    - **找出攻击值高于200的蜀国英雄的名字、攻击力**
      select name,attack from sanguo where attack>200 and country="蜀国";
    - **将蜀国英雄按攻击值从高到低排序**
      select * from sanguo where country = "蜀国" order by attark DESC;
    - **魏蜀两国英雄中名字为三个字的按防御值升序排列**
      select * from sanguo where country in("魏国","蜀国") and name like"___" order by defense ASC;
    - **在蜀国英雄中,查找攻击值前3名且名字不为 NULL 的英雄的姓名、攻击值和国家**
      select name,attack,country from sanguo where country = "蜀国" and name is not NULL order by attack DESC limit 3;
                      

     

     

      

      

  • 相关阅读:
    浅析项目失败的原因
    软件项目失败的五大原因
    敏捷软件开发最佳实践之Scrum站立会议
    精益原则之延迟决策
    三条常见的质量管理策略
    固定报价项目中,如何进行客户期望管理
    关于软件需求必须知道的事情
    PMP备考感触和经验
    软件开发过程中的7大浪费(译)
    精益软件开发七原则之我见
  • 原文地址:https://www.cnblogs.com/Acekr/p/11025270.html
Copyright © 2020-2023  润新知