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的订单号和总订单价格

  • 相关阅读:
    #Bug--Mapper资源加载不到
    Spring项目用JUnit调试时出现错误 Failed to load ApplicationContext 的解决方法
    安装和配置maven遇到的坑
    DataGrip 异常
    数据库-1055报错-把only_full_group_by去掉
    spring boot 配置logback.xml 日志重复打印
    eclipse创建maven项目
    【C++11新特性】 C++11智能指针之weak_ptr
    socket编程中的粘包问题解决方案
    c++的反映机制实现
  • 原文地址:https://www.cnblogs.com/SnowSec/p/14219527.html
Copyright © 2011-2022 走看看