--语 句 功 能
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DROP VIEW --从数据库中删除视图
CREATE INDEX --为数据库表创建一个索引
DROP INDEX --从数据库中删除索引
CREATE PROCEDURE --创建一个存储过程
DROP PROCEDURE --从数据库中删除存储过程
CREATE TRIGGER --创建一个触发器
DROP TRIGGER --从数据库中删除触发器
CREATE SCHEMA --向数据库添加一个新模式
DROP SCHEMA --从数据库中删除一个模式
CREATE DOMAIN --创建一个数据值域
ALTER DOMAIN --改变域定义
DROP DOMAIN --从数据库中删除一个域
--数据控制
GRANT --授予用户访问权限
DENY --拒绝用户访问
REVOKE --解除用户访问权限
--事务控制
COMMIT --结束当前事务
ROLLBACK --中止当前事务
SET TRANSACTION --定义当前事务数据访问特征
--程序化SQL
DECLARE --为查询设定游标
EXPLAN --为查询描述数据访问计划
OPEN --检索查询结果打开一个游标
FETCH --检索一行查询结果
CLOSE --关闭游标
PREPARE --为动态执行准备SQL 语句
EXECUTE --动态地执行SQL 语句
DESCRIBE --描述准备好的查询
---局部变量
declare @id char(10)
--set @id = ’10010001’
select @id = ’10010001’
-
Sql_测试常用sql的关键字语句
2020-10-13 20:47:42Select 查询 查询表中的所有数据:SELECT * FROM 表名; 查询表中的A1,A2列的数据:SELECT A1,A2 FROM 表名; where 条件语句 ...id的结果从另一个语句中获取:SELECT * FROM A WHERE Id in (SELECT cSelect 查询
查询表中的所有数据:SELECT * FROM 表名;
查询表中的A1,A2列的数据:SELECT A1,A2 FROM 表名;where 条件语句
查询表中A1大于1的所有数据:SELECT * FROM 表名 WHERE A1>1;
查询表中A1大于1且A2大于1的所有数据:SELECT * FROM 表名 WHERE A1>1 AND A2>1;子查询语句
id的结果从另一个语句中获取:SELECT * FROM A WHERE Id in (SELECT consignmentid FROM B);
ORDER BY 排序(desc降序 asc升序)
order by语句放在所有关键字以后,如条件语句(where),分组语句(group by)
根据字段CreationTime 升序:SELECT * FROM testconsignment ORDER BY CreationTime ASC;
根据字段CreationTime 升序:SELECT * FROM testconsignment ORDER BY CreationTime DESC;
语句放在分组和条件语句之后:SELECT count(*),LoginAccountName FROM driver GROUP BY LoginAccountName,IsStart HAVING IsStart=1 ORDER BY CreationTime DESC;GROUP BY 分组查询
通过某字段或多个字段来分组,分组查询必须有如“count()”类似的函数,用于对结果集进行分组(例子:比如学习按照性别来统计人数,男性:30;女性:30用sql表示就是:
SELECT count(),sex FROM student GROUP BY sex;
分组查询:SELECT count(),LoginAccountName FROM driver GROUP BY LoginAccountName
分组查询带条件就不再用“where”,而是用HAVING:
SELECT count(*),LoginAccountName FROM driver GROUP BY LoginAccountName,IsStart HAVING IsStart=1 ORDER BY CreationTime DESC;Having 条件关键字
用于有GROUP BY 分组查询后,用的条件语句:
SELECT count(*),LoginAccountName FROM driver GROUP BY LoginAccountName,IsStart HAVING IsStart=1 ORDER BY CreationTime DESC;Left Join…On左关联/ Right Join…On右关联
左关联:返回左表(table1)所有行,即使没有匹配上右边表(table2)的的数据;
SELECT * FROM table1 A LEFT JOIN table2 B ON A.AccountName = B.LoginAccountName;
右关联:关键字会右表 (table2) 那里返回所有的行,即使在左表 (table1) 中没有匹配的行
SELECT * FROM table1 A LEFT JOIN table2 B ON A.AccountName = B.LoginAccountName;sql书写顺序
以下两种表达查询结果一样:(以PlateNumber,CreateTime分组查询,并筛选条件CustomerId ,CreateTime,InterfaceType,再排序且聚合函数COUNT(PlateNumber)大于1的,最后取出两条数据)- SELECT PlateNumber,CreateTime,COUNT(PlateNumber) as num FROM
trackconsumelog WHERE CustomerId = “dxj00024” AND
CreateTime>“2020-10-13” AND InterfaceType=1 GROUP BY
PlateNumber,CreateTime HAVING COUNT(PlateNumber)>1 order by
CreateTime desc limit 2; - select * from ( SELECT PlateNumber,CreateTime,count(PlateNumber)
as num,InterfaceType FROM trackconsumelog WHERE CustomerId =
“dxj00024” and CreateTime >“2020-10-13” InterfaceType=1 group by
PlateNumber,CreateTime order by CreateTime desc ) tt where tt.num >
1 limit 2;
- SELECT PlateNumber,CreateTime,COUNT(PlateNumber) as num FROM
-
mysql对应语句关键字_mysql常用语句及关键字
2021-01-19 13:13:30一、常用sql语句注意,关键字和函数最好大写,字段和表名小写,这样很容易区分。而且,表名用t_开头,字段最好用f开头。1.创建数据库t_userCREATE DATABASE t_user;2.删除数据库t_userDROP DATABASE t_user;3.使用...一、常用sql语句
注意,关键字和函数最好大写,字段和表名小写,这样很容易区分。而且,表名用t_开头,字段最好用f开头。
1.创建数据库t_user
CREATE DATABASE t_user;
2.删除数据库t_user
DROP DATABASE t_user;
3.使用数据库t_user
USE t_user;
显示数据库中的表
SHOW TABLES;
4.创建数据表 t_order
表名的命名规范为表名必须用 t_ 的前缀。比如t_order
CREATE TABLE IF NOT EXISTS t_order(
id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键,自增id',
order_id VARCHAR(25) NOT NULL UNIQUE COMMENT '订单号,唯一',
pay_status TINYINT(2) UNSIGNED DEFAULT '0' COMMENT '0:未支付,1:支付成功,2:支付失败,3:已下单,4:申请退款,5:退款成功,6:退款失败 ',
user_id INT(11) NOT NULL COMMENT '用户id' ,
total_price DECIMAL(25, 2) NOT NULL COMMENT '交易金额',
result text NULL COMMENT '订单的回调结果',
create_date DATE COMMENT '购买日期',
create_time DATETIME COMMENT '购买时间',
INDEX(order_id,create_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
AUTO_INCREMENT 表示自增,UNSIGNED 表示无符号,UNIQUE 表示唯一约束,COMMENT为字段描述。DEFAULT表示默认值。NOT NULL表示不能为空。
查看建表语句DDL:
SHOW CREATE TABLE 表名
5.修改字段:
ALTER TABLE t_input_invoice_order CHANGE agent_id agent_number VARCHAR(25)
添加字段:
ALTER TABLE t_input_invoice_agent
ADD merchant_id VARCHAR(25);
在指定位置(比如某一列的字段后面)添加字段,可以使用AFTER,如下:
ALTER TABLE t_input_invoice_deduction
ADD fdeduction_date DATE COMMENT '抵扣税期'
AFTER fdeduction_month ;
删除字段:
ALTER TABLE t_input_invoice_agent DROP COLUMN merchant_id
6.删除数据表t_sys_role
DROP TABLE IF EXISTS t_sys_role;
6.插入数据
INSERT INTO t_sys_role VALUES(1,'0','管理员','admin');
7.查询数据
SELECT * FROM t_sys_role;
8.修改数据
UPDATE t_sys_role SET role='user' WHERE id=1;
注意:使用UPDATE进行更新时,SET多个字段,使用逗号,隔开,而不是用AND。
正确的语句如下:
UPDATE t_sys_user SET fname='lin' , fscore='88' WHERE fid='3'
如果使用以下sql,可能会出现问题。
UPDATE t_sys_user SET fname='lin' AND fscore='88' WHERE fid='3'
9.删除数据
DELETE FROM t_sys_role WHERE id=1;
注意:在使用DELETE和UPDATE之前,一定一定要先SELECT查询一下,将要删除的是哪些数据。
最好在查询后,还"导出数据"进行备份,然后再进行数据变更。
二、建表关键字
0. constraints :SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
比如,not null,unique,PRIMARY KEY,foreign key,default都属于约束
可以用CONSTRAINT 命名约束。如下,命名外键约束为fk_PerOrders。
CREATE TABLEt_orders
(
Id_Oint NOT NULL,
OrderNoint NOT NULL,
Id_Pint,PRIMARY KEY(Id_O),CONSTRAINT fk_PerOrders FOREIGN KEY(Id_P)REFERENCESPersons(Id_P)
)
1.PRIMARY KEY 主键
主键表示该列值在表中是唯一的,不可以有重复。
主键必须包含唯一的值。主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
主键的命名规范为pk_开头
2.AUTO_INCREMENT自增
auto_increment 就是对主键自动增加编号的。
3.UNSIGNED无符号
unsigned是无符号的意思,代表该字段没有正负。
4.字段数据类型中,varchar和char的区别是什么?
varchar长度是可变的,能够节省空间。比如说存储"abc",CHAR(10)需要10个字符的空间来储存,而VARCHAR(10)只需要3个字符的空间。
5.FOREIGN KEY 外键约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
如下示,Id_P是Orders表的外键,也是Persons表的主键。可以用CONSTRAINT 命名约束。命名外键约束为fk_PerOrders。
CREATE TABLEOrders
(
Id_Oint NOT NULL,
OrderNoint NOT NULL,
Id_Pint,PRIMARY KEY(Id_O),CONSTRAINT fk_PerOrders FOREIGN KEY(Id_P)REFERENCESPersons(Id_P)
)
6.UNIQUE 约束, 使数据库表中的某一列或某几列的里面的内容不重复
7. CREATE TABLE SELECT
根据查询结果创建表格
CREATE TABLE user2 (SELECT a.* FROM user1 a WHERE a.ID='SYSTEM')
三、查询关键字
0. IS NULL和IS NOT NULL。
不能使用 字段= NULL 或 字段!= NULL 在列中查找数据。可以使用以下格式:
WHERE 字段 IS NOT NULL
NULL值查询使用IS NULL和IS NOT NULL查询,而空值('')可以使用=或者!=、、等算术运算符。
在实际开发中,建议使用空值。使用WHERE IS NULL不走索引。
Mysql里面NULL和空值的区别,详情见: https://www.cnblogs.com/lonelyxmas/p/10371120.html
0. % 通配符,表示一个或多个字符
如下示,查询170开头的电话号码。
SELECT order,age,sex FROM phone_info WHERE phoneNumber LIKE "170%"
最好不要用左模糊,会因为扫全表而变慢。
1. AS 别名,其中 AS 可以省略
普通的表可以取简单的别名a,b,c。。而任意查询出来的结果,也可以通过取别名作为一个表来使用。
比如,以下将(SELECT * FROM user WHERE id=1 )的查询结果,通过取别名来使用
SELECT a.username FROM (SELECT * FROM user WHERE id=1 ) a;
字段,同样也可以通过AS取别名。
2. JOIN 连接:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。通过Inner JOIN ... On 实现。
JOIN其实就是把两(多)张表合起来,从大表里面查询的一个操作。
如下示,查找Persons中Id_P和Orders表中Id_P相同的数据。
SELECTPersons.LastName, Persons.FirstName, Orders.OrderNoFROMPersonsINNER JOINOrdersON Persons.Id_P =Orders.Id_PORDER BY Persons.LastName
各种JOIN的区别:
JOIN: 如果表中有至少一个匹配,则返回行
INNER JOIN 与 JOIN 是相同的。
LEFT JOIN: 即便关联条件不符合,左边表的数据一定会存在合并后的大表中。
RIGHT JOIN: 即便关联条件不符合,右边表的数据一定会存在合并后的大表中。
FULL JOIN: 只要其中一个表中存在匹配,就返回行。
3. UNION 组合查询/联合查询
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 联合的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同。
如下示:
SELECT Employee_Name FROM Employees_China
UNION SELECT Employee_Name FROM Employees_USA
另外,UNION和UNION ALL区别:
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
4.SELECT INTO 查询并插入
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECTLastName,FirstNameINTOPersons_backupFROM Persons
另外的,还有INSERT INTO SELECT 语句
从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
SQL INSERT INTO SELECT 。
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO TABLE2 SELECT * FROM TABLE1;
INSERT INTOtable2
(column_name(s))SELECTcolumn_name(s)FROM table1;
5.DISTINCT 只返回不同的值。
以下返回不同的userId,不会重复:
SELECT DISTINCT userId FROM user
DISTINCT支持单列、多列的去重方式。
单列去重的方式简明易懂,即相同值只保留1个。
多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。
多列去重如下 :
SELECT count( DISTINCT user_code, user_no ) FROM t_user
6.LIMIT 分页查询。
LIMIT X,Y 序号从0开始数,其中的X表示从第几行开始,Y表示返回几条记录。
示例:每页5行,返回第2页的数据,即返回第6~10条记录。
SELECT user_name FROM user LIMIT 5,5
示例:查找入职员工时间排名倒数第三的员工所有信息 。
思路:倒序,然后分页查找,找到从第序号为2的开始的一条记录,就是倒数第三。
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1
注意:Mysql并没有TOP关键字。
7.子查询
子查询的结果,可以作为另一张表使用。
8.EXISTS 指定一个子查询,检测行是否存在。
用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
常用语法:not exists (子查询)
或者 not exists (select 1 from 表名)
select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,select 1效率比select * 高。
参考资料:https://blog.csdn.net/ahesihua/article/details/84275723
示例如下:
selectc_insrnc_cde, c_nme_cnfromt_prd_ins awhere a.c_prod_no = '01'
and not exists(select 1
from (selectd.c_insrnc_cde, a.c_nme_cnfromt_prd_ins a,
tb_bas_ply_policy_rdr c,
tb_bas_ply_policy_rdr_list dwhere a.c_insrnc_cde =d.c_insrnc_cdeand d.c_policy_id =c.c_policy_idand d.c_seq_no =c.c_seq_noand c.c_reach_area = '00701') twhere t.c_insrnc_cde = a.c_insrnc_cde);
9.查看表结构、查看字段的命令,如下:
desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;
10.其他:IN()、OR()、LIKE
四、分组关键字
1.GROUP BY 分组
将查询结果按某一列或多列的值分组
如下示:
SELECT Cno,count(sno)FROMcourseGROUP BY Cno;
一张表,一旦分组完成后,查询后只能得到组相关的信息。可以通过count(),sum(),max(),min(),avg()统计。
--统计分组后各种情况的数量
SELECT COUNT(*),age,sex FROM staff WHERE 1=1
and create_date>='2018-05-07 00:00:00'
GROUP BYage,sexORDER BY age ASC
2.HAVING 分组筛选
对由SUM()或其它集合函数运算结果的输出进行限制。可以对分组添加限制条件。如下示:
SELECT store_name, SUM(sales)FROMStore_InformationGROUP BYstore_nameHAVING SUM(sales) > 1500
3.COUNT(column_name) 函数返回指定列的值的数目
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
4.CASE... WHEN
类似于java中的switch()语句。
有两种表现形式:
CASE
WHEN SEX = '1' THEN '男'
WHEN SEX= '2' THEN '女'
ELSE '未知' END
或者是:
CASEsexWHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '未知'
END;
可用于查询中,也可以用于变更中。
示例如下,查询示例如下:
SELECTid,name,create_time,
(CASE WHEN status = 0 THEN '失败'
WHEN status = 1 THEN '成功'
WHEN status = 2 THEN '等待中'
ELSE '其它' END) ASresultFROM t_order
变更示例如下,变更salary表中的性别:
UPDATE salary
SET
sex=CASE sex
WHEN 'm' THEN 'f'
ELSE 'm'
END;
示例2,将数字型的年月拼接起来,比如,将数字字段2019和2,拼接成一个日期2019-02,
CAST(fdeduction_month AS CHAR)表示将数字类型转化为字符类型。
UPDATEt_input_invoice_deductionSET fdeduction_date=CONCAT(fdeduction_year, '-',CASE WHEN fdeduction_month<10
THENCONCAT('0',CAST(fdeduction_month AS CHAR))ELSE CAST(fdeduction_month AS CHAR)END )
Case...When还可以作为COUNT的条件。
比如,count( CASE WHEN err_str is not null THEN 1 ELSE NULL END )表示如果err_str不是空那么就计数1,用于计算err_str不为空的数量
类似于编程语言中的if else。是判断语句
比如:
SELECT MOND_ID,INTERFACE_CODE,COUNT(*) as REQUEST_COUNT, count( CASE WHEN errstr is not null THEN 1 ELSE NULL END ) asFAILURE_COUNTFROM vbase.ESB_TRACE_20180428 WHERE 1=1
and create_date>='2018-04-28 09:00:00'
and create_date
and INTERFACE_CODE='Svc_ProvisionRet'
GROUP BYMOND_ID,INTERFACE_CODEORDER BY MOND_ID ASC
四、字符串处理
1.CONCAT (Str1,Str2)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
示例如下:
SELECT name FROM user
WHERE name LIKE CONCAT('%','ming','%')
2.GROUP_CONCAT(字段):将一个或多个字段的多行数据,把所有值合并成一行。默认按逗号,分隔
比如emp_no字段有三行数据,分别为10007、10008、10010,那么GROUP_CONCAT(emp_no)的值为合并后的 10007,10008,10010
示例:按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
SELECT dept_no,GROUP_CONCAT(emp_no) asemployeesFROMdept_empGROUP BY dept_no
如果想使用其他的分隔符 ,可以使用GROUP_CONCAT(字段separator '分隔符') 。
示例如下:
select dept_no,group_concat(emp_no separator ';') from dept_emp group by dept_no;
3.REPLACE() 替换
4.SUBSTRING(str,from,to) 截取字符串
str为字符串,from表示起始下标,to表示末尾下标。from和to这两个数字都包含边界。比如以下sql,表示从第一个下标到第十的下标。
SUBSTRING('2019-08-07 17:34:57' ,1 , 10);
结果为2019-08-07
5.LEFT()、RIGHT().
6.CAST(字段名 AS CHAR)表示将字段转化为字符类型。
CAST(字段名 AS DECIMAL(23,2)) 表示将字段转化为小数类型,共23位,小数为2位。如果字段是以科学计数法表示的,也可以通过CAST将科学计数法转化为小数。
7.TRIM(字符)会同时删除字符串前后出现的空白字符
LTRIM(字串): 将所有字串开头的空白字符移除。
RTRIM(字串): 将所有字串结尾的空白字符移除。
四、日期处理
NOW():表示当前日期及时间
CURDATE():表示当前日期
CURTIME() :表示当时的时间(不包含日期)
四、INDEX索引
索引对于操作者,仅仅提供创建、删除和修改的功能。操作者在增删改查过程中,系统会自动调用索引。
可以在表中创建索引,以便更加快速高效地查询数据。
索引的命名规范为idx_开头。比如idx_name
1.添加索引。
CREATE INDEX 索引名 ON 表名(字段名)
创建一个简单的索引,名为 idx_name,在 t_person 表的 last_name 列,如下示:
CREATE INDEX idx_name ON t_person(last_name)
2.ADD INDEX 添加索引:
ALTER TABLE 表名 ADD INDEX 索引名 (字段名1[,字段名2 …]);
例子: ALTER TABLE t_employee ADD INDEX idx_emp_name (name);
3.SHOW INDEX 显示索引
例如:SHOW INDEX FROM t_person
五、EXPLAIN 执行计划
查看SELECT语句的执行计划
在Sql语句前面加一个EXPLAIN即可。
六、练习题目:
-
SQL查询语句关键字方法
2017-02-05 15:15:46SQL常用的一些关键字SQL常用的一些关键字
1、distinct关键字
显示没有重复记录的商品名称,商品价格和商品类别列表
select distinct ware_name,price from t_ware;
2、使用计算列
查询所有商品价格提高20%后的价格
select ware_id,ware_name,price*1.2 from t_ware'
3、列的别名
a) 不使用as
select ware_id,ware_name,price*1.2 price_raise from t_ware;
b)使用as
select ware_id,ware_name,price*1.2 price_raise from t_ware;
4、使用逻辑表达式
- a)not 显示商品价格不大于100的商品
select ware_id,ware_name,price,category_id from t_ware where not price>100;
- b)or 显示商品类别编号为5或6或7的商品
select ware_id,ware_name,price,category_id from t_ware where category_id=5 or category_id=6 or category_id=7;
- c)and 显示商品价格大于100且商品类别编号为5的商品
select ware_id,ware_name,price,category_id from t_ware where not price>100 and category_id = 5;
5、使用between关键字
显示商品价格在200元至1000元之间的商品(留心一下,是半开区间还是封闭区间?)
select ware_id,ware_name,price,category_id from t_ware where price between 200 and 1000;
6、使用in关键字
显示商品类别为5,6,7且价格不小于200元的商品
select ware_id,ware_name,price,category_id from t_ware where category_id in (5,6,7) and price>=200;
7、使用like子句进行模糊查询
- a)%(百分号)表示0到n个任意字符
select ware_id,ware_name,price,category_id from t_ware where ware_name like '%纯棉%';
- b)_(下划线)表示单个的任意字符
select ware_id,ware_name,price,category_id from t_ware where ware_name like '%长袖_恤%';
8、转义字符escape的使用
select ware_id,ware_name,price,category_id from t_ware where ware_name like '%\%%' escape '\';
9、使用order by给数据排序
select * from t_ware_category where parent_id = 0 order by ware_id ; -------- select * from t_ware_category where parent_id = 0 order by ware_id asc; --------- select * from t_ware_category where parent_id = 0 order by ware_id desc ;
rownum
- a)查询前20条商品记录
select ware_id,ware_name,price from t_ware where rownum <= 20;
- b)查询第11条至第20条记录
select ware_id,ware_name,price from t_ware where rownum<=10 and ware_id not in(select ware_id from t_ware where rownum<=10);
10、常用统计函数
- a)sum()返回一个数字列或计算列的总和
b)avg()对一个数字列或计算列球平均值 c)min()返回一个数字列或一个数字表达式的最小值 d)max()返回一个数字列或一个数字表达式的最大值 e)count()返回满足select语句中指定的条件的记录值select sum(price) from t_ware;
11、多表查询和笛卡尔乘积
查询商品编号,商品名称,商品价格和商品类别名称
select t_ware.ware_id, t_ware.ware_name, t_ware.price ,t_ware_category_name from t_ware, t_ware_category where t_ware.category_id=t_ware_category.category_id;
使用join
- a)左连接
select t_ware.ware_id,t_ware.ware_name,t_ware.price,t_ware_category.category_name from t_ware left join t_ware_category on t_ware.category_id=t_ware_category.category_id;
select w.ware_id,w.ware_name,w.price,wc.category_name from t_ware w left join t_ware_category wc on w.category_id=wc.category_id;
- b) 右连接
select t_ware.ware_id,t_ware.ware_name,t_ware.price,t_ware_category.category_name from t_ware left join t_ware_category on t_ware.category_id=t_ware_category.category_id;
12、使用union
select ware_id,ware_name from t_ware where ware_name like '%T恤%' union select ware_id,ware_name from t_ware where ware_name like '%手提包%'
13、使用group by
- a)统计每个二级类别下有多少商品,以及商品总价值
select w.category_id,wc.category_name, count(w.ware_id),sum(w.price) from t_ware w left join t_ware_category wc on w.category_id=wc.category_id group by w.category_id,wc.category_name;
- b) 统计每个一级类别下有多少商品,以及商品总价值
select wc2.category_id,wc2.category_name,sum(w.price) from t_ware w left join t_ware_category wc on w.category_id=wc.category_id left join t_ware_category wc2 on wc.parent_id=wc2.category_id group by wc2.category_id,wc2.category_name;
14、使用having对结果进行筛选
–举例子说明:查询table表查询每一个班级中年龄大于20,性别为男的人数
select COUNT(*)as '>20岁人数',classid from Table1 where sex='男' group by classid,age having age>20
- 需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
- 执行where子句查找符合条件的数据;
- 使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
- having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
- having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
- having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
-
Sql语句常用关键字
2017-05-08 19:50:00PREPARE --为动态执行准备SQL 语句 EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询 ---局部变量 declare @id char(10) --set @id = ’10010001’ select @id = ’10010001’ 转载于:...转载于:https://www.cnblogs.com/Yxxxxx/p/6826986.html
-
SQL常用关键字
2017-08-24 18:54:00常用SQL语句 SAP实际上提供了两种访问数据库的方式:Open SQL与Native SQL ---语句 功能 数据操作 insert 向表添加新数据行 delete 从表中删除数据行 update 更新表中数据行 ... -
sql sum求和 值小于不显示_Sql语句常用关键字
2020-12-31 03:39:26最近接触sql比较多,发现自己已经遗忘的也差不多,要用到的时候迟迟拿不出来,今天开始会在知乎上纪录一些sql语句学习的内容,内容重在说明查询语句的用法。 一、sql查询语句的初始介绍 1、查询语句的一般写法:... -
mysql 关键字_mysql常用语句及关键字
2021-01-25 11:12:46一、常用sql语句1.创建数据库create database test;2.删除数据库drop database test;3.使用数据库use test;4.创建数据表create table sys_role(id int(4) not null primary key ,available char(20) not null,... -
mysql关键字使用什么符号_mysql常用语句及关键字
2021-01-21 06:16:12一、常用sql语句1.创建数据库create database test;2.删除数据库drop database test;3.使用数据库use test;4.创建数据表create table sys_role(id int(4) not null primary key ,available char(20) not null,... -
达梦数据库关键字冲突问题解决及常用SQL语句整理
2020-08-23 10:59:261、解决SQL中关键字冲突问题 一般修改dm_svc.conf文件 列如:过滤object,result关键字。 通用版里面增加格式如下:EXCLUE_RESERVED_WORDS=object,OBJECT,RESULT,result ZYJ 版本里面增加如下内容:KEYWORDS=object,... -
sql语句中常用关键字与函数整理
2019-01-26 20:22:02关键字 distinct -- 去掉重复的关键字 select distinct 列名 from 表名 -- order by :排序 -- desc 降序 ...select 列名 from 表名 order by 列名1 desc,...--sql: select top 5 列名 from 表名 --百分比+perc... -
【MySQL】MySQL常用SQL关键字
2019-10-23 10:12:06MySQL常用SQL语句 -
【MYSQL知识必知必会】 SQL中关键字执行顺序
2019-12-17 11:17:47在SQL语句中每个关键字都会按照顺序往下执行,而每一步操作,会生成一个虚拟表,最后产生的虚拟表会作为执行的最终结果返回。下面的是常用的关键字的执行顺序: (8)SELECT (9)DISTINCT<select_list> (1)FROM &... -
SQL 常用关键字释义和用法
2012-10-20 21:32:16下面 是 从网络上整理 出来的 SQL 关键字和 常用函数的 释义和简单用法。 1.1 SELECT SELECT 语句用于从表中选取数据。 结果被存储在一个结果表中(称为结果集)。 语法:SELECT 列名 FROM 表名SELECT *... -
SQL语句及其关键字总结(一)
2013-08-27 20:06:49SQL语句及其关键字总结(一) 1.select SQL是用来做什么的呢?一个最常用的方式是将资料从数据库中的表格内选出。从这一句回答中,我们马上可以看到两个关键字: 从 (FROM) 数据库中的表格内 选出 (SELECT)。... -
达梦数据库日期格式化_达梦数据库关键字冲突问题解决及常用SQL语句整理
2020-12-24 04:15:461、解决SQL中关键字冲突问题一般修改dm_svc.conf文件列如:过滤object,result关键字。通用版里面增加格式如下:EXCLUE_RESERVED_WORDS=object,OBJECT,RESULT,resultZYJ 版本里面增加如下内容:KEYWORDS=object,... -
关于mysql数据库中常用的面试题以及sql语句和关键字的详解!
2017-12-28 10:12:51最近经常看到一些关于一些sql面试题...接下来我对最近常见的几个sql题的解题思路以及所用关键字做一个详细的介绍,希望能帮助到大家!一、已知有如下表内容 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-0 -
常用SQL语句详解
2019-11-08 17:20:55一、DDL DATA DEFINITION LANGUAGES (数据定义语言),...常用的语句关键字主要包括 CREATE、DROP、ALTER 等。 1. 数据库定义 1.1 查看数据库 mysql> SHOW DATABASES; +--------------------+ | Database | +... -
常用SQL函数和关键字
2017-07-27 09:11:58sql语句大全 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', '... -
常用SQL语句
2019-05-26 13:05:25主要内容包括,增删改查(CURD),重点在查询... 在开始之前,要注意:SQL 是不区分大小写的,但是为了代码容易阅读与调试,一般将SQL关键字大写,对所有的表名和列名使用小写。多条 SQL 语句需要用分号(;)分... -
常用Sql语句,及注意事项
2017-11-15 18:20:00sql语句 sql命令语句 关键字 sql语句 SELECT * FROM V$reserved_words;--查询oracle预留关键字 SELECT * FROM V$version;--查询oracle版本 select b.owner,b.object_name,a.session_id,a.locked_... -
sql语句分组mysql_Mysql常用sql语句(12)- group by 分组查询
2021-01-18 21:50:41测试必备的Mysql常用sql语句系列前言group by 关键字可以根据一个或多个字段对查询结果进行分组group by 一般都会结合Mysql聚合函数来使用如果需要指定条件来过滤分组后的结果集,需要结合having关键字;原因:where... -
史上超强最常用SQL语句大全
2021-01-27 11:13:31史上超强最常用SQL语句大全,) 1)DDL--数据定义语言 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等 2) DML--数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert, delete, ... -
sql语句里几个常用关键字
2012-12-25 17:25:08connect by 层次查询子句,可用于递归树查询和层次查询递归查询结构:start with expression1 connect by expression2expression1:根节点的限制条件。expression2:递归关联条件 prior 后跟的是母节点,表示上一条... -
常用SQL语句总结
2016-09-25 12:45:39我总结了一些常用的SQL语句。 1.E-R图模型: 实体(矩形),属性(椭圆),联系(菱形)。 2.范式: 第一范式:数据库表中的列都是单一属性,不可再分。 第二范式:数据库表中的不存在非关键字列对任一关键字的...
-
windows系统禁用休眠bat文件.rar
-
文件夹-源码
-
各种输入限制
-
基于纹理kn近邻估计的铝土矿加药状态检测方法研究
-
java显示奇数位置字符_原 java调整数据顺序是奇数位于偶数的前面(思路与实现)...
-
基于信任传播的用户偏好建模,用于评级预测
-
蛋白质亚细胞定位预测的最新进展ִ
-
MySQL 触发器
-
极限学习机在大规模交通拥堵预测中的应用
-
自适应稀疏传递矩阵的知识图完成
-
bat 延时
-
可视化库----Matplotlib+Pandas高级篇及应用
-
基于受限玻尔兹曼机的情感方面提取
-
thinkPhp5.0 时间戳转换为日期
-
基于多信息融合与可拓理论的锑浮选工况识别方法
-
338. 比特位计数
-
java 带鼠标截屏_Java 带鼠标截屏 | 学步园
-
具有应用感知数据布局策略的并行文件系统,用于数字地球中的大规模遥感图像处理
-
MySQL DML 语言(插入、更新与删除数据)
-
Java面试基础编程题_java面试题及答案(基础题122道,代码题19道)