MySQL基础学习1

标签(空格分隔): MySQL


mysql常见的命令语句

  1. 查看所有的数据库

show databases ;
查看数据库:select database();

  1. 打开指定的库

use 库名 ;

  1. 查看当前库的所有表

show tables ;

  1. 查看其他库的所有表

show tables form 库名;

  1. 创建表

create table 表名( 列名 列类型, 列名 列类型, 。。。 );

  1. 查看表结构

desc 表名 ;

  1. 查看服务器的版本

方法一:登录到mysql服务器 select version(); 方式二:没有登陆到MySQL服务端 MySQL --version 或
MySQL --v

  1. 查看表中的所有数据

select * from 表名 ;

  1. 表中加入数据

mysql的语法规范

  1. 不区分大小学,但建议关键字大写,表名,列名小写。
  2. 每条命令最好以分号结尾
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释
    单行注释:#注释文字
    单行注释:-- 注释文字
    多行注释:/* 文字 */

进阶一:基础查询

$\underline{查询前写出你要查询的库}$
USE 库名 ;

语法:
select 查询列表 from 表名 ;(不严格要求循序)
类似于:system.out.println(打印东西) ;
1、 查询列表可以是:表中的字段、常量值、表达式、函数
2、 查询的结果是一个虚拟的表格

  1. 查询表中的单个字段
    例:SELECT last_name FROM employees ;
  2. 查询表中的多个字段(逗号隔开不同的查询列表)
    例:SELECT last_name,salary,email FROM employees ;
  3. 查询表中的所有字段

方法一:
SELECT (哪里不会点哪里),(哪里不会点哪里) FROM employees ; 方法二:
SELECT * FROM employees ;(按循序)

  1. 查询常量值

SELECT 100 ;
SELECT 'john' ;

5.查询表达式

SELECT 100%98 ;
  1. 查询函数

    SELECT VERSION() ;

  2. 起别名
    方式一:使用as

    SELECT 100%98 AS 结果 ;

方式二:使用空格

 SELECT last_name 姓, first_name 名 FROM employees ;

好处:便于理解
如果查询的字段有重名的情况,使用别名可以区分开来。

当别名里有特殊符号时,用双引号引住,或单引号
案例:查询salary, 显示结果为 out put

SELECT salary AS "out put" FROM employees ;
  1. 去重

方法:在字段名前面加上DISTINCT
SELECT DISTINCT 字段名 FROM 表名 ;

案例:查询员工表中涉及到的部门编号

SELECT DISTINCT department_id FROM employees ;
  1. +号的作用
    Java中的+号:
    1、运算符,两个操作数都为数值型
    2、连接符,只要有一个操作数作为字符串
    MySQL中的+号:
    仅仅只有一个功能:运算符
    select 100+90 ;两个操作数都为数值型,则做加法运算
    selsct 'join'+90 ;
    只要其中一方为字符型,试图将字符型转换为数值型
    如果转换成功,则继续做加法运算
    如果转换不成功,则将字符型转换成0
    selsct null+10 ;只要其中一方为null,则结果肯定为null

连接词:concat(,)
案例:

SELECT 
CONCAT(last_name ,first_name) AS 姓名 
FROM 
employees ;

换行:用逗号隔开
案例:

SELECT last_name,first_name,salary AS sal FROM employees ;

输出的结果:last_name | first_name|sal(salary的别名)

对存在null的表的处理方法(null判断语句)
语法:IFNULL(表,null的取值)
案例1:

SELECT DISTINCT
IFNULL(`commission_pct`,0)  AS  奖金率, 
`commission_pct`
FROM `employees` ;

案例2:

SELECT 
CONCAT(`first_name`,  ','  ,`last_name`,  ','  ,`job_id`,  ','  ,IFNULL(`commission_pct`,0)) AS out_put
FROM
`employees` ;

进阶二:条件查询

语法:select 查询列表 from 表名 where 筛选条件
分类:

 一、按条件表达式筛选
 条件运算符:>  <  =  !=  <>  >=  <=
 
 二、按逻辑表达式筛选
 逻辑运算符:
 &&  or
 ||  and
 ! not
 
 三、模糊筛选
     >like
     >between and
     >in
     >is null

1. 按条件筛选

案例:查询工资>1200的员工信息

USE `myemployees` ;
SELECT
*
FROM
employees
WHERE
salary>12000 ;

案例:查询部门编号不等于90号的员工名和部门编号

SELECT
`last_name`,
`department_id`
FROM
`employees`
WHERE
`department_id`!=90 ;

2.按逻辑表达式筛选

案例:查询工资在10000到20000之间的员工名,工资以及奖金

  SSELECT
`last_name`,
`salary`,
`commission_pct`
FROM
`employees`
WHERE
`salary`>=10000 AND `salary`<=20000 ;

案例:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

写法一:
SELECT
*
FROM
`employees`
WHERE
`department_id`<90 OR `department_id`>110 OR `salary`>15000 ;

写法二:
SELECT
*
FROM
`employees`
WHERE
NOT(`department_id`>=90 AND  `department_id`<=110) OR `salary`>15000 ;

3. 模糊查找

like 
特点: 
1. 一般和通配符搭配使用
    通配符:
    %任意多个字符,包含0个字符
    _任意单字符
between and in is null  |is not null

1. like

案例一:查询员工名字中包含字符a的员工信息

    SELECT
    *
    FROM
    `employees`
    WHERE
    `last_name` LIKE '%b%' ;
    
 案例二:查询员工名中第三个字符为i,第五个字符为a的员工和工资
     SELECT
     `last_name`,
     `department_id`
     FROM
     `employees`
     WHERE
    `last_name` LIKE'__i_a%' ;
    
案例三:查询员工名中第二个字符为_的员
    SELECT
    `last_name`
    FROM
    `employees`
    WHERE
    `last_name` LIKE '_\_%' ;
    SELECT
    `last_name`
    FROM
    `employees`
    WHERE
    `last_name` LIKE '_$_%' ESCAPE '$' ;

2.between and

特点:
1. 使用between and 可以提高语句的整洁度
2. 包含临界值
3.临界值不能调换循序

案例:查询员工编号在100到120之间的员工信息
        SELECT
        *
        FROM
        `employees`
        WHERE
        `department_id` BETWEEN 100 AND         120 ;

3. in

含义:判断某字段的值是否属于in列表中的某一项
特点:
1. 使用in提高语句简洁度
2. in列表的值类型必须一致或兼容

案例:查询员工的工种编号是 it_prog、ad_vp、ad_pres中的一个员工名与工种编号
SELECT
    `last_name`,
    `job_id`
    FROM
    `employees`
    WHERE
    `job_id`    IN('it_prot','ad_vp','ad_pres') ;

4. is null

特点:
1.=或<>不能用于判断null值
2.is null或者 is not null 可以判断null值
3. is不能用于判断其他值

案例:查询没有奖金的员工和奖金率
     SELECT
        `last_name`,
        `commission_pct`
        FROM
        `employees`
        WHERE
        `commission_pct` IS NULL ;
        
案例:查询有奖金的员工和奖金率 
SELECT
        `last_name`,
        `commission_pct`
        FROM
        `employees`
        WHERE
        `commission_pct` IS NOT NULL ;

安全等于<=>

判断是否等于,等于则返回true,

案例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值,又可以判断普通的数值,可读性较低

进阶三:排列查询

引入: select * from employees

语法: select 查询列表 from 表 【where 筛选条件】
order by 排序列表【ascldesc】

order by 排序列表 【asc(升序) | desc(降序)】
特点:
1. asc表示升序,desc表示降序,如果不写,默认为升序

  1. order by子句中可以支持单个字段,多个字段,表达式,函数,别名
  2. order by子句一般是放在查询语句的最后面,limit子句除外

案例1:查询员工信息,要求工资从高到低排序

   SELECT
   *
   FROM
   `employees`
   ORDER BY
   salary DESC

案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】

SELECT * FROM `employees`
WHERE `department_id` >= 90
ORDER BY `hiredate` ASC ;

案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】

方法一:
SELECT * ,`salary` * 12 * (1 + IFNULL(`commission_pct`,0)) AS 年薪
FROM `employees`
ORDER BY  `salary` * 12 * (1 + IFNULL(`commission_pct`,0))  DESC;

方法二:
SELECT * ,`salary` * 12 * (1 + IFNULL(`commission_pct`,0)) AS 年薪
FROM `employees`
ORDER BY  年薪  DESC;

案例4:按姓名的长度显示员工的姓名和工资【按函数排列】

SELECT LENGTH(last_name)  字节长度,`first_name`,`salary`
FROM `employees`
ORDER BY LENGTH(last_name) DESC ;

案例5:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】

SELECT * FROM `employees`
ORDER BY `salary` ASC, `employee_id` DESC ;

案例6:查询员工信息,要求先按工资升序,zai'an'yuan


进阶四:常见函数

概念:类似于java的方法,将一组逻辑语句封装的方法中,对外暴露方法名
好处:
1、隐藏了实现细节 2、提高代码的重要性
调用:select 函数名 (实参列表) 【from 表】;
特点1、叫什么(函数名)
2、干什么(函数功能)
分类:1、单行函数
如 concat、length、ifnull等
2、分组函数

  功能:做统计使用,又称为统计函数、聚合函数、组函数
posted @ 2024-08-08 11:22  我的十四行诗在哪里  阅读(8)  评论(0编辑  收藏  举报