SQL语句总结
sql常用语句
sql常用语句SQL,即结构化查询语言,是一种计算机语言,可以读取、插入、更新和删除数据库中的数据,还可以定义、操纵和控制数据库的结构。
因此,SQL语言是一种非常常用的数据库语言,在许多数据库产品中都有应用。
首先,让我们了解一些SQL语言最常用的语句:SELECT:SELECT是SQL中最常用的语句,它可以选择数据表中的特定的一些数据,或者按照特定的条件选择数据表中的数据。
INSERT:INSERT语句用来插入新的行到指定的表中,可以同时插入多行。
UPDATE:UPDATE语句用于更新数据表中的数据,可以根据一定的条件更新多行数据,也可以将已存在的数据更新为新的数据。
DELETE:DELETE语句用于从数据表中删除数据,可以根据特定条件移除多行数据,也可以移除整个表中的数据。
CREATE TABLE:CREATE TABLE以用来创建新的数据表,它可以用来定义表中存储的数据类型,以及约束表中字段之间的关系。
ALTER TABLE:ALTER TABLE可以用来更改表结构,可以添加或删除数据表中的字段,也可以更改表中字段的属性。
DROP TABLE:DROP TABLE以用来删除数据表,可以将整个表删除,也可以将指定的列删除。
另外,SQL还提供了一些用于操纵数据的内建函数,如字段的求和、最大值、最小值、平均值等。
例如,SUM函数用于求指定字段的总和;AVG函数用于求指定字段的平均值;COUNT函数用于统计指定字段满足特定条件的记录数。
还有一些SQL语句,可以用来定义不同类型的数据结构,如数据表、视图、索引、存储过程、触发器等。
这些语句的使用可以极大地提高数据库的性能,并且使用它们可以确保数据的安全性和一致性。
此外,要操作SQL,需要通过SQL语句编辑器来输入SQL语句,并使用SQL服务器来执行SQL语句。
有许多SQL语句编辑器可以在各种操作系统上使用,如MS Access、MySQL、SQL Server等;而SQL 服务器则是实现SQL语句功能的核心部件。
常用的SQL语句分析
事务的回滚与提交
事务的回滚
在事务执行过程中如果出现错误或需要撤销事务中的所有更改,可以使用ROLLBACK 语句来回滚事务。
事务的提交
当事务中的所有操作都成功执行后,可以使用COMMIT语句来提交事务,使事务中的 所有更改永久生效。
事务的隔离级别
读未提交
最低的隔离级别,允许一个事务读取 另一个未提交的事务的数据。
读已提交
允许一个事务读取另一个已提交的事 务的数据。
可重复读
在一个事务中多次读取同一数据会看 到相同的数据,即使其他事务在此期 间修改了该数据。
串行化
最高的隔离级别,强制事务串行执行, 避免了其他并发事务的干扰,但可能 导致性能下降。
感谢您的观看
THANKS
年后的日期。
注意事项
日期函数的具体语法和可用选项 可能因数据库系统而异,需要查 阅具体数据库的文档。
06 SQL事务处理
事务的开始与结束
事务的开始
使用BEGIN或START TRANSACTION语 句来开始一个新的事务。
VS
事务的结束
使用COMMIT语句来提交事务,使事务 中的所有更改永久生效。如果需要撤销事 务中的所有更改,可以使用ROLLBACK语 句来回滚事务。
总结词:删除指定条 件下的单条记录
详细描述:使用 DELETE语句结合 WHERE子句,可以删 除满足特定条件的单 条记录。例如,从名 为"users"的表中删除 ID为5的用户记录
```sql
DELETE FROM users ``` WHERE id = 5;
删除多条记录
01
02
03
总结词:删除满足指定 条件的所有记录
mssql 基本语句
mssql 基本语句1.创建数据库SqlCREATE DATABASE DatabaseName;2.删除数据库SqlDROP DATABASE dbname;3.查看所有数据库SqlSELECT name FROM sys.databases;4.创建新表SqlCREATE TABLE dbo.TableName (Column1 datatype [NOT NULL] [PRIMARY KEY], Column2 datatype,...);5.插入数据SqlINSERT INTO TableName (Column1, Column2)VALUES ('value1', 'value2');6.更新数据SqlUPDATE TableNameSET Column1 = 'new_value'WHERE Condition;7.删除数据SqlDELETE FROM TableNameWHERE Condition;8.选择数据(查询)SqlSELECT Column1, Column2FROM TableNameWHERE SomeCondition;9.联接查询SqlSELECT A.Column1, B.Column2FROM TableA AS AINNER JOIN TableB AS B ON A.Key = B.Key;10.创建索引SqlCREATE INDEX idx_Name ON TableName (ColumnName);11.修改表结构SqlALTER TABLE TableNameADD ColumnNew datatype;-- 或者ALTER TABLE TableNameALTER COLUMN ColumnOldName datatype;-- 添加约束ALTER TABLE TableNameADD CONSTRAINT FK_ForeignKey FOREIGN KEY(ForeignKeyColumn) REFERENCESPrimaryTable(PrimaryKeyColumn);12.清空表数据但保留表结构SqlTRUNCATE TABLE TableName;13.删除表SqlDROP TABLE TableName;14.查询表中所有列SqlSELECT * FROM TableName;15.计数查询SqlSELECT COUNT(*) FROM TableName;16.分组和聚合函数SqlSELECT Column1, COUNT(*) AS CountOfColumn1 FROM TableNameGROUP BY Column1;17.排序数据SqlSELECT *FROM TableNameORDER BY Column1 ASC, Column2 DESC;18.子查询SqlSELECT *FROM TableName1WHERE Column1 IN (SELECT Column2 FROM TableName2);19.创建视图SqlCREATE VIEW ViewName ASSELECT Column1, Column2FROM TableNameWHERE Condition;20.执行事务SqlBEGIN TRANSACTION;-- SQL statements hereCOMMIT TRANSACTION;21.条件语句(IF EXISTS)SqlIF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id =OBJECT_ID(N'[dbo].[TableName]')AND type in (N'U'))BEGINCREATE TABLE dbo.TableName ...END22.自连接查询SqlSELECT A.Column1, B.Column1FROM TableName AS AINNER JOIN TableName AS B ON A.Key = B.RelatedKey; 23.创建存储过程SqlCREATE PROCEDURE dbo.ProcedureNameASBEGIN-- SQL statements hereSELECT * FROM TableName;END24.执行存储过程SqlEXEC dbo.ProcedureName;25.创建函数SqlCREATE FUNCTION dbo.FunctionName (@param1 datatype) RETURNS datatypeASBEGINDECLARE@result datatype;SET@result = (SELECT Column1 FROM TableName WHERE Condition);RETURN@result;END26.使用函数SqlSELECT dbo.FunctionName(value) FROM TableName;27.创建触发器SqlCREATE TRIGGER dbo.TriggerNameON dbo.TableNameAFTER INSERT, UPDATEASBEGIN-- 触发器逻辑,如记录日志等INSERT INTO LogTable (Column1, Column2)SELECT inserted.Column1, inserted.Column2 FROM inserted;END28.查询表结构信息SqlSELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName';29.分区表创建分区表可以将大型表物理分割成多个较小、更易管理的部分:SqlCREATE PARTITION FUNCTION PartitionFunctionName(datatype)AS RANGE LEFT FOR VALUES (value1, value2, ...);CREATE PARTITION SCHEME PartitionSchemeNameAS PARTITION PartitionFunctionNameTO (filegroup1, filegroup2, ...);CREATE TABLE TableName (...) ON PartitionSchemeName (PartitioningColumn);30.窗口函数对数据集进行分析并返回排名、累计值、移动平均等统计量:SqlSELECTColumn1,SUM(Column2) OVER (ORDER BY Column3 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotalFROM TableName;。
sql 数据加工 常用语句
sql 数据加工常用语句SQL数据加工是指对数据库中的数据进行查询、过滤、排序、统计等操作,以得到所需的结果。
下面是10个常用的SQL数据加工语句:1. SELECT语句:用于从数据库中选择指定的列或所有列的数据。
例如:SELECT * FROM table_name;2. WHERE语句:用于筛选满足指定条件的数据。
例如:SELECT * FROM table_name WHERE condition;3. ORDER BY语句:用于对查询结果按指定列进行排序。
例如:SELECT * FROM table_name ORDER BY column_name;4. GROUP BY语句:用于对查询结果按指定列进行分组。
例如:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;5. HAVING语句:与GROUP BY语句配合使用,在分组后对结果进行筛选。
例如:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > 10;6. JOIN语句:用于将多个表的数据进行关联查询。
例如:SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;7. UNION语句:用于将多个查询结果合并为一个结果集。
例如:SELECT column_name FROM table1 UNION SELECT column_name FROM table2;8. INSERT INTO语句:用于向数据库中插入新的数据。
例如:INSERT INTO table_name (column1, column2) VALUES (value1, value2);9. UPDATE语句:用于更新数据库中的数据。
经典SQL语句大全(超全)
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat'--- 开始备份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注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的基本的sql语句选择:select * from table1 where 范围插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!排序:select * from table1 order by field1,field2 [desc]总数:select count as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最小:select min(field1) as minvalue from table111、说明:几个高级查询运算词A:UNION 运算符UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
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常用语句整理
SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL 语句操作。
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份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 typ e注:列增加后将不能删除。
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语句大全(详细)sql语句大全(详细)数据库操作1.查看所有数据库show databases;2.查看当前使用的数据库select database();3.创建数据库create databases 数据库名 charset=utf8;4.删除数据库drop database 数据库名5.使用数据句库use database 数据库名6.查看数据库中所有表show tables;表的操作1.查看表结构desc 表名2.创建表结构的语法create table table_name(字段名数据类型可选的约束条件);demo:创建班级和学生表create table classes(id int unsigned auto_increment primary key not null, name varchar(10));create table students(id int unsigned primary key auto_increment not null, name varchar(20) default '',age tinyint unsigned default 0,height decimal(5,2),gender enum('男','女','人妖','保密'),cls_id int unsigned default 0)3.修改表–添加字段alter table 表名 add 列名类型demo:alter table students add birthday datetime;4.修改表–修改字段–重命名版alert table 表名 change 原名新名类型及约束demo:alter table syudents change birthday birth datetime not null;5.修改表–修改字段–不重命名alter table 表名 modify 列名类型及约束demo : alter table students modify birth date nout noll;6.删除表–删除字段alter table 表名 drop 列名demo :later table students drop birthday;7.删除表drop table 表名demo:drop table students;8.查看表的创建语句–详细过程show create table 表名demo : show create tabele students;查询基本使用1.查询所有列select * from 表名例:select * from classes;2.查询指定列select 列1,列2,...from 表名;例:select id,name from classes;增加说明:主键列是自动增长,但是在全列插入时需要占位,通常使用空值(0或者null) ; 字段默认值 default 来占位,插入成功后以实际数据为准1.全列插入:值的顺序与表结构字段的顺序完全一一对应此时字段名列表不用填写insert into 表名 values (...)例:insert into students values(0,’郭靖',1,'蒙古','2016-1-2');2.部分列插入:值的顺序与给出的列顺序对应此时需要根据实际的数据的特点填写对应字段列表insert into 表名 (列1,...) values(值1,...)例:insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');上面的语句一次可以向表中插入一行数据,还可以一次性插入多行数据,这样可以减少与数据库的通信3.全列多行插入insert into 表名 values(...),(...)...;例:insert into classes values(0,'python1'),(0,'python2');4.部分列多行插入insert into 表名(列1,...) values(值1,...),(值1,...)...;例:insert into students(name) values('杨康'),('杨过'),('小龙女');修改update 表名 set 列1=值1,列2=值2... where 条件例:update students set gender=0,hometown='北京' where id=5;删除delete from 表名 where 条件例:delete from students where id=5;逻辑删除,本质就是修改操作update students set isdelete=1 where id=1;as关键字1.使用 as 给字段起别名select id as 序号, name as 名字, gender as 性别 from students;2.可以通过 as 给表起别名select s.id,,s.gender from students as s;条件语句查询where后面支持多种运算符,进行条件的处理比较运算符逻辑运算符模糊查询范围查询空判断比较运算符等于: =大于: >大于等于: >=小于等于: <=不等于: != 或 <>例1:查询编号大于3的学生select * from students where id > 3;例2:查询编号不大于4的学生select * from students where id <= 4;例3:查询姓名不是“黄蓉”的学生select * from students where name != '黄蓉';例4:查询没被删除的学生select * from students where is_delete=0;逻辑运算符andornot例5:查询编号大于3的女同学select * from students where id > 3 and gender=0;例6:查询编号小于4或没被删除的学生select * from students where id < 4 or is_delete=0;模糊查询like%表示任意多个任意字符_表示一个任意字符例7:查询姓黄的学生select * from students where name like '黄%';例8:查询姓黄并且“名”是一个字的学生select * from students where name like '黄_';例9:查询姓黄或叫靖的学生select * from students where name like '黄%' or name like '%靖';范围查询分为连续范围查询和非连续范围查询in表示在一个非连续的范围内例10:查询编号是1或3或8的学生select * from students where id in(1,3,8);between … and …表示在一个连续的范围内例11:查询编号为3至8的学生select * from students where id between 3 and 8;例12:查询编号是3至8的男生select * from students where (id between 3 and 8) and gender=1;空判断判断为空例13:查询没有填写身高的学生select * from students where height is null;注意: 1. null与’'是不同的 2. is null判非空is not null例14:查询填写了身高的学生select * from students where height is not null;例15:查询填写了身高的男生select * from students where height is not null and gender=1;优先级优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符and比or先运算,如果同时出现并希望先算or,需要结合()使用排序排序查询语法:select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]语法说明:将行数据按照列1进行排序,如果某些行列1 的值相同时,则按照列2 排序,以此类推asc从小到大排列,即升序desc从大到小排序,即降序默认按照列值从小到大排列(即asc关键字)例1:查询未删除男生信息,按学号降序select * from students where gender=1 and is_delete=0 order by id desc;例2:查询未删除学生信息,按名称升序select * from students where is_delete=0 order by name;例3:显示所有的学生信息,先按照年龄从大–>小排序,当年龄相同时按照身高从高–>矮排序select * from students order by age desc,height desc;分页select * from 表名 limit start=0,count说明从start开始,获取count条数据start默认值为0也就是当用户需要获取数据的前n条的时候可以直接写上xxx limit n;例1:查询前3行男生信息select * from students where gender=1 limit 0,3;关于分页的一个有趣的推导公式已知:每页显示m条数据,当前显示第n页求总页数:此段逻辑后面会在python项目中实现查询总条数p1使用p1除以m得到p2如果整除则p2为总数页如果不整除则p2+1为总页数获取第n页的数据的SQL语句求解思路第n页前有n-1页所在第n页前已经显示的数据的总量是(n-1)*m由于数据的下标从0开始所以第n页前所有的网页的下标是0,1,…,(n-1)*m-1所以第n页的数据起始下标是(n-1)*m获取第n页数据的SQL语句select * from students where is_delete=0 limit (n-1)*m,m注意:在sql语句中limit后不可以直接加公式聚合函数总数count(*) 表示计算总行数,括号中写星与列名,结果是相同的例1:查询学生总数select count(*) from students;最大值max(列) 表示求此列的最大值例2:查询女生的编号最大值select max(id) from students where gender=2;最小值min(列) 表示求此列的最小值例3:查询未删除的学生最小编号select min(id) from students where is_delete=0;求和sum(列) 表示求此列的和例4:查询男生的总年龄select sum(age) from students where gender=1;–平均年龄select sum(age)/count(*) from students where gender=1;平均值avg(列) 表示求此列的平均值例5:查询未删除女生的编号平均值select avg(id) from students where is_delete=0 andgender=2;分组group bygroup by + group_concat()group_concat(字段名)根据分组结果,使用group_concat()来放置每一个分组中某字段的集合group by + 聚合函数通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个值的集合做一些操作group by + havinghaving 条件表达式:用来过滤分组结果having作用和where类似,但having只能用于group by 而where是用来过滤表数据group by + with rollupwith rollup的作用是:在最后新增一行,来记录当前表中该字段对应的操作结果,一般是汇总结果。
50个常用的sql语句
50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher whereSC.C#=Course.C# and Teacher.T#=Course.T# andTeacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (selectStudent.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# andTeacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC whereS#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分 FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序 SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASEWHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASEWHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004) SELECT SUM(CASE WHEN C# ='001' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN scoreBETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85] ,SUM(CASE WHEN scoreBETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70] ,SUM(CASE WHEN scoreBETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60] ,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次, S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况) SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Snamehaving count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order byAvg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Snamehaving avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数 Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C#and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student whereSC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# andC.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩 select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。
数据库SQL经典语句
数据库SQL经典语句1.创建表:CREATE TABLE table_namecolumn1 datatype constraint,column2 datatype constraint,...2.插入数据INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);3.查询数据SELECT column1, column2, ...FROM table_nameWHERE conditionORDER BY columnLIMIT number;4.更新数据UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;5.删除数据DELETE FROM table_nameWHERE condition;6.创建索引CREATE INDEX index_nameON table_name (column1, column2, ...);7.删除索引DROP INDEX index_name ON table_name;8.修改表结构ALTER TABLE table_nameADD column datatype constraint;9.删除表DROP TABLE table_name;10.聚合函数(求和、平均值、最大值、最小值等) SELECT aggregate_function(column)FROM table_nameWHERE conditionGROUP BY column;11.连接表FROM table1INNER JOIN table2 ON condition;12.子查询SELECT column1, column2, ...FROM table1WHERE column IN (SELECT column FROM table2 WHERE condition);13.内连接SELECT column1, column2, ...FROM table1JOIN table2 ON condition;14.外连接SELECT column1, column2, ...FROM table1LEFT JOIN table2 ON condition;SELECT column1, column2, ...FROM table1RIGHT JOIN table2 ON condition;15.独立查询FROM table1WHERE EXISTS (SELECT column FROM table2 WHERE condition);16.分组查询SELECT column1, aggregate_function(column2)FROM table_nameWHERE conditionGROUP BY column1;17.排名查询SELECT column1, column2, ..., RANK( OVER (ORDER BY column DESC)FROM table_name;以上是一些数据库SQL经典语句,覆盖了创建、插入、查询、更新、删除、索引、表结构修改、聚合函数、连接表、子查询、内连接、外连接、独立查询、分组查询、排名查询等常见的操作语言。
SQL语句心得思迅常用
品牌档案表 t_bd_item_brand会员类别表 t_rm_vip_type会员档案表 t_rm_vip_info限用次数 use_num剩余积分 now_acc_num积累积分 acc_num已用积分 dec_num商品档案表 t_bd_item_info类别编码 item_clsno商品名称 item_name类别档案表 t_bd_item_cls供应商档案表 t_bd_supcust_info库存数量表 t_im_branch_stock分店仓库表 t_bd_branch_info系统操作员表 t_sys_operator供应商商品关系表 t_bd_supcust_item会员付款记录表 t_rm_vip_acclist会员储值表 t_rm_vip_savelist1,修改某个商品的库存use isszmv8goupdate t_im_branch_stockset stock_qty ='库存数'where item_no = '02030114 '2,修改整个系统库存use isszmv8goupdate t_im_branch_stockset stock_qty ='库存数'3,在整个数据库中修改商品类别select * from t_bd_item_info where item_name like '%资生堂%'update t_bd_item_info set item_clsno='01' where item_name like '%资生堂%'4,在每个类别中修改商品类别use isszmv8goupdate t_bd_item_info set item_clsno='修改后的类别' where item_clsno='修改前的类别' and item_name like '%惠氏%'--item_clsno列别编码, item_name 商品名称5,批量修改商品品牌use isszmv8goupdate t_bd_item_info set item_brandname='惠氏',item_brand='请填入品牌编码' where item_name like '%惠氏%'6,开通历史库存查询功能use isszmv8 --执行前请先备份数据库godelete from t_sys_system where sys_var_id = 'histroystock_query'INSERT INTO t_sys_system(sys_var_id, sys_var_name, sys_var_value)VALUES('histroystock_query', '启用历史库存查询' , '1');7,修改所有门店分店变价use isszmv8update t_bd_item_info set branch_price = 1 (“0” 代表不能分店变价,1代表可以)8,修改所有门店前台打折use isszmv8update t_bd_item_info set en_dis = 1 (“0” 代表不能前台打折,1代表可以)9,修改所有门店前台议价use isszmv8update t_bd_item_info set change_price = 1 (“0” 代表不能前台议价,1代表可以)10,修改所有商品积分use isszmv8update t_bd_item_info set vip_acc_flag = 111,修改所有商品赠送use isszmv8update t_bd_item_info set en_gift = '1'12,删除分店机构信息use isszmv8godelete from t_bd_branch_info where branch_no='分店编号'13,删除分店出入库流水use isszmv8godelete from t_im_flow where branch_no='分店编号'14,批量修改积分有效期use isszmv8goupdate t_rm_vip_info set vip_end_date = '2015-10-01' --修改积分有效期,日期可修改15,SQL语句备份数据库use mastergobackup database 数据库名 to disk='D:\备份名.bak'16,SQL语句还原数据库use masterrestore database 数据库名 from disk='c:\备份名.bak' with REPLACE17,修改会员IDuse isszmv7goupdate t_rm_vip_acclist set card_id='新的卡号' where card_id='2011108/6' update t_rm_vip_good_flow set card_id='新的卡号' where card_id='2011108/6' update t_rm_vip_info set card_id='新的卡号' where card_id='2011108/6'update t_rm_vip_savelist set card_id='新的卡号' where card_id='2011108/6' update t_rm_protion_flow set card_id='新的卡号' where card_id='2011108/6'18,修改会员积分有效期use isszmv7goUPDATE t_rm_vip_info SET vip_end_date = '2015-10-01'19,修改会员储值有效期Use isszmV7goUPDATE t_rm_vip_info SET sav_end_date = '2010-11-9'20,未发生业务的门店重新初始化use isszmv8goupdate t_bd_branch_info set com_init='0' where branch_no='门店编码'21,释放日志文件use mastergobackup transaction isszmv8_branch with no_loggoDBCC SHRINKDATABASE(isszmv8_branch)Go22,修改客户信息使用的门店use isszmv9goupdate t_bd_supcust_info set mbranch_no = '门店六位机构号' where supcust_no = '客户编码'go23,会员礼品兑换的总部统一管理开通语句use isszmv8goif not exists (select 1 from t_sys_system where sys_var_id = 'vip_good_zb')begininsert into t_sys_system values('vip_good_zb','会员礼品兑换的总部统一管理','1','否',null,'',null,null)endelsebeginupdate t_sys_system set sys_var_value='1' where sys_var_id = 'vip_good_zb' end24,开通SX3500盘点机使用自编码use isszmv8_branch --专卖V8分部数据库名称goif not exists(select * from t_sys_system where sys_var_id='takestock_itemsub') insert into t_sys_system values('takestock_itemsub','盘点机下载自编码',1,'否','1=使用自编码,0=使用货号',1,null,null)25,将大类编号为30的商品的会员价1,会员价3都调成零售价use isszmv9goUPDATE t_bd_item_info SET vip_price = sale_price,vip_price3 = sale_price WHERE substring(item_clsno,1,2)='30'26,将大类编号为30的商品的会员价1、会员价3设置为等于零售价的8折use isszmv9goUPDATE t_bd_item_info SET vip_price = sale_price*0.8,vip_price3 = sale_price*0.8 WHERE substring(item_clsno,1,2)='30'。
SQL基本常用语句大全
----------------------------- 数据库的有关SQL语句-------------------------1、数据库创建create database data_nameon primary(name= ,filename= ,size= ,maxsize= ,filegrowth=),filegroup [辅助文件组名](name= ,filename= ,size= ,maxsize= ,filegrowth=)log on(name= ,filename= ,size= ,maxsize= ,filegrowth=)修改alter database 原数据库名modify name=新名字删除drop database data_name产看信息:sp_helpdb 数据库名切换数据库use 数据库名2、架构创建create schema jiagou删除drop schema jiagou3、辅助文件添加alter database data_nameadd file(name=file1,filename='d:\file1.ndf',size=10MB,filegrwth=10MB) to filegroupgroup1修改alter database data_namemodify file(name= ,filename= ,size= ,maxsize= ,filegrowth=)删除alter database data_nameremove file 文件逻辑名4、日志文件(修改的时候,逻辑名称不能修改)添加alter database data_nameadd log file (name= ,filename= ,size= ,maxsize= ,filegrowth=) 修改alter database data_namemodify file(name= ,filename= ,size= ,maxsize= )删除alter database c1204remove file 逻辑名5、文件组添加alter database data_nameadd filegroup group_name修改alter database data_namemodify filegroup 原文件组名name=新文件组名删除alter database data_nameremove filegroup 文件组名--------------------------------- 表的有关SQL语句--------------------------------1、表创建:create table table_name(id int identity(1001,3) primary key not null,st_name nvarchar(10) null,sex nvarchar(4) default('男'),gongzi money,shijian datetime)修改表名:exec sp_rename 'table', 'table33' (注意:尽量不要改表名,容易引起其它对象的错误)删除:drop table table_name2、表的列(字段)的操作添加列:alter table table_nameadd 列名列的数据类型null / not null删除列:alter table table_namedrop column 列名修改列的名称:exec sp_rename '表名.字段名', '新的字段名', 'column' (提示:尽量不要改列名,容易引起错误)修改列的数据类型:alter table table_namealter column 列名列的数据类型3、对数据的操作插入: insert into table_name(字段1,字段2,字段3) values( 值, 值, 值,)删除:delete from where stu_name='王伟' and id=3修改:update table_name set 字段名=值where id=4------------------------------------ 主键、外建(补充) -------------------------1、创建:create table class(cl_id int primary key,cl_name nvarchar(10) null)create table address(add_id int primary key,add_name nvarchar(10) null)create table student(stu_id int primary key,stu_name nvarchar(10) null,cl_id int foreign key references class(cl_id) null ,add_id int foreign key references address(add_id) null)意义:用于和加强表之间的联系,当在添加,修改和删除数据时,保持几张表中数据的一致性------------------------------ SQL查询语句--------------------------------1、排序select top(3) * from student order by cl_id desc2、分组select class_id ,sum(score) as chengji from student group by class_idhaving sum(score)>=250order by sum(score) desc提示:聚合函数不能在where中使用,所以才用到了having3、清空表truncate table table_name4、消除重复列select distinct 列名from table_name (提示:只能显示出此列,其它列显示不出来)5、select * from table_name where name in ('张三','李四','王五')select * from table_name where score in (100,90,87,89,96)------------------------------- 表联接---------------------------------1、内联接:select * from student as s inner join classas c on s.cl_id=c.cl_id where .....2、左外联接:返回第一个已命名的表中符合条件的所有行select * from student as s left join class as c on s.cl_id=c.cl_idwhere ....3、右外链接:返回第二个已命名的表中符合条件的所有行select * from student as s right join class as c on s.cl_id=c.cl_idwhere .....4、完全外联接:返回左表、右表中的所有值select * from student as s full join class as c on s.cl_id=c.cl_id5、交叉联接:将从被联接的表中返回所有可能的行组合(会生成一个笛卡尔积)select * from student as s cross join class as cwhere ....6、两个以上的表的联接:select * from student as s join class as con s.cl_id=c.cl_id join address as a on s.add_id=a.add_idwhere ='张三'7、union 结合多个表的数据select stu_id as '学生编号' , stu_name as '名字' from student1unionselect id ,name from student2unionselect s_id , s_name from student3--------------------------- 子查询----------------------1、把子查询用作派生表可用子查询产生一个派生表,用于代替where、having、from子句中的表,注意要用别名来引用这个派生表select s.stu_name,s.cl_id from (select * from student where stu_id >2) as swhere s.stu_name='王二'2、把子查询用作表达式在sql语句中,所有使用表达式的地方,都可以用子查询代替,此时子查询必须取值为单个列值的表,于是这个子查询可以代替where子句中包含in关键字的表达式select * from student where stu_id not in (select id from student where stu_id>2)3、使用子查询关联数据关联子查询可以作动态表达式,因为它随着外层查询的每一次变化而变化例1:select stu_id,stu_name,cl_id,(select count(stu_id) from student) as 记录条数from student例2:select * from student as s join class as c on s.cl_id=c.cl_idwhere not exists(select * from class where c.cl_id>3)--------------------------- 变量、条件语句、循环语句--------------------------1、变量(1)局部变量---可以select、set进行赋值例一:declare @i intselect @i=count(*) from studentprint @i例二:declare @sname varchar(4)set @sname='张三'print @sname(2)全局变量---只能用系统提供的,用户不能定义,所以只了解一下书上70页的就可以2、条件语句(1) if...else...语句declare @sex_id intdeclare @sex_name nvarchar(4)select @sex_id=sex from student (where ...)if @sex_id=1beginset @sex_name='男'endelsebeginset @sex_name='女'endprint @sex_name(2) case语句select stu_name as 姓名, (case cl_idwhen 1 then '一班'when 2 then '二班'when 3 then '三班'when 4 then '四班'else '暂无班级'end ) as 班级from student3、循环语句while 语句:declare @i intdeclare @name nvarchar(10)set @i=1while @i<13beginselect @name=stu_name from student where stu_id=@iprint @nameset @name=''set @i=@i+1end------------------------------ 事务------------------------------1、事务的概念事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。
数据库sql查询语句
数据库sql查询语句以下是常用的SQL查询语句:1. 查询表中所有数据:SELECT * FROM table_name;2. 查询表中指定数据列:SELECT column1, column2, column3 FROM table_name;3. 根据条件查询数据:SELECT * FROM table_name WHERE column_name = value;4. 查询符合多个条件的数据:SELECT * FROM table_name WHERE column_name1 = value1 AND column_name2 = value2;5. 查询符合任意一个条件的数据:SELECT * FROM table_name WHERE column_name1 = value1 OR column_name2 = value2;6. 查询符合一定范围条件的数据:SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;7. 查询符合模糊匹配的数据:SELECT * FROM table_name WHERE column_name LIKE '%value%';8. 查询符合多个条件的数据,按照指定字段排序:SELECT * FROM table_name WHERE column_name1 = value1 AND column_name2 = value2 ORDER BY column_name3 ASC;9. 查询数据条数限制:SELECT * FROM table_name LIMIT 10;10. 查询特定数据条数:SELECT * FROM table_name LIMIT 5, 10;以上是一些基本的SQL查询语句,可以根据实际需求进行修改和组合。
SQL查询语句精华大全讲解
SQL查询语句精华大全一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email 字段。
SELECT nickname,emailFROM testtableWHERE name='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:SELECT *FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:SELECT nickname,emailFROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=emailFROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
常用SQL语句总结
常⽤SQL语句总结⼀、检索数据1、检索单个列SELECT prod_name FROM Products;该语句利⽤ SELECT 语句从 Products 表中检索⼀个名为 prod_name的列。
所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中检索数据。
2、检索多个列要想从⼀个表中检索多个列,仍然使⽤相同的 SELECT 语句。
唯⼀的不同是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。
在选择多个列时,⼀定要在列名之间加上逗号,但最后⼀个列名后不加。
如果在最后⼀个列名后加了逗号,将出现错误。
SELECT prod_id, prod_name, prod_price FROM Products;3、检索所有列SELECT*FROM Products;4、检索不同的值SELECT DISTINCT vend_id FROM Products;SELECT DISTINCT vend_id 告诉 DBMS 只返回不同(具有唯⼀性)的vend_id ⾏(如果此列多⾏数据⼀样,则只返回⼀⾏)。
如果使⽤DISTINCT 关键字,它必须直接放在列名的前⾯。
注意:不能部分使⽤ DISTINCTDISTINCT 关键字作⽤于所有的列,不仅仅是跟在其后的那⼀列。
例如,你指定 SELECT DISTINCT vend_id, prod_price,除⾮指定的两列完全相同,否则所有的⾏都会被检索出来。
5、限制结果各种数据库中的这⼀ SQL 实现并不相同。
(1)在 SQL Server 和 Access 中使⽤ SELECT 时,可以使⽤ TOP 关键字来限制最多返回多少⾏。
SELECT TOP5 prod_name FROM Products;上⾯代码使⽤ SELECT TOP 5 语句,只检索前 5 ⾏数据。
(2)如果你使⽤的是 DB2,很可能习惯使⽤下⾯这⼀ DBMS 特定的 SQL 语句。
SQL查询语句大全
SQL查询语句大全语句功能1、数据操作Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据行Delete --从数据库表中删除数据行Update --更新数据库表中的数据2、数据定义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 --从数据库中删除一个域3、数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限4、事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征5、程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询6、局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'7、全局变量---必须以@@开头8、IF 语句declare @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'9、CASE 语句use panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05end10、WHILE CONTINUE BREAK 语句declare @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 = 1end11、WAITFOR语句--例等待1 小时2 分零3 秒后才执行Select 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行Select 语句waitfor time ’23:08:00’select * from employee12、Select语句select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_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 stocksex = 'man'stocknumber between 20 and 100stocknumber 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, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table213、insert 语句insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句14、update语句update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 415、delete语句delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表16、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约束17、常用函数----统计函数----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 =(select max(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 间的随机浮点数18、字符串函数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() --函数用另一子串替换字符串指定位置长度的子串19、数据类型转换函数----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 200020、日期函数----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 的缺省格式返回系统当前的日期和时间21、系统函数----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 newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值22、数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:Select PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual 23.子串位置 --返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊子串的位置 --返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR>select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:Select STUFF('abcdef', 2, 3, 'ijklmn') valueO:Select Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换 lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:Select SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:Select SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中用Select DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高23、日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual 38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual 39.取日期时间的其他部分S:DATEPART 和 DATENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:Select Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) valueO:Select To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)Select (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:Select sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:Select New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加—夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT 太平洋标准时间YST YDT YUKON标准时间。
SQL查询语句大全集锦
SQL查询语句大全集锦一、简单查询简单的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语句查询及与查询相关的表或视图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Insert:插入INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)Create:创建Create database db_name 建库Creat table tb_name 建表(Id int not null, //not null 不能为空约束Name varchar(50),Age int,Address carchar(250))Unique:唯一约束Create table tb_name //创建唯一约束( tb_id int not null unique )Alter table tb_name //给id 和name添加唯一约束Add constraint cs_name unique (id,name)Alter table tb_name //删除约束Drop constraint cs_namePrimary key:主键Create table ta_name (id int Primary key )Alter table tb_name add constraint PK_id Primary key (id)Alter table tb_name drop constraint PK_idForeign key:外键Creat table tb_a (id_a int Foreign key references tb_b(id_b))Alter table tb_a add constraint FK_id Foreign key (id_a) references tb_b(id_b)Alter table tb_a drop constraint FK_idCheck:约束值的范围Create table ta_a (id int not null check (id>0))Alter table tb_a add co nstraint CK_name check (id >0 and studentname like ‘张%’) Alter table tb_a drop constraint CK_nameDefault:设置默认值Create table tb_a (score int default 0, time date default getdate())Alter table tb_a alter time set default getdate()Alter table tb_a alter time drop defaultCreate index:索引Create index ind_name on tb_a (x desc , y)Create unique index ind_name on tb_a (x) // 创建唯一的索引,意味着两个行不能拥有相同的索引值Create view:视图Create view [vie_name] as select id,name,score from tb_a where id=1Select * from [vie_name] //调用视图SQL create or replace view syntax create or replace view vie_name as select id,name ,score from tb_a where id=1 //更新视图?SQL drop view syntax drop view vie_name//删除视图Data:日期函数Delete:删除Delete * from table_aDelete from table_a where x=’one’Update:修改修改表:Update 表名 SET 列名称 = 新值 WHERE 列名称 = 某值修改一行中的若干列:update tabe_a set x=’yes’,y=’no’ where z=’one’Distinct:去重复Select Distinct列名称 FROM table_aOrder by:Select x , y from table_a order by x desc, y asc (desc逆序 asc 正序)Group by :分组Select id ,name,price,sex from tb_a group by name,sexHaving:在合计函数中代替where的作用Select id,name,price,sex from tb_a where group by sex having price>50Case when ()搜索函数:Select a,case when a in (select a from table_b) then ‘yes’ sele ‘no’ end from table_a Select a when 1 then ‘one’ when 2 then ‘two’ else ‘other’ end from table_aSelect x from table_1 where case when x <>0 then y/x >1.5 else false endBtween and:select * from table_a where a.score not between 80 and 90Top: select top 10 *from tabale_aLink:模糊查询Select * from table_a where name link ‘张%’通配符:%:代替一个或多个字符—:代替一个字符[内容] :字符列中任何单一字符[^内容] 或[!内容]:不在字符列中任何单一字符Select * from table_a where name like ‘_arry’ 查询名字中第一个字符后为arry的人In: select * from table_a where x in (select x from table_b)As :指定名称 select x as name, y as age from table_aJoin on : select * from table_a inner join table_b on table_a.key=table-B.key∙join = Inner join: 两个表中都没有匹配就不显示(内连接)∙left join=left outer join : 即使右表中没有匹配,也从左表返回所有的行(左外链接)∙right join=right outer join j: 即使左表中没有匹配,也从右表返回所有的行(有外链接)∙full join=full outer join: 只要其中一个表中存在匹配,就返回行(全外链接)union ,union all:union all 是存在重复,union不会显示重复的数据,用于合并两个或多个 select 语句的结果集。
select x from table_a union select x from table_bis nul l:如果一个值可能为空,但是在计算时,我们不希望为空,就需要转为为0select id,total*(sun+isnull(price,0)) from tb_aSUM:求和Select sun(price) from tb_aMAX/MIN:查找最大/最小值Select max/min(price) from tb_aavg:求平均值select avg(score) from tb_namecount:求总条数select count(distinct name) from tbRANK:根据ORDRR BY子句中表达式的值,从查询返回的每一行,计算他们与其他的相对位置DENSE_RANK:根据ORDRR BY子句中表达式的值,从查询返回的每一行,计算他们与其他的相对位置first:返回组中的第一个值可用 order by进行排序select first (name) from tb_a order by namelast:返回组中最后一个值select last (name) from tb_a order by namelcase():将字段转换为小写select lcase(name) from tb_amid():从文本字段中提取字符select mid(name, start[1,length])from tb_a //1是开始的位置,默认为1select min(name,1,3) from tb_alen:返回字段中值的长度select len(name) from tb_around:将字段舍入为指定的小数位数select round(price,decimals) from tb_a // decimals规定需要返回的小数位数select round(price,2) front b_anew:返回当前时间format:用于对字段的显示进行格式化select format(name,format) from tb_a // format 规定的格式select name,price,format(now(),’yyyy-mm-dd’) from tb_aLAG:可以访问结果集中的其他行而不用进行自连接LEAD:LEAD与LAG相反,LEAD可以访问组中当前行之后的行ROW_NUMBER:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号Stddev:计算当前行关于组的标准偏离Stddev_pop:该函数计算总体标准偏离,返回总体变量的平方根Stddev_samp:该函数计算积累样本标准偏离,返回总体变量的平方根Var_pop:该函数返回非空集合的总体变量(忽略null)Var_samp:该函数返回非空集合的样本变量(忽略null)Variance:若表达式中行数为1,返回0,若表达式中行大于1,返回Var_samp Cume_dist:计算一行在组中相对的位置Ntile:讲一个组分为“表达式”的散列表示Percentile_disc= Percent_rank:返回一个与输入的分布百分比值相对应的数据值Median:查找最小值与最大值的平均值数据类型。