sql_1
order by SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC; SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC;
insert into INSERT INTO 表名称 VALUES (值1, 值2,....); INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....); INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing'); INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');
update UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值; UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ; UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson';
delete DELETE FROM 表名称 WHERE 列名称 = 值; DELETE FROM Person WHERE LastName = 'Wilson'; 可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的: DELETE FROM table_name; DELETE * FROM table_name;
top mysql ;
like SELECT * FROM Persons WHERE City LIKE 'N%'; 提示:"%" 可用于定义通配符(模式中缺少的字母)。 以g结尾的city SELECT * FROM Persons WHERE City LIKE '%g'; 包含lon的city SELECT * FROM Persons WHERE City LIKE '%lon%'; 不包含 SELECT * FROM Persons WHERE City NOT LIKE '%lon%'; 其他通配符 % 替代一个或多个字符 _ 仅替代一个字符 [charlist] 字符列中的任何单一字符 [^charlist] 或者 [!charlist] 不在字符列 --------------------------------- SELECT * FROM Persons WHERE FirstName LIKE '_eorge'; SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'; 我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人: SELECT * FROM Persons WHERE City LIKE '[ALN]%'; 上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人: SELECT * FROM Persons WHERE City LIKE '[!ALN]%';
in 语法 SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...); --------------- SELECT * FROM Persons WHERE LastName IN ('Adams','Carter'); ----------------------------------------
between .....and 以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人, SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'; SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter';
Alias SELECT column_name AS alias_name FROM table_name;
join SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P ; -------------或者 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName;
JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName; SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName; 希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName;
union UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2; SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA;
select into SQL SELECT INTO 语法 您可以把所有的列插入新表: SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename 或者只把希望的列插入新表: SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename ------------ 下面的例子会制作 "Persons" 表的备份复件: SELECT * INTO Persons_backup FROM Persons; IN 子句可用于向另一个数据库中拷贝表: SELECT * INTO Persons IN 'Backup.mdb' FROM Persons; SELECT LastName,FirstName INTO Persons_backup FROM Persons; 下面的例子通过从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表: SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'; SELECT Persons.LastName,Orders.OrderNo INTO Persons_Order_Backup FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P; 从其他表筛选部分字段,结合默认字段值给新表添加数据insert into sp_seller (user_id,seller_no,level,status,CREATED_BY,CREATED_ON,UPDATED_BY,UPDATED_ON) select id,substr(role_no,1,3),1,0,'sys',now(),'sys',now() from sp_user where user_type=9 ;
视图注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。 create or replace view v_user (user_id,seller_uid,user_type,nick_name,real_name,bind_mobile, registre_time) as select u.id, case then u.id else u.recommender_id end, u.user_type, u.nick_name, u.REAL_NAME, u.BIND_MOBILE, u.register_time from sp_user u where exists( select from sp_seller s where s.user_id = u.recommender_id) ;
SQL DROP VIEW Syntax DROP VIEW view_name;
行转列 select u.real_name,da.inv1,da.inv3,da.inv6,da.inv9,da.inv12 from sp_user u left join( select seller_id,sum(amount), end) inv1, end) inv3, end) inv6, end) inv9, end) inv12 ;
索引 CREATE INDEX 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。 用户无法看到索引,它们只能被用来加速搜索/查询。 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。 CREATE INDEX index_name ON table_name (column_name) 注释:"column_name" 规定需要索引的列。 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。 CREATE UNIQUE INDEX index_name ON table_name (column_name) 删除索引 用于 MySQL 的语法: ALTER TABLE table_name DROP INDEX index_name;
TRUNCATE TABLE 表名称 如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢? 请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据): TRUNCATE TABLE 表名称
ALTER ALTER TABLE 语句用于在已有的表中添加、修改或删除列。 ALTER TABLE table_name ADD column_name datatype; ALTER TABLE table_name ALTER COLUMN column_name datatype; 现在,我们希望在表 "Persons" 中添加一个名为 "Birthday" 的新列。 我们使用下列 SQL 语句: ALTER TABLE Persons ADD Birthday date; ALTER TABLE Person DROP COLUMN Birthday;
自增mysql CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName ) NOT NULL, FirstName ), Address ), City ), PRIMARY KEY (P_Id) ) 要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法: ; 用于 SQL Server 的语法 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName ) NOT NULL, FirstName ), Address ), City ) ) MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。 默认地,,每条新记录递增 。 要规定 "P_Id" 列以 起始且递增 ,请把 ,); Oracle 您必须通过 sequence 对创建 auto-increment 字段(该对象生成数字序列)。 请使用下面的 CREATE SEQUENCE 语法: CREATE SEQUENCE seq_person MINVALUE START INCREMENT CACHE 上面的代码创建名为 seq_person 的序列对象,它以 起始且以 递增。该对象缓存 个值以提高性能。CACHE 选项规定了为了提高访问速度要存储多少个序列值。 要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值): INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen') 上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 的赋值是来自 seq_person 序列的下一个数字。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。
MySQL Date 下面的表格列出了 MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期之间的天数 DATE_FORMAT() 用不同的格式显示日期/时间 SQL Date 数据类型 MySQL 使用下列数据类型在数据库中存储日期或日期/时间值: DATE - 格式 YYYY-MM-DD DATETIME - 格式: YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS YEAR - 格式 YYYY 或 YY DATETIME 日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。 TIMESTAMP[(M)] 时间戳。范围是'1970-01-01 00:00:00'到2037年。 TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。 TIMESTAMP值返回后显示为。
null SELECT LastName,FirstName,Address FROM Persons WHERE Address IS NULL; SELECT LastName,FirstName,Address FROM Persons WHERE Address IS NOT NULL; MySQL MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。 在 MySQL 中,我们可以使用 IFNULL() 函数,就像这样: )) FROM Products 或者我们可以使用 COALESCE() 函数,就像这样: )) FROM Products
MySQL 数据类型 在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。 Text 类型: 数据类型 描述 个字符。 个字符。 注释:如果值的长度大于 ,则被转换为 TEXT 类型。 TINYTEXT 存放最大长度为 个字符的字符串。 , 个字符的字符串。 BLOB 用于 BLOBs (, 字节的数据。 MEDIUMTEXT 存放最大长度为 ,, 个字符的字符串。 MEDIUMBLOB 用于 BLOBs (,, 字节的数据。 LONGTEXT 存放最大长度为 ,,, 个字符的字符串。 LONGBLOB 用于 BLOBs (,,, 字节的数据。 ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值:ENUM('X','Y','Z') 个列表项,不过 SET 可存储一个以上的值。 Number 类型: 数据类型 描述 到 常规。 到 无符号*。在括号中规定最大位数。 到 常规。 到 无符号*。在括号中规定最大位数。 MEDIUMINT(size) 到 普通。 无符号*。在括号中规定最大位数。 到 常规。 到 无符号*。在括号中规定最大位数。 到 常规。 到 无符号*。在括号中规定最大位数。 FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 开始,而不是某个负数。 Date 类型: 数据类型 描述 DATE() 日期。格式:YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31' DATETIME() *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' TIMESTAMP() *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC TIME() 时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59' 位或 位格式的年。 注释: 位格式所允许的值: 到 。 位格式所允许的值: 到 ,表示从 到 。 * 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
sql 服务器 DBMS - 数据库管理系统(Database Management System) 数据库管理系统是一种可以访问数据库中数据的计算机程序。 DBMS 使我们有能力在数据库中提取、修改或者存贮信息。 不同的 DBMS 提供不同的函数供查询、提交以及修改数据。 RDBMS - 关系数据库管理系统(Relational Database Management System) 关系数据库管理系统 (RDBMS) 也是一种数据库管理系统,其数据库是根据数据间的关系来组织和访问数据的。 世纪 年代初,IBM 公司发明了 RDBMS。 RDBMS 是 SQL 的基础,也是所有现代数据库系统诸如 Oracle、SQL Server、IBM DB2、Sybase、MySQL 以及 Microsoft Access 的基础。
函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表; AVG 函数返回数值列的平均值。NULL 值不包括在计算中。 现在,我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。 我们使用如下 SQL 语句: SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders); SQL COUNT() 语法 SQL COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入): SELECT COUNT(column_name) FROM table_name 现在,我们希望计算 "Orders" 表中不同客户的数目。 我们使用如下 SQL 语句: SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders; FIRST() 函数 FIRST() 函数返回指定的字段中第一个记录的值。 提示:可使用 ORDER BY 语句对记录进行排序。 SQL FIRST() 语法 SELECT FIRST(column_name) FROM table_name; MAX() 函数 MAX 函数返回一列中的最大值。NULL 值不包括在计算中。 SQL MAX() 语法 SELECT MAX(column_name) FROM table_name; 现在,我们希望查找 "OrderPrice" 列的最大值。 我们使用如下 SQL 语句: SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders; MIN 函数返回一列中的最小值。NULL 值不包括在计算中。 SQL MIN() 语法 SELECT MIN(column_name) FROM table_name SUM() 函数 SUM 函数返回数值列的总数(总额)。 SQL SUM() 语法 SELECT SUM(column_name) FROM table_name; GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 SQL GROUP BY 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。 SQL HAVING 语法 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value; 现在,我们希望查找订单总金额少于 的客户。 我们使用如下 SQL 语句: SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer ; 现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 的订单总金额。 我们在 SQL 语句中增加了一个普通的 WHERE 子句: SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer ;
UCASE() 函数 UCASE 函数把字段的值转换为大写。 SQL UCASE() 语法 SELECT UCASE(column_name) FROM table_name; 我们使用如下 SQL 语句: SELECT UCASE(LastName) as LastName,FirstName FROM Persons; LCASE() 函数 LCASE 函数把字段的值转换为小写。 SQL LCASE() 语法 SELECT LCASE(column_name) FROM table_name;
MID() 函数 MID 函数用于从文本字段中提取字符。 SQL MID() 语法 SELECT MID(column_name,start[,length]) FROM table_name; 现在,我们希望从 "City" 列中提取前 个字符。 我们使用如下 SQL 语句: ,) as SmallCity FROM Persons; 参数 描述 column_name 必需。要提取字符的字段。 start 必需。规定开始位置(起始值是 )。 length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数。 SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_name 参数 描述 column_name 必需。要舍入的字段。 decimals 必需。规定要返回的小数位数。 现在,我们希望把名称和价格舍入为最接近的整数。 我们使用如下 SQL 语句: ) as UnitPrice FROM Products; NOW() 函数 NOW 函数返回当前的日期和时间。 提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。 SQL NOW() 语法 SELECT NOW() FROM table_name; 现在,我们希望显示当天的日期所对应的名称和价格。 我们使用如下 SQL 语句: SELECT ProductName, UnitPrice, Now() as PerDate FROM Products;
FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化。 SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_name; 现在,我们希望显示每天日期所对应的名称和价格(日期的显示格式是 "YYYY-MM-DD")。 我们使用如下 SQL 语句: SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate FROM Products;
sql_1的更多相关文章
- [Spark SQL_1] Spark SQL 配置
0. 说明 Spark SQL 的配置基于 Spark 集群搭建 && Hive 的安装&配置 1. 简介 Spark SQL 是构建在 Spark Core 模块之上的四大 ...
- Python 3.x 连接数据库(pymysql 方式)
==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...
- SQL Server 解读【已分区索引的特殊指导原则】(3) - 非聚集索引分区
一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...
- PDO 用法学习
PDO: php data object数据库访问抽象层 基于驱动:1.安装扩展 php_pdo.dll2.安装驱动 php_pdo_mysql.dll linux 编译时参数:--with-pdo= ...
- android开发--数据库(更新或者降低版本)
Andoird的SQLiteOpenHelper类中有一个onUpgrade方法. 1. 帮助文档里说的"数据库升级"是指什么? 你开发了一个应用,当前是1.0版本.该程序用到了数 ...
- Android菜鸟成长记11 -- sqlite数据库的设计和升降级
Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...
- PHP从mysql获取数据的方法
<?php require "database.php"; //读取数据库中的数据 $sql_1 = "SELECT * FROM test_table" ...
- Python 3.5 连接Mysql数据库(pymysql 方式)
由于 MySQLdb 模块还不支持 Python3.x,官方的Mysql连接包只支持到3.4,所以 Python3.5 如果想连接MySQL需要安装 pymysql 模块. pymysql 模块可以通 ...
- SQL多行转多列
--★转换结果如上图 1.首先创建表: CREATE TABLE [成绩表]( ,) NOT NULL, )NULL, , )NULL, , )NULL, , )NULL ) ON [PRIMARY] ...
随机推荐
- [jzoj 5782]【NOIP提高A组模拟2018.8.8】 城市猎人 (并查集按秩合并+复杂度分析)
传送门 Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路,有多次询问,每次询问某两 ...
- Linux思维导图之查找命令
常用查找命令的区别:
- python第十二周:SQL alchemy、pymysql
python操作MySQL mysqldb python3之后的版本就不支持mysqldb了,故在此略过 pymysql #执行SQL语句 # -*- coding:utf-8 -*- #!/user ...
- UVA The Tower of Babylon
The Tower of Babylon Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many det ...
- Maven错误:XXX时出错; invalid LOC header (bad signature)的解决方法
错误原因是该包没下载成功,比如网络问题等因素. 解决方法:进入本地仓库删除该包,然后再执行打包或部署等操作即可.
- find-median-from-data-stream & multiset priority queue 堆
https://leetcode.com/problems/find-median-from-data-stream/ 这道题目实在是不错,所以单独拎出来. https://discuss.leetc ...
- 彻底解决Android GPS没法定位这一顽固问题
大家去网上搜索Android定位location为null没法定位问题.预计有一大堆文章介绍怎样来解决.可是最后大家发现基本没用. 本文将从Android定位实现原理来深入分析没法定位原因并提出真正的 ...
- php模拟并发
原文: http://blog.csdn.net/zhang_xinglong/article/details/16339867 ----------------------------------- ...
- Codeforces Round #253 (Div. 1)-A,B
A题: 由题意可知,最多翻10次就能够(事实上8次就够了).那么我们就用状态压缩表示状态. 对于某种状态,假设某一位为0,那么代表这一位不翻,否则代表这一位翻. 对于某一种翻的状态: 假设牌中有G3, ...
- OLR文件丢失的恢复
11.2.0.1的RAC中,rac1和rac2 一.OLR有备份的情况 1.手动将rac1中的olr重命名,模拟丢失 mv rac1.olr rac1.olr.test 2.重新启动crs ./crs ...