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.前后几日直接与整数相加减。
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语句(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 top 10 * from 数据表 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 …) values (值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语句1. SELECT: 用于查询表中的数据,可以使用通配符(*)表示所有列或者指定列名。
例子:SELECT * FROM table_name;2. FROM: 用于指定查询的数据来源,即需要查询哪张表。
例子:SELECT * FROM table_name;3. WHERE: 用于筛选满足条件的数据行,可以使用比较运算符(>,<,=,!=,>=,<=)等。
例子:SELECT * FROM table_name WHEREcolumn_name >= 10;4. ORDER BY: 用于将查询结果按照某个列进行排序,可以指定升序或降序(ASC或DESC)。
例子:SELECT * FROM table_name ORDER BYcolumn_name ASC;5. GROUP BY: 用于将查询结果按照某个列进行分组,通常使用聚合函数(SUM,COUNT,AVG,MAX,MIN)进行数据计算。
例子:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;6. LIMIT: 用于限制查询结果的数量,只返回前几条数据。
例子:SELECT * FROM table_name LIMIT 10;7. JOIN: 用于将多张表按照共同的字段进行连接,可以有多种连接方式(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN)。
例子:SELECT * FROM table1 LEFT JOIN table2 ONtable1.column_name = table2.column_name.。
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 ontabname(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 数据加工常用语句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语句
常用的SQL语句下面列举了一些我们在开发中常常会使用到的SQL语句,供大家参考学习。
1. 查询所有数据:SELECT * FROM table_name;2. 查询指定列数据:SELECT column1, column2 FROM table_name;3. 带条件查询:SELECT * FROM table_name WHERE condition;4. 带条件查询并排序:SELECT * FROM table_name WHERE condition ORDER BY column_name ASC/DESC;5. 带分组的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1;6. 带分组和排序的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1 ORDER BY COUNT(*) DESC;7. 带聚合函数的查询:SELECT AVG(column1), MAX(column2), MIN(column3) FROM table_name;8. 带子查询的查询:SELECT * FROM table_name WHERE column1 IN (SELECT column1 FROM other_table);9. 带连接条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2;10. 带连接和排序条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 ORDER BY table1.column2 ASC;11. 带连接和分组条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2;12. 带连接和聚合函数条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2 HAVING AVG(table2.column3) > 0;13. 插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2);14. 更新数据:UPDATE table_name SET column1 = value1 WHERE condition;15. 删除数据:DELETE FROM table_name WHERE condition;16. 清空表数据:TRUNCATE TABLE table_name;17. 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);18. 修改表结构:ALTER TABLE table_name ADD column_name datatype;19. 删除表:DROP TABLE table_name;20. 查看表结构:DESCRIBE table_name;21. 查看表数据量:SELECT COUNT(*) FROM table_name;22. 查看表索引:SHOW INDEX FROM table_name;23. 创建索引:CREATE INDEX index_name ON table_name (column_name);24. 删除索引:DROP INDEX index_name ON table_name;25. 批量插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;26. 批量更新数据:UPDATE table_name SET column1 = value1 WHERE condition, column2 = value2 WHERE condition, ...;27. 批量删除数据:DELETE FROM table_name WHERE condition, ...;28. 分页查询:SELECT * FROM table_name LIMIT offset, limit;29. 子查询嵌套查询:(SELECT column1 FROM other_table WHERE condition) IN (SELECT column1 FROM another_table WHERE condition);30. UNION操作符查询:SELECT * FROM table1 UNION SELECT * FROM table2。
30条SQL经典得SQL语句
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
显示结果:
type vender pcs
电脑 A பைடு நூலகம்
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
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语句 例题
sql语句例题当然可以。
以下是一些SQL语句的例题:1.查询所有学生信息:sql复制代码:SELECT * FROM students;2.查询年龄大于20岁的学生信息:sql复制代码:SELECT * FROM students WHERE age > 20;3.查询年龄在20到25岁之间的学生信息:sql复制代码:SELECT * FROM students WHERE age BETWEEN 20 AND 25;4.查询名字为"John"的学生信息:sql复制代码:SELECT * FROM students WHERE name = 'John';5.查询名字以"J"开头的学生信息:sql复制代码:SELECT * FROM students WHERE name LIKE 'J%';6.查询名字为"John"或"Jane"的学生信息:sql复制代码:SELECT * FROM students WHERE name IN ('John', 'Jane');7.对学生成绩进行排序,首先按分数降序,然后按名字升序:sql复制代码:SELECT * FROM students ORDER BY score DESC, name ASC;8.查询年龄最大的学生信息:sql复制代码:SELECT * FROM students ORDER BY age DESC LIMIT 1;9.查询年龄最小的学生信息:sql复制代码:SELECT * FROM students ORDER BY age ASC LIMIT 1;10.计算学生的总数:sql复制代码:SELECT COUNT(*) FROM students;。
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基本语句及示例1 . SQL SELECT 语句SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法以及:2. SQL SELECT DISTINCT 语句在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT 用于返回唯一不同的值。
语法:使用DISTINCT 关键词如果要从"Company" 列中选取所有的值,我们需要使用SELECT 语句:现在,在结果集中,"W3School" 仅被列出了一次。
3. WHERE 子句如需有条件地从表中选取数据,可将WHERE 子句添加到SELECT 语句。
语法引号的使用请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值,请不要使用引号。
文本值:数值:5. ORDER BY 语句ORDER BY语句用于对结果集进行排序实例4以逆字母顺序显示公司名称,并以数字顺序显示顺序号:6. INSERT INTO 语句INSERT INTO 语句用于向表格中插入新的行。
语法我们也可以指定所要插入数据的列:SQL 语句:SQL 语句:7. DELETE 语句DELETE 语句用于删除表中的行。
语法删除某行"Fred Wilson" 会被删除:删除所有行可以在不删除表的情况下删除所有的行。
这意味着表的结构、属性和索引都是完整的:1.SQL AVG() 语法例子1现在,我们希望计算"OrderPrice" 字段的平均值。
我们使用如下SQL 语句:例子2现在,我们希望找到OrderPrice 值高于OrderPrice 平均值的客户。
我们使用如下SQL 语句:2.SQL COUNT() 函数COUNT() 函数返回匹配指定条件的行数。
数据库基本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 ty pe2 [not null],。
.)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2…from tab_old defin ition 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基础语句50条
sql基础语句50条 curdate() 获取当前⽇期年⽉⽇curtime() 获取当前时间时分秒sysdate() 获取当前⽇期+时间年⽉⽇时分秒*/order by bonus desclimit (页码-1)*每页显⽰记录数, 每页显⽰记录数*/foreign key dept_id references dept(id)--指定外键-- ------------------------------------- ⼀、创建建数据库、创建建数据表、查看数据库、查看数据表-- ------------------------------------- 01.查看mysql服务器中所有数据库show databases;-- 02.进⼊某⼀数据库(进⼊数据库后,才能操作库中的表和表记录)use (库名) tast;-- 查看已进⼊的库select database();-- 03.查看当前数据库中的所有表-- 04.删除mydb1库-- 语法:drop database 库名;drop database (库名) test;-- 思考:当删除的表不存在时,如何避免错误产⽣?drop database (库名) if exists test;-- 05.重新创建mydb1库,指定编码为utf8-- 语法:create database 库名 charset 编码;create database mubatis12 charset utf8;-- 如果不存在则创建mydb1;create database if not exists mubatis12 charset utf8;-- 06.查看建库时的语句(并验证数据库库使⽤的编码)-- 语法:show create database 库名;show create database mybatis1;-- 07.进⼊mydb1库,删除stu学⽣表(如果存在)-- 语法:drop table 表名;drop table if exists stu;-- 08.创建stu学⽣表(编号[数值类型]、姓名、性别、出⽣年⽉、考试成绩[浮点型])/* 建表的语法:create table 表名(列名数据类型,列名数据类型,...); */create table stu(id int primary key auto_increment,name varchar(20),gender varchar(20),birthday date,score double );-- 09.查看stu学⽣表结构show create table stu;desc stu;-- ------------------------------------- ⼆、新增、修改、删除表记录 **********-- ------------------------------------- 10.往学⽣表(stu)中插⼊记录(数据)-- 插⼊记录:insert into 表名(列1,列2,列3...) values(值1,值2,值3...);insert into stu (id,name,gender,birthday,score) values(1,'Tony','⼥','1998-07-02',99.5);insert into stu values(2,'Ben','男','1998-07-03',90);insert into stu values(4,'张三','男','1998-07-08',70);insert into stu values(5,'李四','男','1998-07-09',59);insert into stu values(6,'桂花','⼥','1998-07-09',80);insert into stu values(7,'秀芹','⼥','1998-07-10',50);insert into stu values(8,'海燕','⼥','1999-5-4',91);/* 提⽰:设置编码:set names gbk;查看MySQL数据库使⽤的编码:show variables like 'char%';mysql --default-character-set=gbk -uroot -proot */-- 11.查询stu表所有学⽣的信息select*from stu;-- 12.修改stu表中所有学⽣的成绩,加10分特长分-- 修改语法: update 表名 set 列=值,列=值,列=值...;update stu set score=score+10;-- 13.修改stu表中王海涛的成绩,将成绩改为88分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建数据库创建之前判断该数据库是否存在if exists(select*from sysdatabases where name='databaseName') drop database databaseNamegoCreate DATABASE database-name删除数据库drop database dbname备份sql server---创建备份数据的deviceUSE masterEXEC sp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'---开始备份BACKUP DATABASE pubs TO testBack创建新表create table tabname(col1type1[not null][primary key],col2 type2[not null],..)根据已有的表创建新表:A:gouse原数据库名goselect*into目的数据库名.dbo.目的表名from原表名(使用旧表创建新表)B:create table tab_new as select col1,col2…from tab_old definition only创建序列create sequence SIMON_SEQUENCEminvalue1--最小值maxvalue999999999999999999999999999--最大值start with1--开始值increment by1--每次加几cache20;删除新表drop table tabname增加一个列Alter table tabname add colname coltype删除一个列Alter table tabname drop column colname添加主键Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)创建索引create[unique]index idxname on tabname(col…。
)删除索引:drop index idxname on tabname注:索引是不可更改的,想更改必须删除重新建。
创建视图create view viewname as select statement删除视图:drop view viewname简单基本的sql语句(1)数据记录筛选:sql="select*from数据表where字段名=字段值order by字段名[desc]"sql="select*from数据表where字段名like'%字段值%'order by 字段名[desc]"sql="select top10*from数据表where字段名order by字段名[desc]"sql="select*from数据表where字段名in('值1','值2','值3')"sql="select*from数据表where字段名between值1and值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)添加数据记录:判断数据库是否存在if exists(select*from sysdatabases wherename='数据库名') dropdatabase[数据库名]判断表是否存在if not exists(select*from sysobjects where[name]='表名' and xtype='U')begin--这里创建表end判断存储过程是否存在if exists(select*from sysobjects where id=object_id(N'[存储过程名]')and OBJECTPROPERTY(id,N'IsProcedure')=1) dropprocedure[存储过程名]判断临时表是否存在if object_id('tempdb..#临时表名')is not nulldroptable#临时表名判断视图是否存在--SQL Server2000复制表(只复制结构,源表名:a新表名:b)(Access可用)法一:select*into b from a where1<>1法二:select top0*into b from a拷贝表(拷贝数据,源表名:a目标表名:b)(Access可用)insert into b(x,y,z)select d,e,f from a;跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insert into b(x,y,z)select d,e,f from a in‘具体数据库’where 条件例子:。
.from b in'"&Server.MapPath("."&"\data.mdb"&"'where..子查询(表名1:a表名2:b)select a,b,c from a where a IN(select d from b或者:select a,b,c from a where a IN(1,2,3)显示文章最后时间select a.title,ername,b.adddate from table a,(selectmax(adddate)adddate from table where table.title=a.title)b外连接查询(表名1:a表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a= b.c在线视图查询(表名1:aselect*from(Select a,b,c FROM a)T where t.a>1;between的用法between限制查询数据范围时包括了边界值,not between不包括select*from table1where time between time1and time2select a,b,c,from table1where a not between数值1and数值2in的使用方法select*from table1where a[not]in(‘值1’,’值2’,’值4’,’值6’)删除主表没有的信息两张关联表delete from table1where not exists(select*from table2where table1.field1=table2.field1四表联查问题select*from a left inner join b on a.a=b.b right inner joinc on a.a=c.c inner joind on a.a=d.d where.....日程安排提前五分钟SQL:select*from日程安排where datediff('minute',f开始时间,getdate())>5一条sql搞定数据库页select top10b.*from(select top20主键字段,排序字段from表名order by排序字段desc)a,表名b where b.主键字段= a.主键字段order by a.排序字段前10条记录select top10*from table1where范围选择排名选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等。
)select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)派生结果表包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表1=1,1=2的使用在SQL语句组合时用的较多“where1=1”是表示选择全部“where1=2”全部不选,如:if@strWhere!='beginset@strSQL='select count(*)as Total from['+@tblName+'] where'+@strWhereendelsebeginset@strSQL='select count(*)as Total from['+@tblName+']' end我们可以直接写成set@strSQL='select count(*)as Total from['+@tblName+'] where1=1and'+@strWhere收缩数据库--重建索引DBCC REINDEXDBCC INDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE@StartTime DATETIME,@TruncLog VARCHAR(255)Select@StartTime=GETDATE(),@TruncLog='BACKUP LOG'+db_name()+'WITH TRUNCATE_ONLY' DBCC SHRINKFILE(@LogicalFileName,@NewSize)EXEC(@TruncLog)--Wrap the log if necessary.WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--time has not expiredAND@OriginalSize=(Select size FROM sysfiles Where name= @LogicalFileName)AND(@OriginalSize*8/1024)>@NewSizeBEGIN--Outer loop.Select@Counter=0WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000)) BEGIN--updateInsert DummyTrans VALUES('Fill Log')Delete DummyTransSelect@Counter=@Counter+1ENDEXEC(@TruncLog)ENDSelect'Final Size of'+db_name()+'LOG is'+CONVERT(VARCHAR(30),size)+'8K pages or'+CONVERT(VARCHAR(30),(size*8/1024))+'MB'FROM sysfilesWhere name=@LogicalFileNameDrop TABLE DummyTransSET NOCOUNT OFF更改某个表exec sp_changeobjectowner'tablename','dbo'存储更改全部表Create PROCEDURE er_ChangeObjectOwnerBatch@OldOwner as NVARCHAR(128),@NewOwner as NVARCHAR(128)ASDECLARE@Name as NVARCHAR(128)1完整。