精华内容
下载资源
问答
  • Select 查询 查询表中的所有数据:SELECT * FROM 表名; 查询表中的A1,A2列的数据:SELECT A1,A2 FROM 表名; where 条件语句 ...id的结果从另一个语句中获取:SELECT * FROM A WHERE Id in (SELECT c

    Select 查询

    查询表中的所有数据: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的,最后取出两条数据)

    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;
    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;
    展开全文
  • 一、常用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:46
    SQL常用的一些关键字

    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()返回一个数字列或计算列的总和
    select sum(price) from t_ware;
    
    b)avg()对一个数字列或计算列球平均值 c)min()返回一个数字列或一个数字表达式的最小值 d)max()返回一个数字列或一个数字表达式的最大值 e)count()返回满足select语句中指定的条件的记录值

    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:00
    PREPARE --为动态执行准备SQL 语句 EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询 ---局部变量 declare @id char(10) --set @id = ’10010001’ select @id = ’10010001’ 转载于:...


    --语 句              功 能
    --数据操作
    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’

    转载于: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比较多,发现自己已经遗忘的也差不多,要用到的时候迟迟拿不出来,今天开始会在知乎上纪录一些sql语句学习的内容,内容重在说明查询语句的用法。 一、sql查询语句的初始介绍 1、查询语句的一般写法:...
  • 一、常用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语句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,...
  • 1、解决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常用SQL语句
  • 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语句及其关键字总结(一) 1.select SQL是用来做什么的呢?一个最常用的方式是将资料从数据库中的表格内选出。从这一句回答中,我们马上可以看到两个关键字: 从 (FROM) 数据库中的表格内 选出 (SELECT)。...
  • 1、解决SQL关键字冲突问题一般修改dm_svc.conf文件列如:过滤object,result关键字。通用版里面增加格式如下:EXCLUE_RESERVED_WORDS=object,OBJECT,RESULT,resultZYJ 版本里面增加如下内容:KEYWORDS=object,...
  • 最近经常看到一些关于一些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:58
    sql语句大全 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语句  sql命令语句  关键字 sql语句 SELECT * FROM V$reserved_words;--查询oracle预留关键字 SELECT * FROM V$version;--查询oracle版本 select b.owner,b.object_name,a.session_id,a.locked_...
  • 测试必备的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, ...
  • connect by 层次查询子句,可用于递归树查询和层次查询递归查询结构:start with expression1 connect by expression2expression1:根节点的限制条件。expression2:递归关联条件 prior 后跟的是母节点,表示上一条...
  • 常用SQL语句总结

    2016-09-25 12:45:39
    我总结了一些常用SQL语句。 1.E-R图模型:  实体(矩形),属性(椭圆),联系(菱形)。   2.范式: 第一范式:数据库表中的列都是单一属性,不可再分。 第二范式:数据库表中的不存在非关键字列对任一关键字的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 931
精华内容 372
关键字:

常用sql语句关键字