2021年SQL语句大全实例
sql常用语句100例
--update phoneinfo set cityname = '克孜勒苏柯尔克孜' where cityname = '克孜勒苏柯尔克孜州'--update phoneinfo set cityname = '湘西' where pad1 = '湖南 吉首'select * from dbo.PhoneInfo--update dbo.PhoneInfo set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo a,PhoneInfo_hl b--where a.phonebound=b.phonebound--select * from dbo.UnknowPhoneBound--select * from dbo.Area--select * from phoneinfo a, phoneinfo_old b, phoneinfo_hl c where a.phonebound = b.phonebound and a.phonebound = c.phonebound and (a.cityname <> b.cityname or a.cityname <> c.cityname)--select * from phoneinfo a, phoneinfo_hl b where a.phonebound = b.phonebound and a.cityname <> b.citynameselect * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname--select * into phoneinfo_bak from phoneinfo--select * from phoneinfo_bakselect * from phoneinfo a, phoneinfo_old b where a.phonebound = b.phonebound and a.cityname <> b.cityname--select * from dbo.PhoneInfo_Telecom--update PhoneInfo_Telecom set provincename = '内蒙古' where pad1 = '内蒙兴安盟'update PhoneInfo set cityname = '酒泉' where pad1 = '甘肃 酒泉嘉峪关'--update dbo.PhoneInfo_old set provincename=b.provincename,cityname=b.cityname from dbo.PhoneInfo_old a,PhoneInfo_Telecom b--where a.phonebound=b.phoneboundcreate table client_allasselect t2.mobilephone,t2.clientName,t2.sex,t2.birthdayyear,t2.birthdaymonth,t2.birthdaydate,t2.cardtype,t2.FundPurchaseTotalFee,t2.InsurePurchaseTotalFee,t2.FundSource,t2.InsureSource,t2.BankSourcefrom (select mobilephone,clientName,Sex,birthdayyear,birthdaymonth,birthdaydate,cardtype,fund_sum_fee FundPurchaseTotalFee,insure_sum_fee InsurePurchaseTotalFee,case when sourceindustry = '±£ÏÕ'then'±£ÏÕ'end as FundSource,case when sourceindustry = '»ù½ð'then'»ù½ð'end as InsureSource,case when sourceindustry = 'ÒøÐÐ'then'ÒøÐÐ'end as BankSource from (select c.*, f.fund_sum_fee, insure_sum_feefrom client_55 cleft join (select sum(cast(fee as float)) fund_sum_fee,mobilephonefrom fund_client_behavior_55group by mobilephone) f on c.mobilephone =f.mobilephoneleft join (select sum(cast(fee as float)) insure_sum_fee,mobilephonefrom client_purchase_55group by mobilephone) i on i.mobilephone =c.mobilephone) t) t2。
sql语句并列条件
sql语句并列条件SQL语句的并列条件是指在WHERE子句中使用多个条件来筛选数据。
下面是符合题目要求的10个SQL语句示例:1. 查询员工表中薪水大于5000并且职位为经理的员工:```SELECT * FROM 员工表 WHERE 薪水 > 5000 AND 职位 = '经理'; ```2. 查询订单表中订单状态为已发货或已完成的订单:```SELECT * FROM 订单表 WHERE 订单状态 = '已发货' OR 订单状态 = '已完成';```3. 查询学生表中年龄大于18且性别为女的学生:```SELECT * FROM 学生表 WHERE 年龄 > 18 AND 性别 = '女';```4. 查询商品表中价格大于100且库存小于50的商品:```SELECT * FROM 商品表 WHERE 价格 > 100 AND 库存 < 50;```5. 查询客户表中国家为中国或美国的客户:```SELECT * FROM 客户表 WHERE 国家 = '中国' OR 国家 = '美国'; ```6. 查询员工表中工资大于平均工资并且职位不是实习生的员工:```SELECT * FROM 员工表WHERE 工资> (SELECT AVG(工资) FROM 员工表) AND 职位 != '实习生';```7. 查询订单表中订单日期为2021年1月1日至2021年3月31日之间的订单:```SELECT * FROM 订单表WHERE 订单日期BETWEEN '2021-01-01' AND '2021-03-31';```8. 查询学生表中年龄大于等于18或性别为男的学生:```SELECT * FROM 学生表 WHERE 年龄 >= 18 OR 性别 = '男';```9. 查询商品表中价格大于100并且品牌为苹果或三星的商品:```SELECT * FROM 商品表 WHERE 价格 > 100 AND (品牌 = '苹果' OR 品牌 = '三星');```10. 查询客户表中注册日期在2020年之前并且国家不是中国的客户:```SELECT * FROM 客户表 WHERE 注册日期 < '2020-01-01' AND 国家 != '中国';```以上是10个SQL语句的示例,通过并列条件的使用,我们可以更灵活地筛选出符合特定条件的数据。
SQL数据库语句大全大全(完全整理版)之欧阳引擎创编
SQL语句大全欧阳引擎(2021.01.01)--语句功能--数据操作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 --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001' ---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y' --打印字符串'x > y'else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08when job_level = ’2’ then e_wage*1.07when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1@y=1while @x < 3beginprint @x --打印变量x 的值while @y <3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfordelay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * fromstock_information where stockid = str(nid)stockname = 'str_name'stockname like '% find this %' stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber < 1000and stockindex =24not stock*** = 'man'stocknumber between 20 and100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select * from table1, table2 where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(selectmax(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表示的角的正切COT(float_expression) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2) --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π 即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST()(<expression> AS <data_ type>[ length ])CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>) --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefromoldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>,<expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值sql中的保留字action add aggregate all alter after and as asc avgavg_row_length auto_increment between bigint bit binary blob bool both by cascade case char character change check checksum column columns comment constraint create cross current_date current_time current_timestamp data database databases date datetime dayday_hour day_minute day_second dayofmonth dayofweek dayofyear dec decimal default delayed delay_key_write delete desc describe distinct distinctrow double drop end else escape escaped enclosed enum explain exists fields file first float float4 float8 flush foreign from for full function global grant grants group having heaphigh_priority hour hour_minute hour_second hosts identified ignore in index infile inner insert insert_id int integer interval int1 int2 int3 int4 int8 into if is isam join key keys kill last_insert_id leading left length like lines limit load local lock logs long longblob longtext low_priority max max_rows match mediumblob mediumtext mediumint middleint min_rows minute minute_second modify month monthname myisam natural numeric no not null on optimize option optionally or order outer outfile pack_keys partial password precision primary procedure process processlist privileges read realreferences reload regexp rename replace restrict returns revoke rlike row rows second select set show shutdown smallint sonamesql_big_tables sql_big_selects sql_low_priority_updates sql_log_off sql_log_update sql_select_limit sql_small_result sql_big_resultsql_warnings straight_join starting status string table tables temporary terminated text then time timestamp tinyblob tinytext tinyint trailing to type use using unique unlock unsigned update usage values varchar variables varying varbinary with write when where year year_month zerofill查看全文常用SQL命令和ASP编程在进行数据库操作时,无非就是添加、删除、修改,这得设计到一些常用的SQL语句,如下:SQL常用命令使用方法:(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值order by 字段名 [desc]"sql="select * from 数据表 where 字段名like %字段值% order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in (值1,值2,值3)"sql="select * from 数据表where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"sql="insert into 目标数据表select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:AVG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名 from 数据表where 条件表达式"set rs=conn.excute(sql)用 rs("别名") 获取统的计值,其它函数运用同上。
SQL语句练习及参考答案(2021年整理精品文档)
SQL语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(SQL语句练习及参考答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为SQL语句练习及参考答案的全部内容。
SQL 语句练习1。
设学生选课数据库有关系S (sno ,sname ,age ,sex )、SC (sno ,cno ,grade )和C (cno,cname,teacher ),分别表示学生、选课和课程,sno 代表学号,sname 代表学生姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表示下列查询。
(1)检索年龄大于21的男学生学号(sno )和姓名(sname)。
(2)建立性别只能为“男”、“女"的约束。
(3)创建一个视图v1,该视图用来查询学生的选课情况,要求包含:学生姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学生学号(sno ). (5)检索全部学生都选修的课程的课程号(cno)和课程名(cname )。
(6)删除所有男同学的选课记录。
1。
(1)select sno ,snae from s where sex=’男' and age 〉21(2)alter table s add constraint c1 check sex in (‘男’,’女')(3)create view v1 as select sname ,cname,teacher,grade from s ,sc ,c where s 。
常用经典SQL语句大全完整版
常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXECsp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.d at’--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
SQL查询语句大全(集锦经典)
SQL查询语句大全集锦MYSQL查询语句大全集锦一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
复制内容到剪贴板代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:复制内容到剪贴板代码:SELECT * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:复制内容到剪贴板代码:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:复制内容到剪贴板代码:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:复制内容到剪贴板代码:SELECT TOP 2 * FROM `testtable`复制内容到剪贴板代码:SELECT TOP 20 PERCENT * FROM `testtable`(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
sql查询语句大全及实例
sql查询语句大全及实例1.提取查询(SELECT)SELECT 语句用于从数据库表中提取数据:实例:从"Persons"表中提取数据:SELECT * FROM Persons3.排序(ORDER BY)ORDER BY 语句用于在查询结果中对取出的数据排序:实例:依据金额(Amount)和日期(OrderDate)字段,对"Orders"表中的记录进行从高到低(desc)排序:SELECT * FROM Orders ORDER BY Amount DESC, OrderDate4.过滤(WHERE)WHERE 子句通常用于在 SELECT、UPDATE 和 DELETE 语句中来过滤选择的数据:5.上下文过滤(HAVING)HAVING 子句仅对聚合函数(AVG,COUNT,SUM 等)出现的结果进行过滤:实例:从"Orders"表中选择超过 5000 的订单:SELECT * FROM OrdersHAVING SUM(Amount) > 50006.插入(INSERT)INSERT 语句用于向数据库插入新记录:实例:向"Persons"表中插入一条新记录:INSERT INTO Persons (firstname, lastname, age, address, city)VALUES ('Glenn', 'Quagmire', 33, 'Coolsville', 'Anchorage');7.更新(UPDATE)UPDATE 语句用于更新数据库中的记录:9.创建数据库(CREATE DATABASE)CREATE DATABASE 语句用于创建新的数据库:实例:创建新的数据库“MyDataBase”:CREATE DATABASE MyDataBase实例:在“MyDataBase”中创建一个新表“Persons”:CREATE TABLE Persons(PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))。
数据库sql语句大全实例
数据库sql语句大全实例以下是一些常见的数据库SQL语句实例:1. 创建表:CREATE TABLE 表名 (列1 数据类型,列2 数据类型,...);例如:CREATE TABLE students (id INT,name VARCHAR(50),age INT);2. 插入数据:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);例如:INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);INSERT INTO students (id, name, age) VALUES (2, 'Bob', 22);3. 查询数据:SELECT 列1, 列2, ... FROM 表名 WHERE 条件;例如:SELECT * FROM students;SELECT name, age FROM students WHERE age > 20;4. 更新数据:UPDATE 表名 SET 列 = 值 WHERE 条件;例如:UPDATE students SET age = 21 WHERE name = 'Alice';5. 删除数据:DELETE FROM 表名 WHERE 条件;例如:DELETE FROM students WHERE age < 22;6. 创建索引:CREATE INDEX 索引名 ON 表名 (列1, 列2, ...);例如:CREATE INDEX idx_students_age ON students (age);7. 删除索引:DROP INDEX 索引名 ON 表名;例如:DROP INDEX idx_students_age ON students;以上是一些常见的数据库SQL语句实例,具体使用时需要根据具体的数据库类型和表结构进行调整。
sql区间查询语句
sql区间查询语句SQL区间查询语句是一种常用的查询语句,用于在数据库中检索满足特定范围条件的数据。
区间查询可以基于数值、日期或者字符类型的列进行。
以下是几种常见的SQL区间查询语句及其使用示例。
1. 数值区间查询:SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;例如,要查询价格在100到200之间的商品,可以使用以下语句: SELECT * FROM products WHERE price BETWEEN 100 AND 200;2. 日期区间查询:SELECT * FROM 表名 WHERE 列名 BETWEEN '日期1' AND '日期2';例如,要查询注册日期在2021年1月1日到2022年1月1日之间的用户,可以使用以下语句:SELECT * FROM users WHERE registration_date BETWEEN'2021-01-01' AND '2022-01-01';3. 字符区间查询:SELECT * FROM 表名 WHERE 列名 >= '值1' AND 列名 <= '值2';例如,要查询姓氏在'A'到'E'之间的员工,可以使用以下语句: SELECT * FROM employees WHERE last_name >= 'A' ANDlast_name <= 'E';在使用区间查询时,需要注意以下几点:- 区间查询语句中的列名必须是数值、日期或者字符类型的列; - BETWEEN关键字后面的值1必须小于或等于值2;- 区间查询语句可以与其他条件语句结合使用,例如使用AND或者OR关键字。
除了上述示例,SQL区间查询语句还可以根据具体的业务需求进行拓展。
sql查询举例(含答案)(2021年整理精品文档)
sql查询举例(含答案)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(sql查询举例(含答案))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为sql查询举例(含答案)的全部内容。
查询练习一、简单查询(无条件查询):1、查询“学生档案”表中所有的记录SELECT * FORM 学生档案2、查询“学生档案”表中全体学生的姓名、学号、家庭地址SELECT 姓名,学号,家庭地址 FROM 学生档案二、有条件查询1、查询“成绩管理”表中语文成绩在80分以下的学生的学号。
SELECT 学号 FROM 成绩管理 WHERE 语文<802、查询“成绩管理”表中语文成绩在80分到90分之间的学生的学号,语文,数学,英语成绩。
SELECT 学号,语文,数学,英语FROM成绩管理WHERE 语文 >= 80 AND 语文<=90==(语文 BETWEEN 80 AND 90)3、查询“成绩管理”表中数学成绩不在75分到85分之间的学生的学号,语文,数学,英语成绩.SELECT 学号,语文,数学,英语FROM 成绩管理WHERE 数学 NOT BETWEEN 75 AND 854、查询“学生档案”表中李成刚,刘艺梅,郑莉三名学生的信息。
SELECT *FROM 学生档案WHERE 姓名 IN (“李成刚”,“刘艺梅",“郑莉”)==(姓名 =“李成刚” OR 姓名=“刘艺梅” OR 姓名=“郑莉”)5、查询“学生档案"表中所有姓张的学生的姓名、学号和性别SELECT 姓名,学号,性别 FROM学生档案WHERE 姓名 LIKE “张*"6、查询“学生档案”表中所有姓张且全名为三个汉字的学生的姓名SELECT 姓名FROM 学生档案WHERE姓名 LIKE “张??"7、查询“学生档案"表中第二个字符为“建"字的学生的学号和姓名SELECT 学号,姓名FROM 学生档案WHERE姓名 LIKE “?建*”8、查询“学生档案”表中家庭住址为“人民路"和“育才路"的学生学号,姓名,性别和家庭住址.SELECT 学号,姓名,性别,家庭住址FROM 学生档案WHERE家庭住址 LIKE “人民路*" OR家庭住址 LIKE “育才路*"9、查询“学生档案”表中所有团员的学生班级和姓名.SELECT 班级,姓名FROM 学生档案WHERE是否团员=yes10、查询“学生档案”表中1995年4月1日以前出生,女同学或团员的学生记录。
freesql sql语句
freesql sql语句使用FreeSQL编写的SQL语句如下:1. 查询所有用户信息的语句:SELECT * FROM users;2. 查询用户表中的用户名和邮箱信息:SELECT username, email FROM users;3. 查询用户表中年龄大于等于18岁的用户信息:SELECT * FROM users WHERE age >= 18;4. 查询订单表中总金额最高的订单信息:SELECT * FROM orders ORDER BY total_amount DESC LIMIT 1;5. 查询商品表中价格在100到200之间的商品信息:SELECT * FROM products WHERE price BETWEEN 100 AND 200;6. 查询订单表中下单时间在2021年1月1日至2021年12月31日之间的订单信息:SELECT * FROM orders WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31';7. 查询用户表中用户名包含关键字"admin"的用户信息:SELECT * FROM users WHERE username LIKE '%admin%';8. 查询订单表中总金额大于1000并且支付方式为支付宝的订单信息:SELECT * FROM orders WHERE total_amount > 1000 AND payment_method = '支付宝';9. 查询商品表中库存小于10的商品信息,并按照库存数量从少到多排序:SELECT * FROM products WHERE stock < 10 ORDER BY stock ASC;10. 查询用户表中不重复的城市列表:SELECT DISTINCT city FROM users;11. 查询订单表中每个用户的订单数量:SELECT user_id, COUNT(*) as order_count FROM orders GROUP BY user_id;12. 查询商品表中按照类别统计每个类别的商品数量:SELECT category, COUNT(*) as product_count FROM products GROUP BY category;13. 查询用户表中每个城市的用户数量,并按照用户数量从多到少排序:SELECT city, COUNT(*) as user_count FROM users GROUP BY city ORDER BY user_count DESC;14. 查询订单表中每个年份的订单数量,并按照年份从小到大排序:SELECT YEAR(order_date) as order_year, COUNT(*) as order_count FROM orders GROUP BY order_year ORDER BY order_year ASC;15. 查询商品表中平均价格最高的类别:SELECT category, AVG(price) as avg_price FROM products GROUP BY category ORDER BY avg_price DESC LIMIT 1;以上是使用FreeSQL编写的一些SQL语句,可以实现对数据库中的数据进行查询和统计。
sql语句计算时间差
sql语句计算时间差
在SQL中,可以使用DATEDIFF函数来计算两个日期之间的时间差。
DATEDIFF函数接受三个参数:时间单位,开始日期和结束日期。
下面是一个计算时间差的SQL示例:
```sql
SELECT DATEDIFF(MINUTE, '2021-01-01 12:00:00', '2021-01-
01 12:30:00') AS TimeDiffInMinutes;
```
这个查询将返回30,表示开始日期和结束日期之间相差30分钟。
在上面的示例中,我们使用了`MINUTE`作为时间单位来计算分钟数。
除了分钟数,DATEDIFF函数还可以计算其他时间单位,如年、月、日、小时等。
你可以根据需要选择合适的时间单位。
另外,在某些情况下,你可能需要计算时间差的绝对值,可以使
用ABS函数来获取时间差的绝对值。
另外,在一些数据库管理系统中,还可以使用TIMESTAMPDIFF函数来计算时间差,具体使用方法请查看相关数据库的文档。
sql语句正则
sql语句正则以下是符合要求的10个SQL语句示例:1. 查询员工表中所有姓“张”的员工信息(不包括姓名中含有“张”的员工)```sqlSELECT * FROM 员工表 WHERE 姓名 LIKE '张%';```2. 查询订单表中总订单金额超过1000元的订单号和订单金额```sqlSELECT 订单号, 订单金额 FROM 订单表 WHERE 订单金额 > 1000; ```3. 查询客户表中所有手机号码为11位并且以1开头的客户信息```sqlSELECT * FROM 客户表 WHERE 手机号码 LIKE '1__________';```4. 查询商品表中销量最高的商品名称和销量```sqlSELECT 商品名称, MAX(销量) AS 最高销量 FROM 商品表;```5. 查询员工表中年龄在25到30岁之间的员工信息```sqlSELECT * FROM 员工表 WHERE 年龄 BETWEEN 25 AND 30;```6. 查询客户表中购买过商品编号为1001或1002的客户信息```sqlSELECT * FROM 客户表WHERE 客户编号IN (SELECT 客户编号FROM 订单表 WHERE 商品编号 IN (1001, 1002));```7. 查询订单表中订单日期在2021年1月1日至2021年12月31日之间的订单信息```sqlSELECT * FROM 订单表WHERE 订单日期BETWEEN '2021-01-01' AND '2021-12-31';```8. 查询员工表中工资高于平均工资的员工信息```sqlSELECT * FROM 员工表WHERE 工资> (SELECT AVG(工资) FROM 员工表);```9. 查询商品表中价格最低的商品名称和价格```sqlSELECT 商品名称, MIN(价格) AS 最低价格 FROM 商品表; ```10. 查询客户表中拥有非空邮箱的客户信息```sqlSELECT * FROM 客户表 WHERE 邮箱 IS NOT NULL;。
sql 匹配语句
sql 匹配语句SQL(Structured Query Language,结构化查询语言)是用于管理关系型数据库的标准语言。
它可以用于创建、修改和查询数据库中的表,以及执行各种数据操作和管理任务。
下面是一些常见的SQL匹配语句示例,以及它们的用途和示例。
1. SELECT语句SELECT语句用于从数据库中检索数据。
它可以选择指定的列,也可以使用通配符选择所有列。
例如:```SELECT * FROM employees;SELECT first_name, last_name FROM employees;```2. WHERE子句WHERE子句用于在SELECT语句中添加筛选条件,以便只返回满足条件的数据行。
例如:```SELECT * FROM employees WHERE salary > 50000; SELECT * FROM products WHERE category = 'Electronics';```3. ORDER BY子句ORDER BY子句用于对结果进行排序。
可以按照一个或多个列进行升序或降序排序。
例如:```SELECT * FROM employees ORDER BY last_name ASC; SELECT * FROM products ORDER BY price DESC;```4. LIKE运算符LIKE运算符用于模糊匹配,可以在WHERE子句中使用。
通常与通配符一起使用,如%表示任意字符,_表示单个字符。
例如:```SELECT * FROM employees WHERE last_name LIKE 'S%'; SELECT * FROM products WHERE product_name LIKE '%phone%';```5. IN运算符IN运算符用于指定一个值列表,以便匹配多个值之一。
SQL SERVER 2021 常用命令
SQL SERVER 2021 常用命令sql-server-2021-常用命令sql系统视图,系统表,系统存储过程的使用以获取数据库中用户表中信息1、以获取特定库中所有用户表中信息select*fromsys.tablesselect*fromsys.objectswheretype='u'--用户表第二条语句中当type='s'时就是系统表中2、获取表的字段信息select*fromsys.columnswhereobject_id=object_id('表名')select*fromsyscolumnswhereid=object_id('表名')3、获取当前库中表的字段及类型信息(1)select'字段名'=,'类型名'=,'字段长度'=a.max_length,'参数顺序'=a.column_ider_type_id=er_type_idwhereobject_i d=object_id('表名')syscolumns与sys.columns表中用法相似。
获取索引或主键信息1、以获取对象及对应的索引的信息select'对象名'=,'对象类型'=a.type,1'索引名'=,'索引类型'=caseb.typewhen1then'涌入索引'when2then'非涌入索引'when3then'xml 索引'else'空间索引'end,'主键否'=casewhenb.is_primary_key=1then'主键'else''endfromsys.objectsajoinsys.indexesbona.object_id=b.object_idwherea.type='u'andb.n 2、获取表的主键及对应的字段(1)select'表名'=,'主键名'=,'字段名'=fromsys.indexesajoinsys.index_columnsbona.object_id=b.object_idanda.index_id=b.index_idjoinsys.columnscona.object_id =c.object_idandc.column_id=b.column_idjoinsys.objectsdond.object_id=c.object_idwherea.is_primary_key=1(2)select'表名'=object_name(b.parent_obj),'主键名'=,'字段名'=fromsyscolumnsa,sysobjectsb,sysindexesc,sysindexkeysdwhereb.xtype='pk'andb.par ent_obj=a.idandc.id=a.id2=andd.id=a.idandd.indid=c.indidanda.colid=d.colid(3)select'所属架构'=,'表名'=,'主键名'=,'榜上有名'=,'键列序数'=ic.key_ordinalfromsys.key_constraintsaskjoinsys.tablesastont.object_id=k.parent_object_idjoinsys.schemasassons.schema_id=t.schema_idjoi nsys.index_columnsasiconic.object_id=t.object_idandic.index_id=k.unique_index_ idjoinsys.columnsasconc.object_id=t.object_idandc.column_id=ic.column_idwherek.type='pk';(4)采用系统存储过程以获取选定表的主键信息execsp_pkeys'表名'--表名只能是当前数据库下的单独表名不能带上架构名3、查询哪些表创建了主键select'表名'=from3(selectname,object_idfromsys.objectswheretype='u')aleftjoinsys.indexesbona.object_id=b.object_idandb.is_primary_key=isnotnull 备注:查阅哪些表中没建立主键,将where条件换成isnull即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句实例欧阳光明(2021.03. 07)表操作例1对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS(SNO NUMERIC (6, 0) NOT NULLSNAME CHAR (8) NOT NULLAGE NUMERIC(3,0)SEX CHAR(2)BPLACE CHAR(20)PRIMARY KEY(SNO))例2对于表的教学管理数据库中的表ENROLLS ,可以定义如下:CREATE TABLE ENROLLS(SNO NUMERIC(6,0) NOT NULLCNO CHAR(4) NOT NULLGRADE INTPRIMARY KEY(SNO,CNO)FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)FOREIGN KEY(CNO) REFERENCES COURSES(CNO)*欧阳光明*创编2021.03.07CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))例3根据表的STUDENTS表,建立一个只包含学号.姓名.年龄的女学生表。
CREATE TABLE GIRLAS SELECT SNO, SNAME, AGEFROM STUDENTSWHERE SEX=女•;例4删除教师表TEACHER。
DROP TABLE TEACHER例5在教师表中增加住址列。
ALTER TABLE TEACHERSADD (ADDR CHAR(50))例6把STUDENTS表中的BPLACE列删除,并且把引用BPLACE列的所有视图和约束也一起删除。
ALTER TABLE STUDENTSDROP BPLACE CASCADE例7补充定义ENROLLS表的主关键字。
ALTER TABLE ENROLLSADD PRIMARY KEY (SNO,CNO);视图操作(虚表)例9建立一个只包括教师号.姓名和年龄的视图FACULTY。
(在视图定义中不能包含ORDER BY子句)*欧阳光明*创编2021.03.07CREATE VIEW FACULTYAS SELECT TNO, TNAME, AGEFROM TEACHERS例10从学生表.课程表和选课表中产生一个视图GRADE_TABLE,它包括学生姓名.课程名和成绩。
CREATE VIEW GRADE_TABLEAS SELECT SNAME,CNAME,GRADEFROM STUDENTS,COURSES,ENROLLSWHERE STUDENTS.SNO = ENROLLS.SNO ANDO=O例11删除视图GRADE_TABLEDROP VIEW GRADE_TABLE RESTRICT 索引操作例12在学生表中按学号建立索引。
CREATE UNIQUE INDEX STON STUDENTS (SNO,ASC)例13删除按学号所建立的索引。
DROP INDEX ST数据库模式操作例14创建一个简易教学数据库的数据库模式TEACHING.DB ,属主为ZHANG。
CREATE SCHEMATEACHING_DB AUTHRIZATION ZHANG*欧阳光明*创编2021.03.07例15删除简易教学数据库模式TEACHING_DB。
((1)选用CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表.视图.索引等全部被删除。
(2)选用RESTRICT,即本数据库模式下属的基本表.视图.索引等事先己清除,才能删除本数据库模式,否则拒绝删除。
)DROP SCHEMA TEACHING_DB CASCADE单表操作例16找出3个学分的课程号和课程名。
SELECT CNO, CNAMEFROM COURSESWHERE CREDIT = 3例17查询年龄大于22岁的学生情况。
SELECT *FROM STUDENTSWHERE AGE > 22例18找出籍贯为河北的男生的姓名和年龄。
SELECT SNAME, AGEFROM STUDENTSWHERE BPLACE ='河北’AND SEX ='男’例19找出年龄在20 一23岁之间的学生的学号、姓名和年龄,并按年龄升序排序。
(ASC (升序)或DESC (降序)声明排序的方式,缺省为升序。
)SELECT SNO, SNAME, AGE*欧阳光明*创编FROM STUDENTSWHERE AGE BETWEEN 20 AND 23ORDER BY AGE例20找出年龄小于23岁.籍贯是湖南或湖北的学生的姓名和性别。
(条件比较运算符V和逻辑运算符AND (与),此外还可以使用的运算符有: > (大于). >=(大于等于). <=(小于等于). <> (不等于).NOT (非).OR (或)等。
谓词LIKE只能与字符串联用,常常是“V列名> LIKE pattern-的格式。
特殊字符和“%”作为通配符。
谓词IN表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的OR (或)的缩写。
谓词NOT IN表示指定的属性不与后面的集合中的某个勺相匹配。
谓词BETWEEN是“包含于…之中”的意思。
)SELECT SNAME, SEXFROM STUDENTSWHERE AGE < 23 AND BPLACE LIKE'湖%或SELECT SNAME, SEXFROM STUDENTSWHERE AGE < 23 AND BPLACE IN (* 湖南1, * 湖北1)例22找出学生表中籍贯是空值的学生的姓名和性别。
(在SQL 中不能使用条件:V列名> =NULL。
在SQL中只有一个特殊的查询条件允许查询NULL值:)SELECT SNAME, SEXFROM STUDENTSWHERE BPLACE IS NULL多表操作例23找出成绩为95分的学生的姓名。
(子查询)SELECT SNAMEFROM STUDENTSWHERE SNO =(SELECT SNOFROM ENROLLSWHERE GRADE = 95)例24找出成绩在90分以上的学生的姓名。
SELECT SNAMEFROM STUDENTSWHERE SNO IN(SELECT SNOFROM ENROLLSWHERE GRADE > 90)或SELECT SNAME*欧阳光明*创编2021.03.07*欧阳光明*创编2021.03.07FROM STUDENTSWHERE SNO = ANY(SELECT SNOFROM ENROLLSWHERE GRADE > 90)例25查询全部学生的学生名和所学课程号及成绩。
(连接查询)SELECT SNAME, CNO, GRADEFROM STUDENTS, ENROLLSWHERE STUDENTS.SNO = ENROLLS.SNO例26找出籍贯为山西或河北,成绩为90分以上的学生的姓名. 籍贯和成绩。
(当构造多表连接查询命令时,必须遵循两条规则。
第一,连接条件数正好比表数少1 (若有三个表,就有两个连接条件);第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))SELECT SNAME, BPLACE, GRADEFROM STUDENTS, ENROLLSWHERE BPLACE IN C山西5 , 4河北J AND GRADE > =90 AND STUDENTS.SNO=ENROLLS.SNO例28查出课程成绩在80分以上的女学生的姓名.课程名和成绩。
(FROM子句中的子查询)SELECT SNAME,CNAME, GRADEFROM (SELECT SNAME, CNAME , GRADEFROM STUDENTS, ENROLLS,COURSES*欧阳光明*创编2021.03.07*欧阳光明*创编WHERE SEX ='女')AS TEMP (SNAME, CNAME,GRADE)WHERE GRADE > 80表达式与函数的使用例29查询各课程的学时数。
(算术表达式宙算术运算符+ ./与列名或数值常量所组成。
)SELECT CNAME,COURSE_TIME = CREDIT* 16FROM COURSES例30找出教师的最小年龄。
(内部函数:SQL标准中只使用COUNT. SUM、AVG. MAX. MIN函数,称之为聚集函数(Set Function )。
COUNT函数的结果是该列统计值的总数目,SUM函数求该列统计值之和,AVG函数求该列统计值之平均值, MAX函数求该列最大值,MIN函数求该列最小值。
) SELECT MIN(AGE)FROM TEACHERS例31统计年龄小于等于22岁的学生人数。
(统计)SELECT COUNT(*)FROM STUDENTSWHERE AGE < = 22例32找出学生的平均成绩和所学课程门数。
SELECT SNO, AVG(GRADE), COURSES = COUNT(*)FROM ENROLLS GROUP BY SNO*欧阳光明*创编*欧阳光明*创编2021.03.07例34找出年龄超过平均年龄的学生姓名。
SELECT SNAMEFROM STUDENTSWHERE AGE >(SELECT AVG(AGE)FROM STUDENTS)例35找出各课程的平均成绩,按课程号分组,且只选择学生超过3人的课程的成绩。
(GROUP BY与HAVINGGROUP BY子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据逬行规定的操作。
GROUP BY子句总是跟在WHERE子句后面,当WHERE子句缺省时,它跟在FROM子句后面。
HAVING子句常用于在计算出聚集之后对行的查询逬行控制。
)SELECT CNO, AVG(GRADE), STUDENTS = COUNT(*)FROM ENROLLSGROUP BY CNOHAVING COUNTS) >= 3相关子查询例37查询没有选任何课程的学生的学号和姓名。
(当一个子查询涉及到一个来自外部查询的列肘,称为相关子查询(Correlated Subquery)o相关子查询要用到存在测试谓词EXISTS和NOT EXISTS ,以及ALL . ANY ( SOME )等。
)*欧阳光明*创编2021.03.07SELECT SNO, SNAMEFROM STUDENTSWHERE NOT EXISTS(SELECT *FROM ENROLLSWHERE ENROLLS.SNO=STUDENTS.SNO)例38查询哪些课程只有男生选读。