zoukankan      html  css  js  c++  java
  • SQL基本语句

    SQL基本语法:

    数学表达
    数学模型给出了代数理论和关系方式
    规范化理论对数据设计提供了理论指导
    关系
    是一个二维表的抽象,是一个二维表组成。对应二维表的列和行
    每一个属性的取值范围对应一个值域
    元组:表中的一行称为一个元组,元组的一个集合称为关系
    超码
    在一个元组中,能够唯一的标识元组的属性,叫做超码
    超码可以有多个属性,属性的集
    候选码:
    如果一个属性集能唯一的表示这个元组,且不包含多余的属性,那么这个属性被称为候选码
    主码:
    用户可以指定一个候选码为主码,即用户现在使用的为主码。
    一个关系是一个二维表的抽象
    关系中的每一个属性都是不可以分解的,元组不能有一摸一样的。
    关系模式可以看作是莫一个时刻的关系和内容
    关系 元组
    关系模式 属性,值域
    关系模式数据库 关系模式的集合

    增删改查

    SELECT * FROM 表名 WHERE 字段1 = ‘条件1’AND 字段2 = ‘条件2’
    INSERT INTO table name(列1,列2)values(值1,值2)
    UPDATE表名称 SET列名称 = 新值 WHERE 列名称 = 某值
    DELETE FROM 表名称 WHERE 列名称 = 值

    一些最重要的 SQL 命令

    • SELECT - 从数据库中提取数据
    • UPDATE - 更新数据库中的数据
    • DELETE - 从数据库中删除数据
    • INSERT INTO - 向数据库中插入新数据
    • CREATE DATABASE - 创建新数据库
    • ALTER DATABASE - 修改数据库
    • CREATE TABLE - 创建新表
    • ALTER TABLE - 变更(改变)数据库表
    • DROP TABLE - 删除表
    • CREATE INDEX - 创建索引(搜索键)
    • DROP INDEX - 删除索引
    1.1 登录数据库:
    打开DOS命令行,输入
    mysql -h localhost -u root -p
    1.2 创建数据库:

    CREATE DATABASE database-name;

    1.3 查看数据库:

    show databases;
    1.4 查看创建好的数据库:

    1.5 删除数据库:

    DROP DATABSE database_name;
    1.6 选择数据库:选择当前数据库为什么,执行:
    USE database name;
    SQL select
    用于从数据库中选举数据
    select * from TABLE; select X X FROM TABLE;
    SELECT DISTINCT
    DISTINCT 语句用来返回唯一不同的值

    SQL WHERE 语句:

    WHERE语句用来提取那些满足条件的记录

    WHERE的运算符:

    SQL中AND 和 OR语句:

    如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
    如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录

    从上表选举alexa排名大于15且国家为CN或者USA的所有网站

    SQL ORDER BY 关键字

    ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
    ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
    order by A,B 这个时候都是默认按升序排列 order by A desc,B 这个时候 A 降序,B 升序排列 order by A ,B desc 这个时候 A 升序,B 降序排列

    SQL INSERT INTO 语句

    INSERT INTO 语句用于向表中插入新记录
    两种情况,第一种无需指定要插入的列表,只需提供被插入的值即可:

    第二种需要指定列名以及被插入的值

    实例:

    insert into 和 select into from 的区别
    insert into XX select * from X where dudu = 'dudu' 插入一行,要求表XX必须存在
    select * into XX from X where dudu ='dudu' 插入一行要求表不存在 表为XX表中需要插入的行为X

    SQL UPDATE 语句

    UPDATE 语句用于更新表中已存在的记录。
    SQL UPDATE 语法
    UPDATE table_name
    SET column1=value1,column2=value2,...
    WHERE some_column=some_value; column意思为纵列

    UPDATE 警告:更新语句要加WHERE指定某一行更新,否则更改选中的纵列中的所有数据

    SQL DELETE 语句

    DELETE 语句用于删除表中的行。
    SQL DELETE 语法
    DELETE FROM table_name
    WHERE some_column=some_value;

    删除所有数据:DELETE FROM table_name; 或 DELETE * FROM table_name;

    SQL SELECT TOP 子句

    SELECT TOP 子句用于规定要返回的记录的数目。
    SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的
    注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取

    miscrosoft SQL sever 中还可以使用百分比作为参数

    microsoft SQL sever 返回后N行 microsoft SQL sever 返回后N行
    select top 5 * from table select top 5 * from table ORDER BY id desc
    select name from student where id = 1 union select concat(user(),',',database(),',',version());

    SQL LIKE 操作符

    LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
    SELECT column_name(s)
    FROM table_name
    WHERE column_name LIKE pattern; pattern意思为模式
    WHERE name LIKE 'G%' '%K' '%OO%' NOT LIKE '%OO%'
    以G开头 以K结尾 中间包含OO 中间不包含OO
    SQL 通配符
    在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
    SQL 通配符用于搜索表中的数据

    SELECT * FROM Websites 选取name 以任意字符开始,然后是"oogle"的所有客户
    WHERE name LIKE '_oogle';
    SELECT * FROM Websites 选取以G开始,下一个任意字符,然后为O,再一个任意字符,然后为le
    WHERE name LIKE 'G_o_le';

    SQL UNION

    SQL UNION 操作符
    SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
    SQL UNION 操作符
    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
    请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
    SQL UNION 语法
    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;
    注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
    SQL UNION ALL 语法
    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2;

    SQL COUNT() 函数

    接下来介绍几个较常用的函数,并结合图来显示,这是一张记录水果的表,名字价格等。

    COUNT() 函数返回匹配指定条件的行数。

    SQL COUNT(column_name) 语法
    COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
    SELECT COUNT(column_name) FROM table_name;

    SQL COUNT(*) 语法

    COUNT() 函数返回表中的记录数:
    SELECT COUNT(
    ) FROM table_name;

    SQL COUNT(DISTINCT column_name) 语法
    COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
    SELECT COUNT(DISTINCT column_name) FROM table_name;

    SQL GROUP BY 语句

    GROUP BY 语句可结合一些聚合函数来使用
    GROUP BY 语句
    GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

    根据s_id对fruits表中的数据进行分组,SQL语句如下:
    1.首先将s_id中出现的次数进行count求和,求和为16.
    2.然后使用group_by函数对s_id列的结果集进行分组,这样便可以求出s_id这列每个元素出现的次数

    with rollup函数

    若想将所有结果合集展现出来,需要使用group by函数中的with rollup函数
    使用 WITH ROLLUP
    WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)

    MySQL中concat函数

    使用方法:
    CONCAT(str1,str2,…)  
    返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

    想求出某个列中唯一元素并显示,使用通过聚合函数group_concat。还可以添加count(*),显示数量

    HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。用于筛选结果
    还是之前的例子,根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息。句子长,但是并不复杂

    查询某表中,两列的乘积与另一列拼接,并运用having条件

    查询订单价格大于100的订单号和总订单价格

  • 相关阅读:
    年末反思
    Flink运行时架构
    Phoenix 启动报错:Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.
    Clickhouse学习
    Flink简单认识
    IDEA无法pull代码到本地,Can't Update No tracked branch configured for branch master or the branch doesn't exist.
    第1章 计算机系统漫游
    简单的 Shell 脚本入门教程
    开源≠免费 常见开源协议介绍
    MySQL 视图
  • 原文地址:https://www.cnblogs.com/SnowSec/p/14219527.html
Copyright © 2011-2022 走看看