首页 > 数据库 >MySQL基础学习1

MySQL基础学习1

时间:2024-08-08 11:31:55浏览次数:13  
标签:last name employees 基础 查询 学习 MySQL null SELECT

标签(空格分隔): 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、分组函数

  功能:做统计使用,又称为统计函数、聚合函数、组函数

标签:last,name,employees,基础,查询,学习,MySQL,null,SELECT
From: https://www.cnblogs.com/fengmian13wl/p/18348588

相关文章

  • MySQL基础学习2
    标签(空格分隔):MySQL进阶五:分组查询语法:select分组函数,列(要求出现在groupby的后面)from表名【where筛选条件】groupby分组的列表【orderby子句】注意:查询列表必须特殊,groupby后面的字段特点:1、分组查询中的筛选条件分为两类|空格|数据源|位置|关键字|-|-|-|......
  • Mysql基础函数
    标签(空格分隔):MySQL一、MySQL中常见的函数一、字符函数1.length获取参数值的字节个数查看字符长度语句:SHOWVARIABLESLIKE'%char%'2.concat拼接字符串SELECTCONCAT(last_name,'_',first_name)姓名FROM`employees`;3.upper(大写转换)、lower(小写转换)语法:upp......
  • MySQL基础学习4
    标签(空格分隔):MySQLDML语言数据操作语言:插入:insert修改:update删除:delete一、插入语言插入方式1、语法:insertinto表名(列名,...)values(值1,...)插入的值的类型要与列的类型一致或兼容INSERTINTObeauty(id,name,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'......
  • MySQL基础学习3
    标签(空格分隔):MySQL进阶七子查询含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询分类:子查询出现的位置:select后面:仅仅支持标量子查询from后面:支持表子where或having后面(▼)标量子查询:单行(......
  • MySQL基础学习5
    标签(空格分隔):MySQLTCL(事务控制语言)事务:一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行事务的ACID(acid)属性1.原子性(Atomicity)原子性是指事务是一个不可分割的工作单位事务中的操作要么都发生,要么都不发生。2.一致性(Consistency)事务必须......
  • 零基础学会机器学习,到底要多久?
    这两天啊,有不少朋友和我说,想学机器学习,但是之前没有基础,不知道能不能学得会。首先说结论,只要坚持,就能学会,但是一定不能三天打鱼两天晒网,要持之以恒,至少每隔两天,必须得看一点。所以呀,我整理了关于机器学习各种内容的资料,跟大家一起看一看,从零基础入门,想要学会深度学习,到底需要......
  • MySQL变量的使用
    目录1.系统变量1.1查看系统变量1.2设置系统变量2.用户自定义变量2.1用户自定义变量赋值2.2查看用户自定义变量3.局部变量3.1局部变量声明3.2局部变量赋值3.3查看局部变量MySQL中的变量分为三大类,系统变量、用户自定义变量、局部变量。1.系统变量系统变量以@@开......
  • 基于JSP和MySQL的小说阅读网站系统
    你好,我是计算机专业的学姐,很高兴和大家分享我的毕业设计——小说阅读网站系统。如果对此有兴趣或任何问题,欢迎随时联系我。开发语言:Java数据库:MySQL技术:JSP+JavaBeans+Servlet工具:常用开发环境(如Eclipse)系统展示首页管理员界面读者个人中心作者个人中心......
  • MySQL this is incompatible with sql_mode=only_full_group_by-错误解决
    mysql执行groupby时遇到下面提示:SELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'crm.b.id'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by原因:在sql执行时,出现该原......
  • Java中一维数组的学习
    一维数组目录一维数组创建数组null数组的遍历for循环遍历数组for-each循环遍历while循环遍历do-while循环遍历数组的反向遍历创建数组Java语言使用new操作符来创建数组,语法如下:arrayRefVar=newdataType[arraySize];上面的语法语句做了两件事:使用dataType[arraySize]......