sql语句总结

一、limit

1、limit  n,m

n是从0开始计数,是查询出来队列的起点(从 0 开始)。m是统计的总数目。

备注:limit 是按条数取录的,名次一样的,也算一个记录。如果取第 5-14 的记

录,那就是 limit 4 10

注意:有些资料上写的 limit 3, -1 用-1 代码最大值,这个是不对的,会报错,

解决办法:随便写个非常大的整数

2、limit n

后面如果只写一个整数 n,那就是查询的前 n 条记录;

3、LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或

两个数字参数。参数必须是一个整数常量。

如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指

定返回记录行的最大数目。

二、创建数据库表

CREATE TABLE table_name (column_name column_type);

三、删除数据库表

DROP TABLE table_name ;    比如:drop  table  表名;

删除数据库表数据:delete from 表名 where 删除条件;-------清除所有数据的话,delete from 表名 where id>0;

四、MySQL 删除表的几种情况:

1、drop table table_name : 删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM;

实例,删除学生表:

drop table student;

2、truncate table table_name : 删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM;

实例,删除学生表:

truncate table student;

3、delete from table_name : 删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间;

实例,删除学生表:

delete from student;

4、delete from table_name where xxx : 带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间;

实例,删除学生表中姓名为 "张三" 的数据:

delete from student where T_name = "张三";

5、delete 操作以后,使用 optimize table table_name 会立刻释放磁盘空间,不管是 innodb 还是 myisam;

实例,删除学生表中姓名为 "张三" 的数据:

delete from student where T_name = "张三";

实例,释放学生表的表空间:

optimize table student;

6、delete from 表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。

五、MySQL插入数据

INSERT INTO table_name ( field1, field2,...fieldN )                      VALUES

                      ( value1, value2,...valueN );

六、MySQL查询数据

SELECT column_name,column_name

FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]

查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。

SELECT 命令可以读取一条或者多条记录。

你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据

你可以使用 WHERE 语句来包含任何条件。

你可以使用 LIMIT 属性来设定返回的记录数。

你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

七、MySQL WHERE子句

SELECT field1, field2,...fieldN FROM table_name1, table_name2...[WHERE condition1 [AND [OR]] condition2.....

查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。

你可以在 WHERE 子句中指定任何条件。

你可以使用 AND 或者 OR 指定一个或多个条件。

WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。

八、MySQL Update 更新

UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

你可以同时更新一个或多个字段。

你可以在 WHERE 子句中指定任何条件。

你可以在一个单独表中同时更新数据。

九、MySQL DELETE 语句

DELETE FROM table_name [WHERE Clause]

如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。

你可以在 WHERE 子句中指定任何条件

您可以在单个表中一次性删除记录。

十、MySQL LIKE 子句

SELECT field1, field2,...fieldN

FROM table_name

WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

你可以在 WHERE 子句中指定任何条件。

你可以在 WHERE 子句中使用LIKE子句。

你可以使用LIKE子句代替等号 =。

LIKE 通常与 % 一同使用,类似于一个元字符的搜索。

你可以使用 AND 或者 OR 指定一个或多个条件。

你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

十一、MySQL UNION 操作符

SELECT expression1, expression2, ... expression_n

FROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELECT expression1, expression2, ... expression_n

FROM tables[WHERE conditions];

参数

expression1, expression2, ... expression_n: 要检索的列。

tables: 要检索的数据表。

WHERE conditions: 可选, 检索条件。

DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

ALL: 可选,返回所有结果集,包含重复数据。

SQL UNION 实例

下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):

实例

SELECT country FROM Websites

UNION

SELECT country FROM apps

ORDER BY country;

带有 WHERE 的 SQL UNION ALL

下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值):

实例

SELECT country, name FROM Websites

WHERE country='CN'

UNION ALL

SELECT country, app_name FROM apps

WHERE country='CN'

ORDER BY country;

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

使用形式如下:

SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;

十二、MySQL 排序

语法

以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:

SELECT field1, field2,...fieldN table_name1, table_name2...ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。

你可以设定多个字段来排序。

你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

你可以添加 WHERE...LIKE 子句来设置条件。

十三、MYSQL整理

1、查询前3名:limit 3

2、查询第2~3名:limit 1,2;查询第5~14记录:limit 4,10

3、查询第3到后面所有:limit 3,写个大的整数值

4、排序:order by +字段值,由高到低,降序desc,升序asc

5、分组:group by ,函数:sum、max、min、avg、first、last、count

6、创建数据库表 create table '表名'(

'id' INT NOT NULL AUTO_INCREMENT COMMENT '宝贝ID',

'name' VARCHAR(100) NOT NULL COMMNT '姓名',

'create_date' datetime DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY ('runoob_id'))

ENGINE=InnoDB DEFAULT CHARSET =utf-8 COMMENT='小孩表';

7、删除数据表:DROP TABLE 表名

8、插入数据:insert into 表名(字段1,字段2) values (字段值1,字段值2)

9、查询数据:select *from where 表名

10、更新表数据:update 表名 set 字段=新的字段值 where 查询条件

11、删除数据:delete from 表名 where  查询条件

12、模糊查询:like '%查询字段%'

13、表 + union + 表 order by 字段,展示表中不同的字段值(重复只显示一次)。表 + union all + 表 order by 字段,展示表中所有字段值(包含重复的)

14、

①INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

②LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

③RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

15、在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

16、事务是必须满足4个条件(ACID):

①原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

②一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

③隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

④持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

17、SQL注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 对用户输入的数据进行过滤处理。

18、防止SQL注入,我们需要注意以下几个要点:

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。

2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky

你可能感兴趣的:(sql语句总结)