• MYSQL语言总结


    MYSQL简介

    数据存放在数据库中,sql是用于访问和处理数据库的标准的计算机语言,sql是Structured Query Language 的缩写,是指结构化查询语言。

    特点:

    • 简单易学
    • 功能强大
    • 只说明要做什么,不说明如何做
    • 标准化,几乎所有的关系数据库都通用
    • 不区分大小写

    mysql语句

    进入mysqlmysql -uroot -p
    查询数据库show databases;
    跳转数据库use 数据库名;
    创建表create table 表名(表内容);

    例:

    1. create table dept(
    2. deptno int primary key,
    3. dname varchar(9),
    4. loc varchar(10));
    5. )

    ​​​​附表 常见数据类型

    数据类型说明
    int   整数类型
    char(n)字符/字符串,固定长度n
    varchar(n)字符/字符串,可变长度,最大长度n
    numeric(a,b)精确数值,总位数a,小数点后位数b
    date存储年、月、日的值

    查询表数据describe 表名称;

    insert插入

    • 写法一:添加时不需要字段的名字,只需要值的顺序和表中字段顺序相同

    insert into 表名 values(字段1值,字段2值,字段3值,...);

    • 写法二:为指定的字段插入数据时,需要把字段名和字段值都列出来,并一一对应

    insert into 表名(字段1,字段2,字段3,...) values(字段1值,字段2值,字段3值,...);

    主键的作用

    主键的全称是主键约束,表的主键由表中的一个字段或多字段组成,主键唯一代表表中一条记录,关系数据库中通常每个表都有一个主键,没有主键的表通常是不严谨的设计的产物。主键由以下特点:

    • 每个表只能定义一个主键
    • 主键值必须唯一标识表中的每一记录,且不能为null,即表中不可能存在有相同主键值的两条记录。
    • 一个字段名只能在联合主键字段中出现一次
    • 联合主键不能包含不必要的多余字段。当联合主键的某一字段删除后,剩下的字段不能唯一代表一条记录

    select查询

    select的两种写法

    • 查询表中所有的字段

    select * from 表名

    • 查询表中指定的字段

    select 字段1,字段2 from 表名;

    distinct 去重复值

    同一字段中可能会出现重复值,使用关键词distinct可以去掉重复值

    select distinct 字段名 from 表名;

    where 条件过滤

    如果需要从表中选取指定的数据,可以将where子句添加到select语句

    select 字段名 from 表名 where 字段 运算符(<,=,>,<=,BETWEEN,LIKE) 值;

    and和or运算符

    and和or的用法

    and和or可以用在where子句中把两个或多个条件结合起来。and运算符要求两个条件都成立;or运算符要求两个条件中只要有一个成立即可。

    select 字段名 from 表名 where 字段n 运算符 值n and/or 字段m 运算符 值m;

    select * from employees where deptno=3 or salary>=5000;

    like搜索匹配的字符串

    like的用法

    在where子句中使用like运算符来搜索匹配字符串中的指定模式,百分号(%)匹配零个、一个或多个字符。

    select 字段名 from 表名 where 字段 like 字符串;

    select * fromemployees where name like '李%'

    就会出现employees表中 name中姓李的人员信息

    in匹配多个值

    in的用法

    in运算符是在where子句中指定多个搜索条件可以匹配的值。in运算符实际是多个or条件的合并

    select 字段名 from 表名 where 字段名 in (值1,值2,....);

    select name from employees where empno in (3,5);

    相当于列出empno3和5的name

    between指定范围

    between的用法

    between运算符用于选取介于两个值之间的数据范围内的值,这些值可以是数字,字符串或日期。between运算符包括开始和结束值,相当于>=and<=

    select 字段名 from 表名 where 字段名 between 值1 and 值2;

    order by排序

    用法

    order by 用于对结果集进行排序,默认按升序(asc)进行排序,或者(desc)降序进行排序

    select 字段名 from 表名 order by 字段1,字段2,...asc/desc;\

    delete删除记录

    delete语句用于删除表中记录

    delete from 表名 where 子句

    where 子句 可以指定某些记录被删除。如果不写where,表中所有数据将被删除

    index索引

    index用法

    索引可以提高访问数据的速度

    create index 索引名 on 表名(字段1,字段2,...)

    create index in_name on employees(name);

    使用索引时sql语句的语法和不使用索引没有什么不同,只是sql语句会自动使用索引提高访问数据的速度

    view视图

    view 用法

    视图是基于sql语句的结果集的可视化表,视图中的字段就是来自一个或多个数据库中的真实的表中的字段

    视图总是显示当前的数据。当用户查询视图时,数据库引擎通过使用sql语句来重建视图

    create view 视图名 as select语句;

    create view employees_2021 as select name,salary from employees where hiredate < '2021-01-01';

    当查询employees_2021这个表的时候 就会只出现name 和 salary字段且时间小于2015-01-01

    null值

    Null值代表遗漏的未知数据,它的作用是未知的或不适用的值的占位符

    如果表中的某个列是可选的,那么在不向该列添加值的情况下插入新记录或更新已有记录。意味着该字段将以null值保存

    判断字段值是否是null

    select * from employees where manager is not null/null;

    字段和表的别名

    作用

    在sql语句中可以为表名或字段名指定临时使用的别名(alias),别名只在当前的sql语句中生效,它通常比字段名更具有可读性

    select 字段名 as 别名 from 表名 as 别名;

    as可以省略

    select name 姓名 , salary 工资 from employees e;

    join连接

    作用

    join连接是基于多个表之间的共同字段,把它们结合起来称为一个表显示查询的一种方式

    • 内连接(inner join):列出两个表中都存在的记录
    • 左连接(left join):显示出即使没有匹配也列出左表中的所有记录
    • 右连接(right join):显示出即使没有匹配也列出右表中的所有记录

    select 字段名 as from 表1 join 表2 where子句;

    select name , title from employees inner join managers on employees.empno=managers.empno;

    SubQuery子查询

    用法

    子查询也称嵌套查询,是一种嵌套在其他sql语句的where子句中的查询。子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制

    select 字段1,字段2,...from 表名 where 字段名 操作符(子查询);

    select name from employees where deptno in (select deptno from deptno from dept where loc like '二楼%')

    常用函数

    count函数

    count函数统计符合条件的记录数,count(*)统计表中的记录总数,count(字段名)统计指定字段不为null的记录数

    统计所有员工数

    select count(*) from employees;

    统计deptno不为null的员工

    select count(deptno) from employees;

    max函数

    max函数返回所选字段最大值

    select max(date) from employees;
    

    min函数

    min函数返回所选字段最小值

    avg函数

    avg函数返回所选字段平均值

    sum函数

    sum函数返回所选字段的合计值

    select sum(salary) from employees;
    

    group by 分组

    group by 语句用于结合统计函数,根据一个或者多个列队结果集进行分组

    select 字段名,需要统计的函数 from 表名 where子句 group by 字段名;

    select deptno ,avg(salary) from employees group by deptno;

    表示统计不同部门的平均值

    having过滤分组

    having子句和where子句类似,都是对查询的结果进行过滤。不过他们的过滤对象不同

    where子句是对被选择的列进行过滤,而having子句则对group by 子句所产生的组进行过滤

    select 字段名,统计函数 from 表名  group by 字段名 having 统计函数 运算符 值;

    select deptno ,avg(salary) from emplouees group by deptno having avg(salary)<4500;

  • 相关阅读:
    了解软件测试
    字节跳动八进八出,offer到手,发现项目不重要算法才最重要
    重装系统以后怎么还原电脑原本的资料
    Java核心篇,二十三种设计模式(二十一),行为型——策略模式
    kafka 可以脱离 zookeeper 单独使用吗?为什么?
    python 基于 Web3.py 和 Infura 网关采集链上数据
    深度学习面试题总结
    思维模型 冷热水效应
    结合领域驱动设计,理解TOGAF之架构方法论
    Linux上C++通过LDAP协议使用kerberos认证AES加密连接到AD服务器
  • 原文地址:https://blog.csdn.net/qq_56572867/article/details/126452679