常用经典SQL语句大全完整版教学文案
SQL基础教程范文
SQL基础教程范文SQL(Structured Query Language)是一种专门用于管理关系型数据库的编程语言。
它被广泛应用于各种数据库管理系统中,包括MySQL、Oracle、SQL Server等。
SQL语言简单易懂,适合初学者学习并上手使用。
SQL语言基础SQL语言可以分为四个主要的部分:数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。
1. DQL(Data Query Language):用于查询数据库中的数据。
常用的DQL命令包括SELECT、FROM、WHERE等。
例如,SELECT * FROMtable_name可以获取表中的所有数据。
2. DML(Data Manipulation Language):用于增加、删除、修改数据。
常用的DML命令包括INSERT、UPDATE、DELETE等。
例如,INSERT INTO table_name (column1, column2) VALUES (value1, value2)可以向表中插入数据。
3. DDL(Data Definition Language):用于定义数据库中的各种对象,比如表、视图、索引等。
常用的DDL命令包括CREATE、ALTER、DROP 等。
例如,CREATE TABLE table_name (column1, column2)可以创建一个新的表。
4. DCL(Data Control Language):用于设置数据库的访问权限和安全级别。
常用的DCL命令包括GRANT、REVOKE等。
例如,GRANT SELECT ON table_name TO user_name可以授权用户对一些表进行查询操作。
数据库表的创建与管理在SQL中,数据存储方式是通过表的形式进行的。
表由行和列组成,行表示记录,列表示字段。
下面是一些创建和管理数据库表的基本命令:1. CREATE TABLE:用于创建表。
数据库SQL语句大全,最常用的SQL语句
数据库SQL语句⼤全,最常⽤的SQL语句检索数据检索单个列:SELECT pname FROM product检索多个列:SELECT pname,market_price,is_hot FROM product检索所有列:SELECT * FROM product过滤检索结果中的重复数据:SELECT DISTINCT market_price FROM productDISTINCT关键字:1、返回不同的值,使⽤时放在列名的前⾯2、多查询⼀个及以上列时,除⾮你查询的所有列的数据都不同,否则所有⾏都将被检索出来限制检索结果:SELECT pname FROM product LIMIT 5,5limit5,5指⽰mysql返回从⾏5开始的5⾏记录排序检索数据排序数据SELECT pname FROM product ORDER BY pname按多个列排序数据SELECT pid,market_price,pname FROM product ORDER BY market_price,pname按多个列排序时,排序列之间⽤,隔开,并且按列的顺序来排序数据,先排价格,后排名称指定排序⽅向降序排序(按照价格降序排序)SELECT pid,market_price,pname FROM product ORDER BY market_price DESC升序排序(mysql查询时默认就是升序排序)SELECT pid,market_price,pname FROM product ORDER BY market_price ASC找出价格最贵的商品(使⽤order BY 和limit关键字)SELECT market_price FROM product ORDER BY market_price DESC LIMIT 1过滤数据使⽤WHERE⼦句价格等于19800的商品SELECT pname,market_price FROM product WHERE market_price=19800价格⼩于于19800的商品SELECT pname,market_price FROM product WHERE market_price<19800价格⼤于800的商品SELECT pname,market_price FROM product WHERE market_price>800价格在800到10000之间SELECT pname,market_price FROM product WHERE market_price BETWEEN 800 AND 10000where中的操作符有以下⼏个= 等于<> 不等于!= 不等于< ⼩于<= ⼩于等于> ⼤于>= ⼤于等于BETWEEN 在指定的两个值之间数据过滤组合where语句and操作符(同时符合where后⾯的条件)SELECT pname,market_price FROM product WHERE market_price>1000 AND is_hot=0or操作符(只需要符合where后⾯的⼀个条件的结果都会显⽰出来)SELECT pname,market_price FROM product WHERE market_price>1000 OR is_hot=0IN操作符(⽤来指定条件范围)SELECT pname,market_price FROM product WHERE market_price IN(238,19800,1120) ORDER BY pnameNOT操作符(否定它之后所跟的条件)SELECT pname,market_price FROM product WHERE market_price NOT IN(238,19800,1120) ORDER BY pname⽤通配符进⾏过滤like操作符(通配符模糊搜索)%通配符(找出product表中所有商品名以韩版开头的商品)SELECT pname FROM product WHERE pname LIKE '韩版%'找出product表中商品名称含有“⼥”的商品,不管开头结尾是什么内容SELECT pname FROM product WHERE pname LIKE '%⼥%'下划线_通配符(⽤途和%⼀样,不过_只匹配单个字符)SELECT pname,market_price FROM product WHERE market_price LIKE '_99'正则表达式搜索基本字符串匹配SELECT pname FROM product WHERE pname REGEXP '韩版' ORDER BY pname使⽤正则表达式需要⽤REGEXP关键字,并在REGEXP后⾯跟上正则表达式内容SELECT pname FROM product WHERE pname REGEXP '.版' ORDER BY pname.是正则表达式语⾔中⼀个特殊的字符。
SQL语句大全【经典教程】
/eschool/SQLxin3721/SQL语句教程SQL语句教程(01) SELECT (2)SQL语句教程(02) DISTINCT (2)SQL语句教程(03) WHERE (2)SQL语句教程(04) AND OR (3)SQL语句教程(05) IN (3)SQL语句教程(06) BETWEEN (4)SQL语句教程(07) LIKE (4)SQL语句教程(08) ORDER BY (5)SQL语句教程(09)函数 (5)SQL语句教程(10) COUNT (6)SQL语句教程(11) Group By (6)SQL语句教程(12) HAVING (7)SQL语句教程(13) ALIAS (7)SQL语句教程(14)连接 (8)SQL语句教程(15)外部连接 (9)SQL语句教程(16) Subquery (9)SQL语句教程(17) UNION (10)SQL语句教程(18) UNION ALL (11)SQL语句教程(19) INTERSECT (11)SQL语句教程(20) MINUS (12)SQL语句教程(21) Concatenate (12)SQL语句教程(22) Substring (13)SQL语句教程(23) TRIM (14)SQL语句教程(24) Create Table (14)SQL语句教程(25) Create View (15)SQL语句教程(26) Create Index (16)SQL语句教程(27) Alter Table (16)SQL语句教程(28)主键 (18)SQL语句教程(29)外来键 (18)SQL语句教程(30) Drop Table (19)SQL语句教程(31) Truncate Table (20)SQL语句教程(32) Insert Into (20)SQL语句教程(33) Update (20)SQL语句教程(34) Delete (21)SQL语句教程(01) SELECT是用来做什么的呢?一个最常用的方式是将资料从数据库中的表格内选出。
sql查询语句大全讲解
SQL查询语句大全讲解SQL(Structured Query Language,结构化查询语言)是用于管理关系型数据库的标准语言。
在开发和管理数据库时,我们常常需要使用SQL查询语句来从数据库中检索数据。
本文将为您介绍一些常用的SQL查询语句,以帮助您更好地理解和使用SQL。
1. SELECT语句SELECT语句用于从数据库中检索数据。
它的基本语法如下:SELECT列名1, 列名2, ...FROM表名WHERE条件;其中,*表示选取所有列。
下面是一些常用的SELECT语句示例:•选取所有列:SELECT*FROM表名;•选取指定列:SELECT列名1, 列名2 FROM表名;•带有条件的查询:SELECT列名FROM表名WHERE条件;2. WHERE子句WHERE子句用于过滤SELECT语句中的数据。
它可以使用各种条件来指定查询的数据。
以下是一些常用的WHERE子句示例:•等于(=):SELECT列名FROM表名WHERE列名=值;•不等于(<>):SELECT列名FROM表名WHERE列名<>值;•大于(>):SELECT列名FROM表名WHERE列名>值;•小于(<):SELECT列名FROM表名WHERE列名<值;•大于等于(>=):SELECT列名FROM表名WHERE列名>=值;•小于等于(<=):SELECT列名FROM表名WHERE列名<=值;3. ORDER BY子句ORDER BY子句用于对查询结果进行排序。
可以按升序(ASC)或降序(DESC)来排序。
以下是一些常用的ORDER BY子句示例:•按列升序排序:SELECT列名FROM表名ORDER BY列名ASC;•按列降序排序:SELECT列名FROM表名ORDER BY列名DESC;4. GROUP BY子句GROUP BY子句用于按照指定的列对查询结果进行分组。
常用经典SQL语句大全完整版
常用经典 SQL语句大全完好版 -- 详解 +实例以下语句部分是Mssql 语句,不可以够在access 中使用。
SQL分类:DDL—数据定义语言 (CREATE,ALTER,DROP,DECLARE)DML—数据操控语言 (SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言 (GRANT,REVOKE,COMMIT,ROLLBACK)第一 , 简要介绍基础语句:1、说明:创立数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份 sql server---创立备份数据的 deviceUSE masterEXECsp_addumpdevice ’disk ’,’testBack’,’c:’---开始备份BACKUP DATABASE pubs TO testBack4、说明:创立新表create table tabname(col1 type1 [not null][primary key],col2 type2 [not null],..)依据已有的表创立新表:A:create table tab_new like tab_old (使用旧表建新表) B:create table tab_new as select col1,col2⋯from tab_old definition only5、明:除新表:drop table tabname6、明:增添一个列: Alter table tabname add column col type注:列增添后将不可以除。
DB2中列加上后数据型也不可以改,独一能改的是增添varchar 型的度。
7、明:增添主: Alter table tabname add primary key(col)明:除主: Alter table tabname drop primary key(col)8、明:建索引: create [unique] index idxname on tabname(col ⋯.)除索引: drop index idxname注:索引是不行改正的,想改正必除从头建。
超详细的SQL语句语法
超详细的SQL语句语法比较常用的SQL语句语法(Oracle)一.数据控制语句 (DML) 部分1.INSERT (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT 字段名1, 字段名2, …… FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令 COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令 ROLLBACK 复原.B. 在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义 (DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复 UNIQUE, 关键字 PRIMARY KEY2.ALTER (改变表, 索引, 视图等)改变表的名称ALTER TABLE 表名1 TO 表名2;在表的后面增加一个字段ALTER TABLE表名 ADD 字段名字段名描述;修改表里字段的定义描述ALTER TABLE表名 MODIFY字段名字段名描述;给表里的字段加上约束条件ALTER TABLE 表名 ADD CONSTRAINT 约束名PRIMARY KEY (字段名);ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);把表放在或取出数据库的内存区ALTER TABLE 表名 CACHE;ALTER TABLE 表名 NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名 CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句 (SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2; 两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1 [HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名 = 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’ [‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引 (INDEX)CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, ……] );ALTER INDEX 索引名 REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节ORACLE DOC上说字符串最大可以建索引的长度约是:数据块的大小(db_block_size)*40%2.视图 (VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;ALTER VIEW视图名 COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词 (SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接 (DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理 (DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名 FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2; 以下是MS SQLSQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack','c:\mssql7backup\MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_olddefinition only5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。
常用的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。
SQL语句大全(很全)sql语句用法
SQL语句大全--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare id char(10)--set id = '10010001'select id = '10010001'---全局变量---必须以开头--IF ELSEdeclare x int y int z intselect x = 1 y = 2 z=3if x > yprint 'x > y' --打印字符串'x > y'else if y > zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when 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_name select 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.97936RAND([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_timestamp data database databases datedatetime day day_hour day_minute day_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_limit sql_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查看全文分类: ( 一般分类 ) :: 评论 (0) :: 静态网址 :: 引用 (0)常用SQL命令和ASP编程发表人:kendy517 | 发表时间: 2007年二月09日, 11:57在进行数据库操作时,无非就是添加、删除、修改,这得设计到一些常用的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语句专业知识讲座
De将查询成果保存到数组中。假如查询成 果中不涉及任何统计,则不创建这个数组。
②CURSOR CursorName:将查询成果保存到临时表中。假如指 定了一种已打开表旳名称,则VFP产生错误信息。执行完 SELECT语句后,临时表依然保持打开、活动,但只读。一旦关 闭临时表,则自动删除它。
操作符如下:
操作符
比较关系 举例
=
相等
学生表.班级=”金融”
==
完全相等 学生表.班级= =”金融”
LIKE
不精确匹配 学生表.学号 LIKE “99%”
>
不小于
分数.成绩>60
>=
不小于等于 分数.成绩>=60
<=
不不小于
分数.成绩<=60
<
不不小于等于
分数.成绩<60
3. 使用SELECT-SQL命令
假如指定了本地别名,那么在整个Select语句中都必须用这个别 名替代表名。
INNER JOIN:只有在其他表中包括相应统计(一种或多种)旳 统计才出目前查询成果中。
LEFT [OUTER] JOIN:在查询成果中包括JOIN左侧表中旳全部统 计,以及右侧表中匹配旳统计。这是左联接。
RIGHT [OUTER] JOIN:在查询成果中包括JOIN右侧表中旳全部 统计,以及左侧表中匹配旳统计。这是右联接。
INNER JOIN gxglxt!student;
INNER JOIN gxglxt!grade;
INNER JOIN gxglxt!course ; ON Grade.课程代号 = Course.课程代号 ; ON Student.学号 = Grade.学号 ; ON Classzc.班级代号 = Student.班级代号 ; ON Department.系部代号 = Classzc.系部代号; WHERE Classzc.系部代号 = "04"; .AND. Grade.开课学期 = "第1学期"; ORDER BY Student.学号; INTO CURSOR 视图1
SQL语句大全
SQL语句大全第一篇:SQL语句大全SQL练习一、设有如下的关系模式,试用SQL语句完成以下操作:学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名,学分,学期,学时)选课(学号,课程号,成绩)1.求选修了课程号为“C2”课的学生学号2.求选修了课程号为“C2”课的学生学号和姓名3.求没有选修课程号为“C2”课的学生学号4.求选修了课程号为“C2”,又选修了课程号为“C3”课的学生学号5.求选修了课程号为“C2”或“C3”课的学生学号6.求选修了全部课程的学生学号7.求至少选修了学号为“*****”的学生所学过的所有课程的学生的学号和姓名。
8.查询学生选课表中的全部数据9.查询计算机系学生的姓名、年龄10.查询成绩在70—80分之间的学生的学号、课程号和成绩11.查询计算机系年龄在18—20之间且性别为“男”的学生的姓名和年龄12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
13.查询哪些课程没有人选修,要求列出课程号和课程名。
14.查询数学系成绩在80分以上的学生的学号,姓名15.查询课程号为“C02”的课程的最高分数。
16.查询计算机系学生的最大年龄和最小年龄。
17.统计每个系的学生人数。
18.统计每门课程的选课人数和考试最高分。
19.统计每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果。
20.查询总成绩超过200分的学生,要求列出学号、总成绩。
21.用子查询实现如下查询:(1)查询选修了课程号“C01”的学生的姓名和所在系。
(2)查询数学系成绩在80分以上的学生的学号和姓名。
(3)查询计算机系考试成绩最高的学生的姓名。
22.删除选课成绩小于60分的学生的选课记录。
23.将所有选修了课程“C01”的学生的成绩加10分。
24.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分。
25.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。
sql语句大全(详细)
sql语句大全(详细)sql语句大全(详细)数据库操作1.查看所有数据库show databases;2.查看当前使用的数据库select database();3.创建数据库create databases 数据库名 charset=utf8;4.删除数据库drop database 数据库名5.使用数据句库use database 数据库名6.查看数据库中所有表show tables;表的操作1.查看表结构desc 表名2.创建表结构的语法create table table_name(字段名数据类型可选的约束条件);demo:创建班级和学生表create table classes(id int unsigned auto_increment primary key not null, name varchar(10));create table students(id int unsigned primary key auto_increment not null, name varchar(20) default '',age tinyint unsigned default 0,height decimal(5,2),gender enum('男','女','人妖','保密'),cls_id int unsigned default 0)3.修改表–添加字段alter table 表名 add 列名类型demo:alter table students add birthday datetime;4.修改表–修改字段–重命名版alert table 表名 change 原名新名类型及约束demo:alter table syudents change birthday birth datetime not null;5.修改表–修改字段–不重命名alter table 表名 modify 列名类型及约束demo : alter table students modify birth date nout noll;6.删除表–删除字段alter table 表名 drop 列名demo :later table students drop birthday;7.删除表drop table 表名demo:drop table students;8.查看表的创建语句–详细过程show create table 表名demo : show create tabele students;查询基本使用1.查询所有列select * from 表名例:select * from classes;2.查询指定列select 列1,列2,...from 表名;例:select id,name from classes;增加说明:主键列是自动增长,但是在全列插入时需要占位,通常使用空值(0或者null) ; 字段默认值 default 来占位,插入成功后以实际数据为准1.全列插入:值的顺序与表结构字段的顺序完全一一对应此时字段名列表不用填写insert into 表名 values (...)例:insert into students values(0,’郭靖',1,'蒙古','2016-1-2');2.部分列插入:值的顺序与给出的列顺序对应此时需要根据实际的数据的特点填写对应字段列表insert into 表名 (列1,...) values(值1,...)例:insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');上面的语句一次可以向表中插入一行数据,还可以一次性插入多行数据,这样可以减少与数据库的通信3.全列多行插入insert into 表名 values(...),(...)...;例:insert into classes values(0,'python1'),(0,'python2');4.部分列多行插入insert into 表名(列1,...) values(值1,...),(值1,...)...;例:insert into students(name) values('杨康'),('杨过'),('小龙女');修改update 表名 set 列1=值1,列2=值2... where 条件例:update students set gender=0,hometown='北京' where id=5;删除delete from 表名 where 条件例:delete from students where id=5;逻辑删除,本质就是修改操作update students set isdelete=1 where id=1;as关键字1.使用 as 给字段起别名select id as 序号, name as 名字, gender as 性别 from students;2.可以通过 as 给表起别名select s.id,,s.gender from students as s;条件语句查询where后面支持多种运算符,进行条件的处理比较运算符逻辑运算符模糊查询范围查询空判断比较运算符等于: =大于: >大于等于: >=小于等于: <=不等于: != 或 <>例1:查询编号大于3的学生select * from students where id > 3;例2:查询编号不大于4的学生select * from students where id <= 4;例3:查询姓名不是“黄蓉”的学生select * from students where name != '黄蓉';例4:查询没被删除的学生select * from students where is_delete=0;逻辑运算符andornot例5:查询编号大于3的女同学select * from students where id > 3 and gender=0;例6:查询编号小于4或没被删除的学生select * from students where id < 4 or is_delete=0;模糊查询like%表示任意多个任意字符_表示一个任意字符例7:查询姓黄的学生select * from students where name like '黄%';例8:查询姓黄并且“名”是一个字的学生select * from students where name like '黄_';例9:查询姓黄或叫靖的学生select * from students where name like '黄%' or name like '%靖';范围查询分为连续范围查询和非连续范围查询in表示在一个非连续的范围内例10:查询编号是1或3或8的学生select * from students where id in(1,3,8);between … and …表示在一个连续的范围内例11:查询编号为3至8的学生select * from students where id between 3 and 8;例12:查询编号是3至8的男生select * from students where (id between 3 and 8) and gender=1;空判断判断为空例13:查询没有填写身高的学生select * from students where height is null;注意: 1. null与’'是不同的 2. is null判非空is not null例14:查询填写了身高的学生select * from students where height is not null;例15:查询填写了身高的男生select * from students where height is not null and gender=1;优先级优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符and比or先运算,如果同时出现并希望先算or,需要结合()使用排序排序查询语法:select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]语法说明:将行数据按照列1进行排序,如果某些行列1 的值相同时,则按照列2 排序,以此类推asc从小到大排列,即升序desc从大到小排序,即降序默认按照列值从小到大排列(即asc关键字)例1:查询未删除男生信息,按学号降序select * from students where gender=1 and is_delete=0 order by id desc;例2:查询未删除学生信息,按名称升序select * from students where is_delete=0 order by name;例3:显示所有的学生信息,先按照年龄从大–>小排序,当年龄相同时按照身高从高–>矮排序select * from students order by age desc,height desc;分页select * from 表名 limit start=0,count说明从start开始,获取count条数据start默认值为0也就是当用户需要获取数据的前n条的时候可以直接写上xxx limit n;例1:查询前3行男生信息select * from students where gender=1 limit 0,3;关于分页的一个有趣的推导公式已知:每页显示m条数据,当前显示第n页求总页数:此段逻辑后面会在python项目中实现查询总条数p1使用p1除以m得到p2如果整除则p2为总数页如果不整除则p2+1为总页数获取第n页的数据的SQL语句求解思路第n页前有n-1页所在第n页前已经显示的数据的总量是(n-1)*m由于数据的下标从0开始所以第n页前所有的网页的下标是0,1,…,(n-1)*m-1所以第n页的数据起始下标是(n-1)*m获取第n页数据的SQL语句select * from students where is_delete=0 limit (n-1)*m,m注意:在sql语句中limit后不可以直接加公式聚合函数总数count(*) 表示计算总行数,括号中写星与列名,结果是相同的例1:查询学生总数select count(*) from students;最大值max(列) 表示求此列的最大值例2:查询女生的编号最大值select max(id) from students where gender=2;最小值min(列) 表示求此列的最小值例3:查询未删除的学生最小编号select min(id) from students where is_delete=0;求和sum(列) 表示求此列的和例4:查询男生的总年龄select sum(age) from students where gender=1;–平均年龄select sum(age)/count(*) from students where gender=1;平均值avg(列) 表示求此列的平均值例5:查询未删除女生的编号平均值select avg(id) from students where is_delete=0 andgender=2;分组group bygroup by + group_concat()group_concat(字段名)根据分组结果,使用group_concat()来放置每一个分组中某字段的集合group by + 聚合函数通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个值的集合做一些操作group by + havinghaving 条件表达式:用来过滤分组结果having作用和where类似,但having只能用于group by 而where是用来过滤表数据group by + with rollupwith rollup的作用是:在最后新增一行,来记录当前表中该字段对应的操作结果,一般是汇总结果。
50个sql语句及讲解
50个SQL语句及讲解1. SE LECT语句S E LE CT语句用于从数据库中选择数据。
S E LE CT*F RO M表名;该语句将返回表中的所有数据。
2. WH ERE语句W H ER E语句用于筛选满足指定条件的数据。
S E LE CT*F RO M表名W H ER E条件;可以使用比较运算符(如=、<、>)、逻辑运算符(如AN D、O R)以及通配符(如%、_)进行条件筛选。
3. OR DER BY语句O R DE RB Y语句用于对结果进行排序。
S E LE CT*F RO M表名O R DE RB Y列名A SC/D E SC;A S C表示升序排列,D E SC表示降序排列。
4. IN SERT INT O语句I N SE RT IN TO语句用于向数据库中插入新的数据。
I N SE RT IN TO表名(列1,列2,列3)V ALU E S(值1,值2,值3);将指定的数据插入到指定的列中。
5. UP DATE语句U P DA TE语句用于更新数据库中的数据。
U P DA TE表名SE T列名=新值WH ER E条件;更新满足条件的数据的指定列的值。
6. DE LETE语句D E LE TE语句用于从数据库中删除数据。
D E LE TE FR OM表名WH E RE条件;删除满足条件的数据。
7. LI KE语句L I KE语句用于在W HE R E语句中进行模糊匹配。
S E LE CT*F RO M表名W H ER E列名L IK E'ab c%';以匹配指定模式的数据。
8. DI STINCT语句D I ST IN CT语句用于返回唯一不重复的数据。
S E LE CT DI ST IN CT列名F RO M表名;返回指定列中的不重复数据。
9. GR OUP BY语句G R OU PB Y语句用于按照指定列对数据进行分组。
S E LE CT列1,C OU NT(列2)FR OM表名GRO U PB Y列1;按列1的值分组,并计算每组中列2的数量。
经典SQL语句,语法大全
SQL语法,经典语句参考手册资料定义DDL(Data Definition Language)资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:Create TABLE table_name(column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],column2 DATATYPE [NOT NULL],...)说明:DATATYPE --是资料的格式,详见表。
NUT NULL --可不可以允许资料有空的(尚未有资料填入)。
PRIMARY KEY --是本表的主键。
2、更改表格Alter TABLE table_nameADD COLUMN column_name DATATYPE说明:增加一个栏位(没有删除某个栏位的语法。
Alter TABLE table_nameADD PRIMARY KEY (column_name)说明:更改表得的定义把某个栏位设为主键。
Alter TABLE table_nameDrop PRIMARY KEY (column_name)说明:把主键的定义删除。
3、建立索引Create INDEX index_name ON table_name (column_name)说明:对某个表格的栏位建立索引以增加查询时的速度。
4、删除Drop table_nameDrop index_name二、资料形态 DATATYPEssmallint16 位元的整数。
interger32 位元的整数。
decimal(p,s)p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。
如果没有特别指定,则系统会设为 p=5; s=0 。
数据库基本SQL语句大全
数据库基本_SQL语句大全学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下...其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作....一、基础1、说明:创建数据库Create DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\‘--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabnamecol1 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 only 5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除;DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度;7、说明:添加主键:Alter table tabname add primary keycol说明:删除主键:Alter table tabname drop primary keycol8、说明:创建索引:create unique index idxname on tabnamecol….删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建;9、说明:创建视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的基本的sql语句选择:select from table1 where 范围插入:insert into table1field1,field2 valuesvalue1,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 sumfield1 as sumvalue from table1平均:select avgfield1 as avgvalue from table1最大:select maxfield1 as maxvalue from table1最小:select minfield1 as minvalue from table111、说明:几个高级查询运算词A:UNION 运算符UNION 运算符通过组合其他两个结果表例如TABLE1 和TABLE2并消去表中任何重复行而派生出一个结果表;当ALL 随UNION 一起使用时即UNION ALL,不消除重复行;两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2;B:EXCEPT 运算符EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表;当ALL 随EXCEPT 一起使用时EXCEPT ALL,不消除重复行;C:INTERSECT 运算符INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表;当ALL 随INTERSECT 一起使用时INTERSECT ALL,不消除重复行;注:使用运算词的几个查询结果行必须是一致的;12、说明:使用外连接A、left outer join:左外连接左连接:结果集几包括连接表的匹配行,也包括左连接表的所有行;SQL: select , , , , , from a LEFT OUT JOIN b ON =B:right outer join:右外连接右连接:结果集既包括连接表的匹配连接行,也包括右连接表的所有行;C:full outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录;二、提升1、说明:复制表只复制结构,源表名:a 新表名:b Access可用法一:select into b from a where 1<>1法二:select top 0 into b from a2、说明:拷贝表拷贝数据,源表名:a 目标表名:b Access可用insert into ba, b, c select d,e,f from b;3、说明:跨数据库之间表的拷贝具体数据使用绝对路径Access可用insert into ba, b, c select d,e,f from b in ‘具体数据库’ where 条件例子:..from b in ‘"&"."&"\" &"‘ where..4、说明:子查询表名1:a 表名2:bselect a,b,c from a where a IN select d from b 或者: select a,b,c from a where a IN 1,2,35、说明:显示文章、提交人和最后回复时间select ,, from table a,select maxadddate adddate from table where = b6、说明:外连接查询表名1:a 表名2:bselect , , , , , from a LEFT OUT JOIN b ON =7、说明:在线视图查询表名1:aselect from Select a,b,c FROM a T where > 1;8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括select from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值1 and 数值29、说明:in 的使用方法select from table1 where a not in ‘值1’,’值2’,’值4’,’值6’10、说明:两张关联表,删除主表中已经在副表中没有的信息delete from table1 where not exists select from table2 where =11、说明:四表联查问题:select from a left inner join b on = right inner join c on = inner join d on = where .....12、说明:日程安排提前五分钟提醒SQL: select from 日程安排where datediff‘minute‘,f开始时间,getdate>513、说明:一条sql 语句搞定数据库分页select top 10 b. from select top 20 主键字段,排序字段from 表名order by 排序字段desc a,表名b where b.主键字段= a.主键字段order by a.排序字段14、说明:前10条记录select top 10 form table1 where 范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.select a,b,c from tablename ta where a=select maxa from tablename tb where =16、说明:包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重复行而派生出一个结果表select a from tableA except select a from tableB except select a from tableC 17、说明:随机取出10条数据select top 10 from tablename order by newid18、说明:随机选择记录select newid19、说明:删除重复记录Delete from tablename where id not in select maxid from tablename group by col1,col2,...20、说明:列出数据库里所有的表名select name from sysobjects where type=‘U‘21、说明:列出表里的所有的sele ct name from syscolumns where id=object_id‘TableName‘22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case;select type,sumcase vender when ‘A‘ then pcs else 0 end,sumcase vender when ‘C‘ then pcs else 0 end,sumcase vender when ‘B‘ then pcs else 0 end FROM tablename group by type显示结果:type vender pcs电脑A 1电脑A 1光盘B 2光盘A 2手机B 3手机C 323、说明:初始化表table1TRUNCATE TABLE table124、说明:选择从10到15的记录select top 5 from select top 15 from table order by id asc table_别名order by id desc三、技巧1、1=1,1=2的使用,在SQL语句组合时用的较多“where 1=1” 是表示选择全部“where 1=2”全部不选,如:if strWhere =‘beginset strSQL = ‘select count as Total from ‘ + tblName + ‘ where ‘ + strWhere endelsebeginset strSQL = ‘select count as Total from ‘ + tblName + ‘‘end我们可以直接写成set strSQ L = ‘select count as Total from ‘ + tblName + ‘ where 1=1 安定‘+ strWhere2、收缩数据库--重建索引DBCC REINDEXDBCC INDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE3、压缩数据库dbcc shrinkdatabasedbname4、转移数据库给新用户以已存在用户权限exec sp_change_users_login ‘update_one‘,‘newname‘,‘oldname‘go5、检查备份集RESTORE VERIFYONLY from disk=‘E:\‘6、修复数据库Alter DATABASE dvbbs SET SINGLE_USERGODBCC CHECKDB‘dvbbs‘,repair_allow_data_loss WITH TABLOCKGOAlter DATABASE dvbbs SET MULTI_USERGO7、日志清除SET NOCOUNT ONDECLARE LogicalFileName sysname,MaxMinutes INT,NewSize INTUSE tablename -- 要操作的数据库名Select LogicalFileName = ‘tablename_log‘, -- 日志文件名MaxMinutes = 10, -- Limit on time allowed to wrap log.NewSize = 1 -- 你想设定的日志文件的大小M-- Setup / initializeDECLARE OriginalSize intSelect OriginalSize = sizeFROM sysfilesWhere name = LogicalFileNameSelect ‘Original Size of ‘ + db_name + ‘ LOG is ‘ + CONVERTVARCHAR30,OriginalSize + ‘ 8K pages or ‘ + CONVERTVARCHAR30,OriginalSize8/1024 + ‘MB‘FROM sysfilesWhere name = LogicalFileNameCreate TABLE DummyTransDummyColumn char 8000 not nullDECLARE Counter INT,StartTime DATETIME,TruncLog VARCHAR255Select StartTime = GETDATE,TruncLog = ‘BACKUP LOG ‘ + db_name + ‘ WITH TRUNCATE_ONLY‘DBCC SHRINKFILE LogicalFileName, NewSizeEXEC TruncLog-- Wrap the log if necessary.WHILE MaxMinutes > DATEDIFF mi, StartTime, GETDATE -- time has not expiredAND OriginalSize = Select size FROM sysfiles Where name = LogicalFileNameAND 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 TruncLogENDSelect ‘Final Size of ‘ + db_name + ‘ LOG is ‘ + CONVERTVARCHAR30,size + ‘ 8K pages or ‘ + CONVERTVARCHAR30,size8/1024 + ‘MB‘FROM sysfilesWhere name = LogicalFileNameDrop TABLE DummyTransSET NOCOUNT OFF8、说明:更改某个表exec sp_changeobjectowner ‘tablename‘,‘dbo‘9、存储更改全部表Create PROCEDUREOldOwner as NVARCHAR128,NewOwner as NVARCHAR128ASDECLARE Name as NVARCHAR128DECLARE Owner as NVARCHAR128DECLARE OwnerName as NVARCHAR128 DECLARE curObject CURSOR FORselect ‘Name‘ = name,‘Owner‘ = user_nameuidfrom sysobjectswhere user_nameuid=OldOwnerorder by nameOPEN curObjectFETCH NEXT FROM curObject INTO Name, Owner WHILEFETCH_STATUS=0BEGINif Owner=OldOwnerbeginset OwnerName = OldOwner + ‘.‘ + rtrimNameexec sp_changeobjectowner OwnerName, NewOwnerend-- select name,NewOwner,OldOwnerFETCH NEXT FROM curObject INTO Name, Owner ENDclose curObjectdeallocate curObjectGO10、SQL SERVER中直接循环写入数据declare i intset i=1while i<30begininsert into test userid valuesiset i=i+1end。
SQL数据库编程学习应用语句大全
SQL数据库编程学习应用语句大全第一篇:SQL数据库编程学习应用语句大全SQL数据库编程学习应用语句大全1as 的用处as可以对表和列取别名在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1,而且程序中又含有大量对field1的处理,此时就可以使用as例如原来的select field1 from tableA,改为selectfield2 asfield1 from tableA 代码基本就可以不动了。
2自增长的字段的插入开发中经常遇到某个字段类型为IDENTITY,也就是自增长类型,但由于特殊需要,又要插入数据需要临时去掉,可以使用如下语句set IDENTITY_INSERTtablename on,在处理完成后在使用如下语句恢复 set IDENTITY_INSERTtablenameoff3分组取每组的前N个数据开发中还会遇到需要对某一组数据先分组,然后取每组的前n条记录的情况不妨试试如下代码[sql] view plaincopy/*按CurrentNodeLevel列分组,每组按NodeID排序,取出每个组中的前3个元素*/declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定义临时表insert into @tempselectNodeID,CurrentNodeLevel,ROW_NUMBER()OVER(partitionby CurrentNodeLevelorder by NodeID)as rowNumberfrom SchoolTerminalStruct---给临时表中插入数据select * from @temp where rowNumber<=3--从临时表中取数据4生成随机数主意此方法只能写成存储过程,不能写成函数[sql] view plaincopy-----返回Max,Min之间的随机数不能写成函数createproc [dbo].[getRAND](@Max int,--最大值@Min int--,--最小值)ASBEGINDECLARE @result intSELECT @result=RAND()*(@Max-@Min)+@Minselect@resultEND5把满足一定条件的数据用逗号分隔这可能也是一个很常用的语句了,经常出现在一对多的关系中对外展示,要求把子表中的数据取出来用逗号或者其他符号分隔开[sql] view plaincopy/*把满足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗号分隔开合并为一个字段输出*/select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2wheret2.NodeID=t1.NodeIDfor xml path('')), 1 , 1 , '')as textfromtableA6在数据库中处理异常通过个参数附加output标志来输出参数,通过TRY,CATCH捕捉异常[sql] view plaincopyCREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]@nodenameint,@Result int output---2,操作失败;0操作成功ASBEGINbeginBEGIN TRYUPDATE FunctionTree SET NodeName=@nodenameset @Result=0--操作成功END TRYBEGIN CATCHset @Result=-2--操作失败END CATCHendEND7查询中的条件判断经常遇到在某些条件下应该查询这个字段,在另外一些条件下需要其他字段的情况,可以通过unoin来完成,但也可以通过CASE WHEN 完成[sql] view plaincopy/*在State=0 时返回field1 ,在State=1时返回 field2 ,其他时返回field3*/SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2ELSE field3 END)as StateFROM tablename8单引号的处理在包含单引号时应该使用两个单引号转义[sql] view plaincopydbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end) fromtablename '9使用游标[sql] view plaincopydeclare @temp table(TaskIDint ,NodeIdint)--声明临时表insert into @temp select A.T askID ,A.NodeIdfrom tableAA,tableB BwhereA.TaskID=B.T askID--//--给声明的临时表中插入记录DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--声明游标FOR select TaskID,NodeId from @temp;--游标需要用到的列open tnames_cursor--打开游标DECLARE @TaskIDint,@NodeIdint;--声明变量FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移动游标给变量赋值,应该与游标需要用到的列一一对应,顺序类型应该一致WHILE(@@FETCH_STATUS = 0)--循环BEGINBEGINexec TaskType @TaskID,@NodeId--调用存储过程ENDFETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移动游标给变量赋值应该与游标需要用到的列一一对应,顺序类型应该一致CLOSE tnames_cursor--关闭游标DEALLOCATE tnames_cursor--释放游标10合并更新和插入在开发中大部分情况下,插入和更新传递的参数基本上是一样,那为什么不合并呢[sql] view plaincopycreateproc [dbo].[Save_TableName](@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入大于0更新)asbeginif(@insertOrUpdate<0)beginINSERT INTOTableName(field1,field2,ID)values(@field1,@field2,@ID);endelsebeginUPDATE TableNameSET field1= @field1, field2 = @field2where ID =@ID;endend11定义函数在没有满足要求的情况时,可以定义函数,但是使用自己定义的函数时需要加上架构名称[sql] view plaincopycreate FUNCTION [dbo].[CheckTime](@startTimedatetime,@endTimedatetime--,)RETURNSintBEGINDECLARE @result intSET@result=DATEDIFF(hour, @startTime, @endTime)--if(@result=0)--小时相同比较分钟beginSET@result=DATEDIFF(minute, @startTime, @endTime)if(@result=0)--分钟相同比较秒beginSET@result=DATEDIFF(second, @startTime, @endTime)endendRETURN @resultEND调用此函数[sql] view plaincopydbo.CheckTime(@startTime1, @startTime2)--需要加上架构名称12递归读取数据在实际的应用中经常遇到树结构的表,但读取会比较麻烦,这里提够一个函数[sql] view plaincopy/*函数返回表,返回给定节点的所有子孙节点,而不仅仅是子节点*/Create Function [dbo].[GetChildren](@NodeIDInt)Returns @Tree T able(NodeIDInt, NodeNameVarchar(50), ParentIDInt)AsBeginInsert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeIDWhile @@Rowcount> 0*************************,A.NodeName,A.ParentIDFrom Treetable AInner Join @Tree BOn A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)ReturnEnd13通过默认值实现存储过程重载存储过程可以使用默认值,估计都知道,但以此就可以实现类似函数重载的效果例如,如下的存储过程由于使用了默认值,就可以不传递参数,传递一个参数,两个,三个,[sql] view plaincopyCREATE PROCEDURE dbo.my_proc@firstint = NULL,--NULL default value@secondint = 2,--Default value of 2@thirdint = 3--Default value of 3AS SELECT @first, @second, @third;14在数据库中拼字符串,也可以用参数在实际的开发中,某些情况下在数据库中拼字符串不可避免,但又担心有特殊字符,导致拼出来的SQL有问题,其实数据库中拼字符串也可以使用参数,这就要用到dbo.sp_executesql,这样就可以避免SQL注入和特殊字符导致的错误如[sql] view plaincopyDECLARE @IntVariable INT;--定义变量DECLARE @SQLString NVARCHAR(500);--存储拼出来的SQL DECLARE @ParmDefinition NVARCHAR(500);---存储拼出来的SQL中的参数/* Build the SQL string one time.*/SET @SQLString =N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/SET @ParmDefinition = N'@SalesIDint';--赋值/* Execute the string with the first parameter value.*/SET @IntVariable = 275;--赋值EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;/* Execute the same string with the second parameter value.*/SET @IntVariable = 276;EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;16触发器需要注意的问题在使用触发器时有一个问题,或许很少有人注意到,一条更新语句一次更新了十条记录,会触发几次触发器?只有一次!很奇怪,但却是事实,所以这需要注意,一不小心就会把好多数据漏了第二篇:数据库SQL语句十题作业十题1.查询所有学生的基本信息,并按学号降序排列SELECT * FROM STUDENTORDER BY sno DESC;2.查询系别代码为“02”的女同学信息SELECT * FROM STUDENTWHERE ssex=’女’ and sdept=‘02’;3.查询学生的总人数SELECT COUNT(*)AS 学生总人数FROM STUDENT;4.所有选修课学生的姓名,课程名及成绩SELECT sname,cname,gradeFROM STUDENT,COURSE,SCWHERE STUDENT.sno=SC.sno and o=o;5.不及格学生姓名(合并重复项)SELECT distinct snameFROM SC,STUDENTWHERE grade<=60 and STUDENT.sno=SC.sno;6.查询学号为“******”的学生的哪些课程的成绩比他数据库的成绩要高 SELECT cnoFROM COURSEWHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SCWHERE cname=’数据库’ and sno=‘011110’ ando=o);7.查询选修课在3门以上(包括3门)的学生学号及选课门数SELECT sno,COUNT(*)AS 选修门数FROM SCGROUP BY sno HAVING COUNT(*)>=3;8.查询学号为“******”的学生的平均成绩,并以平均成绩命名SELECT AVG(grade)AS average gradeFROM SCWHERE sno=’011110’;9.查询计算机系或英语系的所有学生的个人信息SELECT*FROM STUDENTWHERE sdeptIN(SELECT sdept FROM DEPTWHERE sdname=’计算机系’OR sdname=’英语系’);10.查询与“罗宇波”同一个系的学生情况SELECT * FROM STUDENTWHERE sdept=(SELECT sdept FROM STUDENTWHERE sname=’罗宇波’);第三篇:VB数据库SQL语句学习1.Select * from student查询所有原始记录2.Select StudentID, StudentName from student 只查询学号和姓名3.Select StudentID as 学号, StudentName as 姓名, Sex as 性别,Class as 班级,NormalScore as 平时成绩,ExperimentScore as 实验成绩, ExaminationScore as 考试成绩 from student4.Select * from student where sex=’男’只需要查看男生的成绩5.Select * from student where NormalScore>80只需要查看平时成绩大于80分的记录6.Select * from student where studentname like ‘陈%’查询姓陈的同学的记录7.Select * from student order by examinationScore根据考试成绩排序8.Select * from student order by examinationScore排序---降序9.Select Sum(examinationScore)as 总成绩 from student求总成绩10.Select Avg(examinationScore)as 平均成绩 from student求平均成绩11.Select count(*)as 总记录数 from student求总记录数12.Select Max(ExaminationScore)as 最高分 from student求最高分13.Select Min(ExaminationScore)as 最高低分 from student求最低分14.Select Class as 班级, Avg(ExaminationScore)as 平均成绩from student group by class各班级成绩的分类汇总Public Class frmMainPrivate ObjCnn As New OleDbConnectionPrivate ObjCmd As OleDbCommandPrivate StrDir As String = “D:MIS1025StudentMgr.accdb”Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs)Handles MyBase.LoadObjCnn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & StrDir ObjCnn.Open()ObjCmd = New OleDbCommandObjCmd.Connection = ObjCnnEnd SubPrivate Sub FindRecord(ByVal StrSQL As String)mandText = StrSQLDim rd As OleDbDataReader = ObjCmd.ExecuteReaderDim tbl As New DataTabletbl.Load(rd)DataGridView1.DataSource = tblEnd SubPrivate Sub CmdFind_Click(ByVal sender As System.Object,System.EventArgs)Handles CmdFind.Click FindRecord(txtSQL.Text)End Sub ByVal e As第四篇: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语句
1. 从商品表中查询价格最高的商品信息。
2. 检索出订单表中所有已完成的订单。
3. 查找客户表中名字含有“张”的客户信息。
4. 统计订单表中不同商品销售量的总和。
5. 查询出库存表中数量小于5的商品信息。
6. 查找客户表中地址为“北京市”的客户信息。
7. 统计订单表中每个客户的订单总数。
8. 查询商品表中所有价格在100-200元之间的商品信息。
9. 从订单表中随机抽取10条订单记录。
10. 查找商品表中生产日期在2019年之前的商品信息。
11. 统计每个客户的订单总金额。
12. 查询订单表中所有商品数量少于2的订单信息。
13. 统计出每个商品的总销售额。
14. 查找客户表中注册时间在2019年之前的客户信息。
15. 查询出订单表中订单日期在2021年的订单信息。
16. 统计每种商品的总销售量,并按销售量降序排序。
17. 查询商品表中所有品牌为“华为”的商品信息。
18. 查找客户表中下单次数最多的客户信息。
19. 统计出每个客户的订单平均金额。
20. 查询出订单表中所有订单金额大于等于5000元的订单信息。
21. 统计每种商品不同产地的销售量总和。
22. 查询商品表中所有分类为“手机”的商品信息。
23. 查找客户表中订单总金额最高的客户信息。
24. 统计每个商品的平均销售额。
25. 查询出订单表中订单日期在2021年6月的订单信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用经典S Q L语句大全完整版常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的 deviceUSE masterEXECsp_addumpdevice ’disk’, ’testBack’, ’c:\mssql7backup\MyNwind_1.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)并消去表中任何重复行而派生出一个结果表。
当 ALL 随UNION 一起使用时(即 UNION ALL),不消除重复行。
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符EXCEPT 运算符通过包括所有在 TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。
当 ALL 随EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。
当 ALL 随INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接A、left outer join:左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.cB:right outer join:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1<>1法二:select top 0 * into b from a2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)insert into b(a, b, c) select d,e,f from b;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件例子:..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)5、说明:显示文章、提交人和最后回复时间select a.title,ername,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b6、说明:外连接查询(表名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.c7、说明:在线视图查询(表名1:a )select * from (SELECT a,b,c FROM a) T where t.a > 1;8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值1 and 数值29、说明:in 的使用方法select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)10、说明:两张关联表,删除主表中已经在副表中没有的信息delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )11、说明:四表联查问题:select * from a left inner join b on a.a=b.b right inner join c ona.a=c.c inner join d on a.a=d.d where .....12、说明:日程安排提前五分钟提醒SQL: select * from 日程安排where datediff(’minute’,f开始时间,getdate())>513、说明:一条sql 语句搞定数据库分页select top 10 b.* from (select top 20 主键字段,排序字段 from 表名order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段14、说明:前10条记录select top 10 * form table1 where 范围15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表(select a from tableA ) except (select a from tableB) except (select a from tableC)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,...)20、说明:列出数据库里所有的表名select name from sysobjects where type=’U’21、说明:列出表里的所有的select name from syscolumns where id=object_id(’TableName’)22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。