• mysql基础理论知识


    一、数据库的好好处  

    1. 持久化数据到本地  
    2. 可以实现结构化查询、方便管理

    二、数据库的相关概念

    1. DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据
    2. DB:数据库,保存一组有组织的数据的容器
    3. SQL:结构化查询语言,用于和DBMS通信的语言

    三、数据库存储数据的特点  

    1. 将数据放在表中,表再放在库中
    2. 一个数据库中可以有多个表,每个表都有一个的名字,用来表示自己,表名具有唯一性。
    3. 表具有一些特性,这些特性定义了数据在标中如何存储,类似JAVA中“类”的设计
    4. 表由列组成,也称为字段。所有表都是由一个或对个列组成,每一列类似java中的“属性”。
    5. 表中的数据是按行存储的,每一项类似java中的“对象”。

    四、初始MySQL

    1. MySQL服务的启动和停止
      1. 启动:net start 数据库名字
      2. 停止:net stop 数据库名字
    2. MySQL服务的登录和退出
      1. 通过客户端:输入密码
      2. 通过windows客户端:mysql -h主机名 -P端口号 -u用户名  -p密码
        1. mysql -h localhost -P3306 -uroot -p123456
      3. 退出:exit或者Ctrl+C  
    3. MySQL的常见命令和语法规范
      1. 查看当前所有数据库:show database;
      2. 打开指定的库:use 库名;
      3. 查看当前库的所有表:show tables;
      4. 查看其他库的所有表:show tables from 库名;
      5. 创建表:create table 表名(列名 列类型,列名 列类型,...);
      6. 查看表结构:desc 表名;
      7. 查看服务器版本:
        1. 登录到mysql服务端:select version();
        2. 没有登录到mysqk服务端:mysql --version 或者   mysql --V
    4. Mysql语法规范
      1. 不区分大小写,但建议关键字大写,表名、列名小写
      2. 每条命令最好用分号结尾
      3. 每条命令根据需要,可以进行缩进或者换行
      4. 注释
        1. 单行注释:#注释文字
        2. 单行注释:(--空格)-- 注释文字
        3. 多行注释:/* 注释文字 */

    五、DQL语言的学习

    1. :基础查询
      /*
      语法:
      select 查询列表 from 表名;
      
      
      类似于:System.out.println(打印东西);
      
      特点:
      
      1、查询列表可以是:表中的字段、常量值、表达式、函数
      2、查询的结果是一个虚拟的表格
      */
      
      USE myemployees;
      
      #1.查询表中的单个字段
      
      SELECT last_name FROM employees;
      
      #2.查询表中的多个字段
      SELECT last_name,salary,email FROM employees;
      
      #3.查询表中的所有字段
      
      #方式一:
      SELECT 
          `employee_id`,
          `first_name`,
          `last_name`,
          `phone_number`,
          `last_name`,
          `job_id`,
          `phone_number`,
          `job_id`,
          `salary`,
          `commission_pct`,
          `manager_id`,
          `department_id`,
          `hiredate` 
      FROM
          employees ;
      #方式二:  
       SELECT * FROM employees;
       
       #4.查询常量值
       SELECT 100;
       SELECT 'john';
       
       #5.查询表达式
       SELECT 100%98;
       
       #6.查询函数
       
       SELECT VERSION();
       
       
       #7.起别名
       /*
       ①便于理解
       ②如果要查询的字段有重名的情况,使用别名可以区分开来
       
       */
       #方式一:使用as
      SELECT 100%98 AS 结果;
      SELECT last_name AS 姓,first_name ASFROM employees;
      
      #方式二:使用空格
      SELECT last_name 姓,first_name 名 FROM employees;
      
      
      #案例:查询salary,显示结果为 out put
      SELECT salary AS "out put" FROM employees;
      
      
      #8.去重
      
      
      #案例:查询员工表中涉及到的所有的部门编号
      SELECT DISTINCT department_id FROM employees;
      
      
      #9.+号的作用
       
      /*
      
      java中的+号:
      ①运算符,两个操作数都为数值型
      ②连接符,只要有一个操作数为字符串
      
      mysql中的+号:
      仅仅只有一个功能:运算符
      
      select 100+90; 两个操作数都为数值型,则做加法运算
      select '123'+90;只要其中一方为字符型,试图将字符型数值转换成数值型
                  如果转换成功,则继续做加法运算
      select 'john'+90;    如果转换失败,则将字符型数值转换成0
      
      select null+10; 只要其中一方为null,则结果肯定为null
      
      */
      
      #案例:查询员工名和姓连接成一个字段,并显示为 姓名
      
      
      SELECT CONCAT('a','b','c') AS 结果;
      
      SELECT 
          CONCAT(last_name,first_name) AS 姓名
      FROM
          employees;

      2、条件查询

    /*
    
    语法:
        select 
            查询列表
        from
            表名
        where
            筛选条件;
    
    分类:
        一、按条件表达式筛选
        
        简单条件运算符:> < = != <> >= <=
        
        二、按逻辑表达式筛选
        逻辑运算符:
        作用:用于连接条件表达式
            && || !
            and or not
            
        &&和and:两个条件都为true,结果为true,反之为false
        ||或or: 只要有一个条件为true,结果为true,反之为false
        !或not: 如果连接的条件本身为false,结果为true,反之为false
        
        三、模糊查询
            like
            between and
            in
            is null
        
    */
    #一、按条件表达式筛选
    
    #案例1:查询工资>12000的员工信息
    
    SELECT 
        *
    FROM
        employees
    WHERE
        salary>12000;
        
        
    #案例2:查询部门编号不等于90号的员工名和部门编号
    SELECT 
        last_name,
        department_id
    FROM
        employees
    WHERE
        department_id<>90;
     
    #二、按逻辑表达式筛选
    
    #案例1:查询工资z在10000到20000之间的员工名、工资以及奖金
    SELECT
        last_name,
        salary,
        commission_pct
    FROM
        employees
    WHERE
        salary>=10000 AND salary<=20000;
    #案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
    SELECT
        *
    FROM
        employees
    WHERE
        NOT(department_id>=90 AND  department_id<=110) OR salary>15000;
    #三、模糊查询
    /*
    like
    between and
    in
    is null|is not null
    */
    #1.like
    /*
    特点:
    ①一般和通配符搭配使用
        通配符:
        % 任意多个字符,包含0个字符
        _ 任意单个字符
    *、
    
    #案例1:查询员工名中包含字符a的员工信息
    
    select 
        *
    from
        employees
    where
        last_name like '%a%';#abc
    #案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
    select
        last_name,
        salary
    FROM
        employees
    WHERE
        last_name LIKE '__n_l%';
    
    
    
    #案例3:查询员工名中第二个字符为_的员工名
    
    SELECT
        last_name
    FROM
        employees
    WHERE
        last_name LIKE '_$_%' ESCAPE '$';
    #2.between and
    /*
    ①使用between and 可以提高语句的简洁度
    ②包含临界值
    ③两个临界值不要调换顺序
    
    */
    
    
    #案例1:查询员工编号在100到120之间的员工信息
    
    SELECT
        *
    FROM
        employees
    WHERE
        employee_id >= 120 AND employee_id<=100;
    #----------------------
    SELECT
        *
    FROM
        employees
    WHERE
        employee_id BETWEEN 120 AND 100;
    
    #3.in
    /*
    含义:判断某字段的值是否属于in列表中的某一项
    特点:
        ①使用in提高语句简洁度
        ②in列表的值类型必须一致或兼容
        ③in列表中不支持通配符
        
    
    */
    #案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
    
    SELECT
        last_name,
        job_id
    FROM
        employees
    WHERE
        job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';
    
    
    #------------------
    
    SELECT
        last_name,
        job_id
    FROM
        employees
    WHERE
        job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
    
    #4is null
    /*
    =或<>不能用于判断null值
    is null或is not null 可以判断null值
    
    
    
    
    */
    
    #案例1:查询没有奖金的员工名和奖金率
    SELECT
        last_name,
        commission_pct
    FROM
        employees
    WHERE
        commission_pct IS NULL;
    
    
    #案例1:查询有奖金的员工名和奖金率
    SELECT
        last_name,
        commission_pct
    FROM
        employees
    WHERE
        commission_pct IS NOT NULL;
    
    #----------以下为×
    SELECT
        last_name,
        commission_pct
    FROM
        employees
    
    WHERE 
        salary IS 12000;
        
        
    #安全等于  <=>
    
    
    #案例1:查询没有奖金的员工名和奖金率
    SELECT
        last_name,
        commission_pct
    FROM
        employees
    WHERE
        commission_pct <=>NULL;
        
        
    #案例2:查询工资为12000的员工信息
    SELECT
        last_name,
        salary
    FROM
        employees
    
    WHERE 
        salary <=> 12000;
        
    
    #is null pk <=>
    
    IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
    <=>    :既可以判断NULL值,又可以判断普通的数值,可读性较低

    ★ 排序查询 ★ 常见函数 ★ 分组函数 ★ 分组查询 ★ 连接查询 ★ 子查询 √ 分页查询 ★ union联合查询 √



  • 相关阅读:
    Leetcode刷题有感
    [博客迁移] 准备将博客从CSDN迁移至博客园
    加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)
    Linux能ping主机,但ping不了网关以及外网,显示包全丢失解决方案
    如何设置centos7的ip地址配置信息,让我的主机和它互Ping,以及远程登陆
    线程池 ThreadPoolTaskExecutor
    java Http请求
    java排序
    java的代理
    java的反射机制
  • 原文地址:https://www.cnblogs.com/liviniu/p/14605296.html
Copyright © 2020-2023  润新知