sql_1
2024-08-31 05:33:06
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;
最新文章
- MediaElement 的两种模式
- Javascript中的函数
- Javascript and DOM学习
- 【转】C++中多重继承的二义性及解决办法
- Asp.Net WebApi 启用CORS跨域访问指定多个域名
- 热爱工作 发财机会大增(这里不是选择软件还是硬件的问题,是自己的性格和追求的问题)——当你的老板不如你懂行的时候,还赚的盆满钵满的时候,你就可以考虑独立了 good
- DataSet ,DataTable,DataRow 之间的关系与使用
- 搭建Hadoop集群 (二)
- NET 中的多线程
- 【Android 应用开发】 自定义 圆形进度条 组件
- vue关于为空使用默认值
- mybatis 中的 update 返回值你真的明白吗
- SQL insert
- 用微信小程序连接leancloud数据库注意事项~
- Codeforces 803 G. Periodic RMQ Problem
- Hadoop端口说明
- SpringMCV跨域
- CSS 基础:HTML 标记与文档结构(1)<;思维导图>;
- ProxySQL实现Mysql读写分离 - 部署手册
- Java连接postgreSQL数据库,找不到表。
热门文章
- centos7下源码方式安装gitlab8.9+发送邮件+ldap
- Golang - 异常处理
- Selenium调用JavaScript修改元素属性
- NodeJS的安装与使用
- 洛谷 P1595 信封问题
- 小记——Grub Rescue恢复
- mongodb--作为windows服务启动
- 洛谷 P1649 [USACO07OCT]障碍路线Obstacle Course
- Shell、Xterm、Gnome-Terminal、Konsole简介(转)
- [Javascript] Deep Search nested tag element in DOM tree