首页 > 数据库 >SQL语句

SQL语句

时间:2023-03-07 09:23:19浏览次数:53  
标签:语句 customers cust 表名 字段 SQL where select

MySQL是c/s架构
第三方(图形化)工具:workbench Navicat SQlyog phpmyadmin

连接服务器配置信息:地址,端口号,用户名,密码
常见的数据库:mysql oracle sql_server
行:row    列:column

连接数据库:mysql -uroot -p密码
查看数据库仓库:show databases;
选择使用一个数据仓库:use mysql;
查看某有一个数据库中的数据表:showtables;
查看表的结构:desc user;

简单查询数据:
    select '字段名1',‘字段名2’
    from ‘表名称’;
查询所有信息:
    select  *
    from "表名称";
表的别名:
    select 别名.字段名
    from '表名' ‘ 别名’;

常量显示:
    select别名.字段,‘别名1’,‘别名2’
    from ‘表名’‘别名’;
去除重复数据(distinct);
    SELECT DISTINCT cs.cust_country
    FROM customers cs;
限定查询:
    SELECT cs.cust_city
    FROM customers cs
    WHERE cs.cust_address = 'abc';
SQL语句执行顺序:
from(数据来源)----where字句(根据条件筛选)---select字句(显示的字段)

关系运算符(>、>=、<、<=、=、不等于【<>、!=】);
    逻辑运算(and(逻辑与) 、or(逻辑或)、not(逻辑非));
    备注:java语言中,逻辑与(&、&&)、逻辑或(|、||)、逻辑非(!)
    与运算(and):全1为1,有0为0
    或运算(or):有1为1,全0为0
    非运算(not):取反运算,真为假,假为真

空值运算;
    is null(空)
    is not null (非空)
    not......is null

范围运算:
    in
    not in
    between......and(含边界值)
    between min and max(包含边界值)

模糊查询:
    like
    通配符(%,_)
    (%匹配任意多个任意字符),(_匹配1个任意字符)
    
mysql数据库查询条件默认不区分大小写

分页:
    select ‘字段1’,‘字段2’
    from ‘表名称’
    where ‘筛选条件’
    limit ‘分页设置’;
执行顺序;from--where--select--limit
limit n (n表示数量,默认从第一条数据开始;等价于limit 0,n)

limit n,m (n,表示起始位,m表示数量)

limit n offset m(表示从第m条开始的n条数量)

排序:(升序:asc,降序:desc)
语法:    select
    from
    where
    order by '字段1' asc|desc,'字段2' asc|desc
    limit

子查询:
查询出下订单的客户信息  
    SELECT pp.*
    FROM customers pp
    WHERE pp.cust_id in(
        SELECT DISTINCT cs.cust_id
        FROM orders cs)

    
多表查询:(内连接:等值连接,外连接:左外,右外)
等价值连接:from......where筛选条件
语法:    select 字段1,字段2,字段3
    from 表1,表2,表3
    where 表1.字段 = 表2.字段
    and 表2.字段 = 表3.字段

内连接的语法:from 表1 inner join 表2 on 筛选条件
可以省略inner

左外:from 表1 left join 表2 on 筛选条件
left join 与 left outer join 一样的(查询left join左边表名的所有数据)

右外:from 表1 right join 表2 on 筛选条件
(查询right join 右边表名的全部数据)

多表查询的运算
筛选出满足题意条件的数据(消除笛卡尔积)
where 筛选条件

分组&统计函数(聚合函数,分组函数)
分组之后进行筛选,需要使用having
语法:    select 字段1
    from 表1,表2
    where 分组之前的筛选
    group by  '分组的字段'
    having 分组后之后筛选
    order by '排序字段' desc|asc
    limit 分页
where字句之后,不能使用聚合函数

常用的统计函数:max(),min(),sum(),avg(),count()(表示统计null的值)

使用集合(union,union all)可以达到分组的效果
关于union:把多个SQL语句执行结果,合并为1张表
(所以每个sql的字段个事故必须一致)

union与union all 的区别:
union all不会去重,union会去除重复的数据


向表中插入数据(insert into),必须注意数据类型,数据长度,约束,防止插入数据错误
语法:    insert into 表名(字段名)
    values(值,与字段匹配)

插入全部字段的值:
    没有写字段名:
    INSERT INTO orders
    VALUES (20012,'2006-09-01 00:00:01',10004);
    写字段名:
    INSERT into orders         (order_num,order_date,cust_id)
    VALUES (20013,"2006-09-01 00:00:01",10006)
    
插入部分字段的值:(注意:只插入必填项的数据)
    INSERT INTO customers(cust_id,cust_name)
    VALUES (10007,'lwl')

一次性插入多条数据:
    INSERT INTO customers (cust_id,cust_name)
    VALUES (10008,'wyl'),(10009,'xl'),(10010,'vl'),(10011,"xx")


删除表中的数据(delete from)
(通常只删除自己构造的测试数据库,使用where来筛选自己的数据)
没有使用where,将删除整个表中的所有数据

删除部分数据:(例如)
    DELETE FROM customers
    where cust_id = 10010
    
    DELETE FROM customers
    where cust_id in (10011,10009,10008)

快速删除表中的所有数据:truncate 表名

修改表中的数据:(少了where的话,整个表中的所有数据行的相关字段都会被修改)
    update 表名
    set 修改的字段
    where 字段值(条件)

清空相关字段的值:(必填项的内容不能清空)
    UPDATE customers
    SET cust_city = NULL
    where cust_id = 10006;

管理数据库对象:(create,drop,alter)
新增数据库:create database 表名
删除数据表:drop database 表名
对数据表的操作:create table 表名(字段1 数据类型(数据长度 约束......))
 
快速新增表:(复制一张表格,含数据)
    CREATE TABLE customers_2 AS
    SELECT ps.*
    FROM orders ps;
    
    (复制一张表格,含数据)
    CREATE TABLE customers_2 AS
    SELECT ps.*
    FROM orders ps
    WHERE 1=2;
删除表格:drop table 表名称
修改表结构:alter table 表名称

导出数据库:
MySQLdump -uroot -p密码     
    
 

    
    



















标签:语句,customers,cust,表名,字段,SQL,where,select
From: https://www.cnblogs.com/IceSparks/p/17186927.html

相关文章

  • MySQL中这14个必备神器,用过都说好
    前言:最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。1.group_concat 在我们平常的工作中,使用groupby......
  • mysql中 Char 和 varchar 的区别?
    1、char的长度是固定不变,而varchar的长度是可变的例如值:abc类型char(10),存储值为:abc_______(abc+7个空格)类型varchar(10),存储值为:abc(自动缩短为3个字母的长......
  • [WPF]C#连接使用sqllite数据库,,支持多线程操作
    https://www.zhaokeli.com/article/8192.html项目开发环境win764vs2015.net4.6下载  System.Data.SQLite.dll-for-.net4.0.zip  引用到项目中使用sqllite扩展的......
  • MySQL创建函数报错:1418 - This function has none of DETERMINISTIC, NO SQL, or READ
    创建函数时报错:1418-ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wantto......
  • .Net6 使用log4net将日志写入SqlServer
    第一步:引用Nuget包System.Data.SqlClient第二步:修改log4net.config配置文件增加appender节点注意,要将日志写入数据库需先创建数据库与日志表用于存放日志,不然日志有了......
  • 【Mybatis】【SQL执行过程】【二】Mybatis源码解析-Mapper代理执行逻辑
    1 前言上节我们回顾了下Mapper接口的解析存放以及代理的入口和创建代理的过程,那么这节我们就来看下MapperProxy的代理执行逻辑。2 源码分析2.1 invoke代理逻......
  • 3. 循环语句
    3.循环语句while循环引入不知道大家是否喜欢下象棋,反正楼下大爷还是挺喜欢的~如果这盘棋下完了,可以收拾一下接着重来一局,这重来一局说到底就是重复软件中也是需要这......
  • 牛客网 Mysql【入门】
    牛客网Mysql【入门】如果select语句同时包含有groupby,having,limit,orderby那么他们的顺序是:where(限制属性)groupby(分组)having(筛选)orderby(排序)limit(分页【......
  • 安装启动mysql
    1、进入C盘下mysql安装的bin目录下执行,mysqld-install命令安装mysql服务2、输入mysqld--initialize-insecure--user=mysql--explicit_defaults_for_timestamp初始化m......
  • 每日总结2023/3/6(安卓连接mysql)
    更换网络需要更改ip如何查找自己ip?cmd-输入ipconfig  先上结果   原文链接(26条消息)mysql5.7.35安装配置教程【超级详细安装教程】_qq-1438608594的博客-......