SQL常用语句

合集下载

数据库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 type注:列增加后将不能删除。

DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键: Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。

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函数)。

SQL语句大全

SQL语句大全

8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
update SC set score=(select avg(SC_2.score)
from SC SC_2
where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');
10、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
FROM SC L ,SC AS R
WHERE L.C# = R.C# and
L.score = (SELECT MAX(IL.score)
FROM SC AS IL,Student AS IM
WHERE L.C# = IL.C# and IM.S#=IL.S#
from Student left Outer join SC on Student.S#=SC.S#

经典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 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)并消去表中任何重复行而派生出一个结果表。

30条SQL经典得SQL语句

30条SQL经典得SQL语句
17、说明:随机取出10条数据
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不包括

sql语句大全(详细)

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的作用是:在最后新增一行,来记录当前表中该字段对应的操作结果,一般是汇总结果。

sql语句学习_经典大全_推荐

sql语句学习_经典大全_推荐

sql语句学习数据定义语言(DDL):1)创建数据库(create):create database database-name;eg. create database test;2)删除数据库:drop database dbname;eg.drop database test;3)创建新表:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..);eg.根据已有的表创建新表的例子:create table tab_new like tab_old;create table tab_new as select col1,col2… from tab_old definition only;4)删除表:drop table tabname;5)增加列:alter table tabname add column col type;6)添加主键:alter table tabname add primary key(col) ;7)删除主键:alter table tabname drop primary key(col) ;8)创建索引:create [unique] index idxname on tabname(col….) ;9)删除索引:drop index idxname; 注:索引是不可更改的,想更改必须删除重新建;10)创建视图:create view viewname as select statement;2. 数据操纵语言(DML)1)查询语句(select)eg1. select * from table1 where field1 like '%value1%';eg2. select * from table1 order by field1,field2 [desc];eg3. select count as totalcount from table1;eg4. select sum(field1) as sumvalue from table1;eg5. select avg(field1) as avgvalue from table1;eg6. select max(field1) as maxvalue from table1;eg7. select min(field1) as minvalue from table1;eg8. select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c;(注:此为左外连接,结果集中包括连接表的匹配行,也包括左连接表的所有行)2)插入语句(insert)insert into table1(field1,field2) values(value1,value2);3)删除语句(delete)delete from table1 where 范围;4)更新语句(update)update table1 set field1=value1 where 范围;3. 数据控制语言(DCL)1)授予权限语句(GRANT)GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION;其中:privileges可为如下限定符:ALTER 修改表和索引、CREATE (创建数据库和表)、DELETE (删除表中已有的记录)、DROP (删除数据库和表)、INDEX (创建或删除索引)、INSERT(向表中插入新行)、REFERENCE(未用)、SELECT (检索表中的记录)、UPDATE (修改现存表记录)、FILE (读或写服务器上的文件)、PROCESS(查看服务器中执行的线程信息或杀死线程)、RELOAD (重载授权表或清空日志、主机缓存或表缓存)、SHUTDOWN(关闭服务器)、ALL 所有;ALL PRIVILEGES同义词、USAGE (特殊的“无权限”权限)columns:权限运用的列,它是可选的,并且你只能设置列特定的权限。

sql查询语句大全及实例

sql查询语句大全及实例

sql查询语句大全及实例1.提取查询(SELECT)SELECT 语句用于从数据库表中提取数据:实例:从"Persons"表中提取数据:SELECT * FROM Persons3.排序(ORDER BY)ORDER BY 语句用于在查询结果中对取出的数据排序:实例:依据金额(Amount)和日期(OrderDate)字段,对"Orders"表中的记录进行从高到低(desc)排序:SELECT * FROM Orders ORDER BY Amount DESC, OrderDate4.过滤(WHERE)WHERE 子句通常用于在 SELECT、UPDATE 和 DELETE 语句中来过滤选择的数据:5.上下文过滤(HAVING)HAVING 子句仅对聚合函数(AVG,COUNT,SUM 等)出现的结果进行过滤:实例:从"Orders"表中选择超过 5000 的订单:SELECT * FROM OrdersHAVING SUM(Amount) > 50006.插入(INSERT)INSERT 语句用于向数据库插入新记录:实例:向"Persons"表中插入一条新记录:INSERT INTO Persons (firstname, lastname, age, address, city)VALUES ('Glenn', 'Quagmire', 33, 'Coolsville', 'Anchorage');7.更新(UPDATE)UPDATE 语句用于更新数据库中的记录:9.创建数据库(CREATE DATABASE)CREATE DATABASE 语句用于创建新的数据库:实例:创建新的数据库“MyDataBase”:CREATE DATABASE MyDataBase实例:在“MyDataBase”中创建一个新表“Persons”:CREATE TABLE Persons(PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255))。

数据库SQL经典语句

数据库SQL经典语句

数据库SQL经典语句1.创建表:CREATE TABLE 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 语言最常用的语句SQL语言是一种用于管理和操作关系型数据库的标准化语言。

它提供了一系列的命令和语句,用于查询、插入、更新和删除数据。

以下是SQL语言中最常用的十个语句:1. SELECT语句:用于从数据库中查询数据。

可以选择特定的列或所有的列,并可以设置条件来过滤数据。

示例:SELECT * FROM table_name WHERE condition;2. INSERT语句:用于向数据库表中插入新的数据记录。

示例:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);3. UPDATE语句:用于更新数据库表中的数据记录。

可以更新特定的列或所有的列,并可以设置条件来过滤要更新的数据。

示例:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;4. DELETE语句:用于从数据库表中删除数据记录。

可以设置条件来过滤要删除的数据。

示例:DELETE FROM table_name WHERE condition;5. CREATE TABLE语句:用于创建新的数据库表。

示例:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);6. ALTER TABLE语句:用于修改数据库表的结构,例如添加或删除列。

示例:ALTER TABLE table_name ADD column_name datatype;7. DROP TABLE语句:用于删除数据库表。

示例:DROP TABLE table_name;8. JOIN语句:用于在多个表之间建立关联,并基于关联条件查询数据。

示例:SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;9. GROUP BY语句:用于对查询结果进行分组,并对每个组进行聚合操作。

SQL语句汇总

SQL语句汇总

S Q L语句一:基本查询:(1)插入单行数据insert into 表名(列名1,列名2,列名3,……)values(值1,值2,值3……)from 表名(2)将现有表中的数据添加到新表中insert into 新表名(列名1,列名2,列名3,……)select(值1,值2,值3……)from已存在表的表名select 表名1.列名1,表名1.列名2……into 表名//不需先创建表(3)创建标识列select identity(数据类型,标识种子,标识常量)as 列名into 新表form原始表(4)使用union关键字插入多行数据insert 表名(列名1,列名2,列名3,……)select 列名1,列名2,列名3,……unionselect 列名1,列名2,列名3,……(5)更新某行数据upadate 表名set列名1=更新值,列名2=更新值……where 列名1=原始值,列名2=原始值……(6)删除数据行delete from表名where条件注意:不能删除有主键被其他表引用的行!truncate table 表名注意:此语句用来删除表中所有行,但是表的结构、列、约束等不变。

且不能用于有外键约束的表(7)限制查询返回行数及按百分比返回select TOP 行数列名1,……from 表名where条件select TOP PRECENT列名1,……from 表名where条件(8)LIKE查询select *from 表名where列名LIKE'zhang%'(9)between查询select *from 表名where列名between 数值范围(10)In查询select 列名from列名where列名(not)In('字符值1','字符值2',……)order by 列名(11)使用聚合函数查询select 聚合函数(列名)from表名where条件(12)分组查询select 列名1,聚合函数(列名)from表名group by 列名1(13)having筛选select 列名1,列名2,……from表名group by 列名,列名……having count(*)>1(14)使用distinct去除重复信息select distinct 列名from 表名(15)NULL值的判断空值运算符:is(not)NULL注意:不能用<>代替上面的语句(16)组合查询使用AND OR 运算符(17)关于IN和NOT IN查询在条件中添加语句:where 列名IN(not in)('values1'……)(18)IN 与OR 可以互换,已达到同样的效果(19)NOT 运算符NOt 即对查询条件取反注意:NULL 取反仍为NULL(20)NOT与BETWEEN组合使用列名NOT BETWEEN 40 AND 60(21)LIKE 模糊查询“%"通配符:表示任意的字符匹配,且不计字符的多少列名LIKE '计算机%'表示此列是以"计算机"开头后接任意的字符列名LIKE '%计算机'表示此列是以"计算机"结尾前面接任意多的字符列名LIKE '%计算机%'表示此列是含有"计算机"前后接任意多的字符列名LIKE '基础%计算机'表示此列是以"基础"开头,以"计算机"结尾中间可含有任意多的字符"_"通配符:表示任意一个字符的匹配,且知道列名含有的字符个数列名LIKE '计算机__'表示此列含有五个字符"[]"通配符:用于指定一系列字符,只要满足这些字符其中之一,且位置出现在[]通配符的位置的字符串就满足查询条件列名LIKE '[计生]%'表示要查是以"计"字,或是以"生"字开头的列名列名LIKE '[^计生]%'表示要查所有不以"计"字,或是以"生"字开头的列名注意:用NOT和用^能达到同样的效果(22)使用ESCAPE定义转义字符LIKE '%M%'ESCAPE ‘M’注意:上面第二个%号是实际值,不作为通配符二:连接符、数值运算和函数(1)连接符:+,||用于连接表中的两列或者多列数据,使他们作为一列供用户查找操作Select 列名1+列名2,列名4 from 表名注意:相连接的列名的数据类型应当相容,若不相容就要强制转换如下:select 列名1+CAST(列名2 AS 数据类型),列名4 from 表名另注意:若有一列名为NULL则连接后结果也为空(2)数值运算:加、减、乘、除、取余%Select 列名1*列名2,列名4 from 表名注意:相运算的两列必须是数值型,若是数据类型不同但同为数值(比如说:学号有人为char型,有的人为int型)就要强制转换如下:select 列名1+CAST(列名2 AS 数据类型),列名4 from 表名(3)函数:字符处理函数:ASCII(字符表达式),返回字符表达式最左端字符的ASCII码值CHAR(INT 型表达式),将ASCII码转换为字符。

sql基础语句50条

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分。

SQL语句大全(mysql,sqlserver,oracle)

SQL语句大全(mysql,sqlserver,oracle)

SQL语句大全--语句功能--数据操作SELECT --从数据库表中检索数据行和列-selectINSERT --向数据库表添加新数据行-insertDELETE --从数据库表中删除数据行-deleteUPDATE --更新数据库表中的数据-update--数据定义CREATE TABLE --创建一个数据库表-create tableDROP TABLE --从数据库中删除表-drop tableALTER TABLE --修改数据库表结构-alter tableCREATE VIEW --创建一个视图-create viewDROP VIEW --从数据库中删除视图-drop viewCREATE INDEX --为数据库表创建一个索引-create indexDROP INDEX --从数据库中删除索引-drop indexCREATE PROCEDURE --创建一个存储过程-create procedureDROP PROCEDURE --从数据库中删除存储过程-drop procedure CREATE TRIGGER --创建一个触发器-create triggerDROP TRIGGER --从数据库中删除触发器-drop triggerCREATE SCHEMA --向数据库添加一个新模式-create schema DROP SCHEMA --从数据库中删除一个模式-drop schema CREATE DOMAIN --创建一个数据值域-create domainALTER DOMAIN --改变域定义-alter domainDROP DOMAIN --从数据库中删除一个域-drop domain--数据控制GRANT --授予用户访问权限-grantDENY --拒绝用户访问-denyREVOKE --解除用户访问权限-revoke--事务控制COMMIT --结束当前事务-commitROLLBACK --中止当前事务-rollbackSET TRANSACTION --定义当前事务数据访问特征-set transaction --程序化SQLDECLARE --为查询设定游标-declareEXPLAN --为查询描述数据访问计划-explanOPEN --检索查询结果打开一个游标-openFETCH --检索一行查询结果-fetchCLOSE --关闭游标-clocePREPARE --为动态执行准备SQL 语句-repareEXECUTE --动态地执行SQL 语句-executeDESCRIBE --描述准备好的查询-describe---局部变量---必须以@@开头--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 语句waitfor delay ’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 * 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 stock*** = '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 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 =(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 间的随机浮点数----字符串函数----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 newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值sql中的保留字action add aggregate allalter after and asasc avg avg_row_length auto_incrementbetween bigint bit binaryblob bool both bycascade case char characterchange check checksum columncolumns comment constraint createcross current_date current_time current_timestampdata database databases datedatetime day day_hour day_minuteday_second dayofmonth dayofweek dayofyeardec decimal default delayeddelay_key_write delete desc describedistinct distinctrow double dropend else escape escapedenclosed enum explain existsfields file first floatfloat4 float8 flush foreignfrom for full functionglobal grant grants grouphaving heap high_priority hourhour_minute hour_second hosts identifiedignore in index infileinner insert insert_id intinteger interval int1 int2int3 int4 int8 intoif is isam joinkey keys kill last_insert_idleading left length likelines limit load locallock logs long longbloblongtext low_priority max max_rowsmatch mediumblob mediumtext mediumintmiddleint min_rows minute minute_secondmodify month monthname myisamnatural numeric no notnull on optimize optionoptionally or order outeroutfile pack_keys partial passwordprecision primary procedure processprocesslist privileges read realreferences reload regexp renamereplace restrict returns revokerlike row rows secondselect set show shutdownsmallint soname sql_big_tables sql_big_selectssql_low_priority_updates sql_log_off sql_log_update sql_select_limitsql_small_result sql_big_result sql_warnings straight_joinstarting status string tabletables temporary terminated textthen time timestamp tinyblobtinytext tinyint trailing totype use using uniqueunlock unsigned update usagevalues varchar variables varyingvarbinary with write whenwhere 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语法结构
常见的SQL语法结构包括:
1. SELECT语句:用于从数据库中检索数据。

语法结构为:
SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
2. INSERT INTO语句:用于向数据库中插入新的数据。

语法结构为: INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
3. UPDATE语句:用于更新数据库中的数据。

语法结构为:
UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... WHERE 条件;
4. DELETE语句:用于从数据库中删除数据。

语法结构为:
DELETE FROM 表名 WHERE 条件;
5. CREATE TABLE语句:用于创建新的数据库表。

语法结构为:
CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);
6. ALTER TABLE语句:用于修改数据库表的结构。

语法结构为:
ALTER TABLE 表名 ADD COLUMN 列名数据类型;
7. DROP TABLE语句:用于删除数据库表。

语法结构为:
DROP TABLE 表名;
8. JOIN语句:用于将多个表连接起来以检索相关数据。

语法结构为:
SELECT 列名1, 列名2, ... FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;
这些是SQL语言中最常见的语法结构,用于进行数据库的查询、插入、更新和删除操作。

常用SQL语句总结

常用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常用语句大全

sql常用语句大全以下是SQL中常用的语句:1. 查询语句:用于从数据库中检索数据。

- SELECT语句:用于从表中选择数据。

- FROM语句:用于从表中选择数据。

- WHERE语句:用于筛选数据。

- ORDER BY语句:用于排序数据。

- BY语句:用于对查询结果进行分组和排序。

2. 更新语句:用于更新数据库中的数据。

- UPDATE语句:用于在表中更新数据。

- WHERE语句:用于指定更新条件。

- SET语句:用于更新数据。

3. 删除语句:用于在数据库中删除数据。

- DELETE语句:用于从表中删除数据。

- WHERE语句:用于指定删除条件。

4. 创建语句:用于创建数据库、表、索引等。

-CREATE TABLE语句:用于创建一个表。

- AS语句:用于为表命名并提供别名。

- CONSTRAINT语句:用于为表创建约束条件。

5. 插入语句:用于向数据库中插入数据。

-INSERT INTO语句:用于向表中插入数据。

- VALUES语句:用于指定插入的数据。

6. 数据定义语句:用于定义数据库中的数据模型。

- PRIMARY KEY语句:用于为表创建主键。

- FOREIGN KEY语句:用于为表创建外键。

- KEY语句:用于为表创建索引。

7. 查询优化语句:用于优化查询性能。

- ANSI JOIN语句:用于连接两个表。

- NOT NULL语句:用于指定字段是否为非空。

- UNIQUE KEY语句:用于指定字段是否唯一。

8. 视图语句:用于简化复杂的查询。

- 视图定义语句:用于定义视图。

- 视图查询语句:用于查询视图中的数据。

9. 存储过程语句:用于执行复杂的操作并将结果存储回数据库中。

- 存储过程定义语句:用于定义存储过程。

- 存储过程执行语句:用于执行存储过程。

以上是SQL中常用的语句列表,SQL语句的使用可以极大地提高数据库的性能和灵活性。

数据库查询sql语句大全

数据库查询sql语句大全

数据库查询sql语句大全一、常用查询语句1. SELECT:查询语句,用于从表中选取数据。

2. FROM:指定要查询的表名称。

4. ORDER BY:将结果集按照指定的列进行排序。

二、数据过滤语句1. WHERESELECT * FROM 表名 WHERE 列名=值; --- 查找指定值SELECT * FROM 表名 WHERE 列名<>值; --- 不等于指定值SELECT * FROM 表名 WHERE 列名>值; --- 大于指定值SELECT * FROM 表名 WHERE 列名>=值; --- 大于等于指定值SELECT * FROM 表名 WHERE 列名<值; --- 小于指定值SELECT * FROM 表名 WHERE 列名<=值; --- 小于等于指定值SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2; --- 查找指定范围内的值SELECT * FROM 表名 WHERE 列名 LIKE '值%'; --- 查找以指定值开头的值SELECT * FROM 表名 WHERE 列名 LIKE '%值'; --- 查找以指定值结尾的值SELECT * FROM 表名 WHERE 列名 LIKE '%值%'; --- 查找包含指定值的值2. INSELECT * FROM 表名 WHERE 列名 IN (值1,值2,...); --- 查找在指定值列表中的值3. NOT IN4. EXISTS6. LIKE三、运算符1. 加法 +SELECT 列名1 + 列名2 AS 别名 FROM 表名;2. 减法 -3. 乘法 *4. 除法 /5. 取模 %四、数据排序1. ORDER BYSELECT * FROM 表名 ORDER BY 列名 ASC; --- 升序排序SELECT * FROM 表名 ORDER BY 列名 DESC; --- 降序排序2. 多列排序五、数据聚合1. COUNT2. SUM3. AVG4. MAX六、数据分组SELECT 列名1,COUNT(列名2) AS 别名 FROM 表名 GROUP BY 列名1; --- 按照列名1分组,计算列名2的计数七、数据连接1. 内连接SELECT * FROM 表1 INNER JOIN 表2 ON 条件; --- 内连接表1和表2,并按照条件进行匹配八、数据更新和删除1. UPDATE2. DELETEDELETE FROM 表名 WHERE 条件; --- 删除表中满足条件的记录1. CREATE TABLEDROP TABLE 表名; --- 删除表十、数据备份和还原1. 备份mysqldump -u用户名 -p密码数据库名 > 备份文件.sql;2. 还原以上就是数据库查询SQL语句大全中文部分了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1)数据记录筛选:sql="select*from数据表where字段名=字段值orderby字段名[desc]"sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"sql="selecttop10*from数据表where字段名orderby字段名[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=值nwhere条件表达式"(3)删除数据记录:sql="de letefrom数据表where条件表达式"sql="de letefrom数据表"(将数据表所有记录删除)(4)添加数据记录:sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)(5)数据记录统计函数:AVG(字段名)得出一个表格栏平均值COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值MIN(字段名)取得一个表格栏最小的值SUM(字段名)把数据栏的值相加引用以上函数的方法:sql="selectsum(字段名)as别名from数据表where条件表达式"setrs=conn.excute(sql)用rs("别名")获取统的计值,其它函数运用同上。

(6)数据表的建立和删除:CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow())DROPTABLE数据表名称(永久性删除一个数据表)4.记录集对象的方法:rs.movenext将记录指针从当前的位置向下移一行rs.moveprevious将记录指针从当前的位置向上移一行rs.movefirst将记录指针移到数据表第一行rs.movelast将记录指针移到数据表最后一行rs.absoluteposition=N将记录指针移到数据表第N行rs.absolutepage=N将记录指针移到第N页的第一行rs.pagesize=N设置每页为N条记录rs.pagecount根据pagesiz e的设置返回总页数rs.recordcount返回记录总数rs.bof返回记录指针是否超出数据表首端,true表示是,false为否rs.eof返回记录指针是否超出数据表末端,true表示是,false为否rs.delete删除当前记录,但记录指针不会向下移动rs.addnew添加记录到数据表末端rs.update更新数据表记录一查询语句-1查询所有记录从studentSelect*from student-2.查询部s_no,s_name段从student中。

select s_name,s_no from student-3查询并采用别名选择s_name,=(姓名),s_no(学号)从studentselect学号=s_no,姓名=s_name from student或者select s_no as学号,s_name as姓名from student-4查询年龄在23岁以上的所有学生的姓名和年龄并按照年龄倒排序select s_name,s_age from student where s_age>23order by s_age desc-5查询姓张的所有学生select*from student where s_name like'张%'-6查询所有年龄在23-25之间,并且是男学生,还要姓张,只返回前一条记录,并按照年龄和所在系倒排序。

select top1*from student where s_name like'%张%'and s_sex='男'and s_age between23 and25order by s_age desc,s_dept asc-7查询既不是交通工程系,也不是土木的学生的姓名和年龄及所在系。

select s_name,s_age,s_dept from student where s_dept not in('交通工程系','土木')-8查询所有学生中不姓张的学生select*from student where s_name not like'张%'-9从学生表中查询学号的最后一位不在6-9范围内的学生情况select*from student where substring(s_no,8,1)not like'[6-9]'-10查询成绩表中成绩是空的学生的情况select*from sc where c_grade=null-11查询学生总人数select count(*)as总人数from student-12查询选修了课程的学生人数select count(*)as总人数from sc-13计算所有男生的成绩之和select sum(c_grade)from sc sc,student where s_sex='男'and student.s_no=sc.s_no-14查询课程号为c002的学生平均成绩select avg(c_grade)from sc where c_no='c002'-15查询选修了课程的学生select count(distinct s_no)from sc-16查询选修了r001课程的学生最高分和最低分。

select max(c_grade),min(c_grade)from sc where c_no='r001'-17统计每门课程的选课人数,并列出课程号和人数select c_no,count(*)from sc group by c_no-18查询每名学生的选课门数和平均成绩select s_no,count(*),avg(c_grade)from sc group by s_no-19查询修了3门以上课程的学生学号select s_no,count(*)from sc group by s_no having count(*)>=3-20查询修课门数大于等于3的学生平均成绩和选课门数select s_no,avg(c_grade),count(*)from sc group by s_no having count(*)>=3-21查询每个学生的修课情况select*from student,sc where student.s_no=sc.s_no(两个表中的学号字段均列出)-22查询计算机学生的修课情,要求列出学生的名字、所修课程号和成绩select s_name,c_no,c_grade from student a,sc b where s_dept='计算机'and a.s_no=b.s_no-23查询选修了大学语文课程的学生修课成绩,要求列出学生的名字,所修的课程名和成绩elect s_name,c_name,c_grade from student a,sc b,course c where c_name='大学语文'and a.s_no=b.s_no and b.c_no=c.c_no-24将学生的姓名,修课的课程名和成绩存放在永久表s_c_g中select a.s_name,c.c_name,b.c_grade into s_c_g from student a,sc b,course c-25查询修了roo1课程的切成绩成绩高于此课程的平均成绩的学生的学号和成绩select s_no,c_grade from sc where c_no='r001'and c_grade>(select avg(c_grade)from sc where c_no='r001')-26查询与李四在同一个系学习的学生select s_name from student where s_dept=(select s_dept from student where s_name='李四')and s_name<>'李四'-27查询全体学生的姓名和出生年份select s_name,nf=datepart(yyyy,getdate())-s_age from student二更新语句-1将新生记录(20010694、陈东、男、交通工程系、22岁)插入到表student中insert into student(s_no,s_name,s_sex,s_dept,s_age)values('20010694','陈东','男','交通工程系','22')-2在sc表中插入一条新记录,成绩暂缺insert into sc(s_no,c_no,c_grade)values('20010694','j002',null)-3将所有学生功的年龄加一update student set s_age=s_age+1-4删除所有学生的选课记录delete from sc-5删除所有成绩不几个学生的成绩记录Delete from sc where c_grade<60-6删除计算机不几个学生的修课记录delete from sc where c_grade<60and s_no in(select s_no from student where s_dept='计算机')。

相关文档
最新文档