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

原文地址:https://www.cnblogs.com/SnowSec/p/14219527.html