sql注意事项:

  • SQL 对大小写不敏感:SELECT 与 select 是相同的
  • 某些数据库系统要求在每条 SQL 语句的末端使用分号。

CREATE DATABASE

CREATE DATABASE 语句用于创建数据库。

CREATE DATABASE dbname;

CREATE TABLE

CREATE TABLE 语句用于创建数据库中的表。

表由行和列组成,每个表都必须有个表名。

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

column_name 参数规定表中列的名称。

data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。

size 参数规定表中列的最大长度。

CREATE INDEX

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name)

在表上创建一个唯一的索引。不允许使用重复的值:

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

ALTER TABLE

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

添加列:

ALTER TABLE table_name
ADD column_name datatype

删除列:

ALTER TABLE table_name
DROP COLUMN column_name

修改列:

ALTER TABLE table_name
MODIFY COLUMN column_name datatype

DROP 和 TRUNCATE

通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

删除数据库:

DROP DATABASE database_name

删除索引(mysql):

ALTER TABLE table_name DROP INDEX index_name

删除表:

DROP TABLE table_name

如果我们仅仅需要删除表内的数据,但并不删除表本身,那么我们该如何做呢?

请使用 TRUNCATE TABLE 语句:

TRUNCATE TABLE table_name

TRUNCATE TABLE语句同时能清空主键。

SELECT

SELECT 语句用于从数据库中选取数据。

SELECT column_name,column_name
FROM table_name;

SELECT * FROM table_name;

INSERT INTO

INSERT INTO 语句用于向表中插入新记录。

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

从一个表复制数据,然后把数据插入到一个已存在的表:

Insert into Table2(field1,field2,…) select value1,value2,… from Table1 where condition;

如果两个表的表结构一样,可以省略为:

Insert into Table2 select * from Table1;

UPDATE

UPDATE 语句用于更新表中已存在的记录。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!

按指定条件update:

UPDATE table_name
SET COLUMN = (
CASE
WHEN 条件 THEN 结果
WHEN 条件 THEN 结果
...
ELSE 结果
END
)
WHERE
some_column = some_value;

更新字段部分内容:

UPDATE 表名 SET 字段名 = REPLACE(object, 'search', 'replace');

update info set name = REPLACE(name,'Beijing','BJ') where name like 'Beijing%';

扩展:update `news` set `content`=replace(`content`,' ','');//清除news表中content字段中的空格

DELETE

DELETE 语句用于删除表中的行。

DELETE FROM table_name
WHERE some_column=some_value;

请注意 SQL DELETE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

SELECT DISTINCT

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值。

SELECT DISTINCT column_name,column_name
FROM table_name;

ORDER BY

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

如果要按照指定顺序排序,则使用 ORDER BY FIELD,例:

--id字段按照5,3,7,1排序
ORDER BY FIELD(`id`, 5, 3, 7, 1)

LIMIT

LIMIT 关键字用于规定要返回的记录的数目。

SELECT column_name(s)
FROM table_name
LIMIT number;

LIMIT关键字用于msyql数据库,oracle数据库使用ROWNUM关键字,用法:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

pattern为指定的模式,通常使用通配符来表示:

  • %:替代0个或多个字符
  • _:替代一个字符

IN 和 NOT IN

IN 操作符允许您在 WHERE 子句中规定多个值。

NOT IN 操作符允许您在 WHERE 子句中排除多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

BETWEEN 和 NOT BETWEEN

BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

NOT BETWEEN 操作符选取不介于两个值之间的数据范围内的值

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

JOIN 和 INNER JOIN

JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

INNER JOIN 关键字在表中存在至少一个匹配时返回行。

注释:INNER JOIN 与 JOIN 是相同的。

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

LEFT JOIN

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

两表关联,查询左表独有的数据:

select * from t1 left join t2 on t1.id = t2.id where t2.id is null;

RIGHT JOIN

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

两表关联,查询右表独有的数据:

select * from t1 right join t2 on t1.id = t2.id where t1.id is null;

FULL JOIN

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

oracle里面有full join,但是在mysql中没有full join。我们可以使用union来达到目的。

select * from t1 left join t2 on t1.id = t2.id
union
select * from t1 right join t2 on t1.id = t2.id;

UNION 和 UNION ALL

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

INSERT INTO SELECT

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

我们可以从一个表中复制所有的列插入到另一个已存在的表中:

INSERT INTO table2
SELECT * FROM table1;

或者我们可以只复制希望的列插入到另一个已存在的表中:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

IS NULL 和 IS NOT NULL

IS NULL操作符用于选取某一列的值为NULL的记录:

SELECT * FROM table WHERE column IS NULL

IS NOT NULL操作符用于选取某一列的值不为NULL的记录:

SELECT * FROM table WHERE column IS NOT NULL

参考:

菜鸟教程:sql教程

mysql学习笔记—常用sql语句的更多相关文章

  1. mysql学习笔记—常用sql函数

    SQL 拥有很多可用于计数和计算的内建函数. SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 有用的 Aggregate 函数: AVG() ...

  2. 【初学Java学习笔记】SQL语句调优

    1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...

  3. MYSQL学习笔记——常用语句

    1.检索数据 1.1.检索单个列:SELECT prod_name FROM products; 1.2.检索多个列:SELECT prod_id, prod_name, prod_price FRO ...

  4. MySQL学习笔记:select语句性能优化建议

    关于SQL中select性能优化有以下建议,仅当笔记记录. 1.检查索引:where.join部分字段都该加上索引 2.限制工作数据集的大小:利用where字句过滤 3.只选择需要的字段:减少IO开销 ...

  5. CUBRID学习笔记 18 sql语句的预处理(类似存储过程)

    定义预处理  类似sqlserver的存储过程 语法 PREPARE stmt_name FROM preparable_stmt 说明 PREPARE 关键字 stmt_name 预处理语句的名字 ...

  6. mysql学习之五:sql语句学习3

    好吧,大家认为这样的字体还是比較好看,全部我们就换这样的字体了. INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) ...

  7. mysql学习之四:sql语句学习2

    创建数据库: CREATE DATABASE stefan; 删除数据库: DROP DATABASE stefan; 重命名数据库: 重命名数据库没有直接的办法. 已经不再使用的方法: RENAME ...

  8. CUBRID学习笔记 19 sql语句1

    创建 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 create table tableName (字段名 字段类型 pr ...

  9. mysql用户管理 常用sql语句 mysql数据库备份恢复

     

随机推荐

  1. IIS如何添加m3u8流媒体类型

    m3u8,mime类型填写: application/x-mpegURL. ts ,mime类型填写: video/MP2T

  2. Linux命令常用命令

    查看主机IP ifconfig 切换目录 cd cd /home cd /path cd ../path cd 退到home目录 cd .. 退到上层目录 cd / 退到根目录  ls -l 列出数据 ...

  3. mybatis 使用注解实现多参数传递

    若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数,以前的例子多属于此类.但这种方法却不适用于需要传递多个参数的情况,今天就来介绍如何使用注解传递多个参数 一 ...

  4. Git实战(四)状态转换

    上次的Git实战(三)环境搭建博文.我们大致解说了一下git的环境安装,今天我们解说一下Git的状态转换. 学习版本号控制工具.对工具进行版本号控制之间的状态转换很重要.毕竟Git仅仅是一个工具.假设 ...

  5. GroupCoordinator joingroup源码解析

    转发请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/7463693.html kafka新版consumer所有的group管理工作在服务端都由Group ...

  6. c++ 如何使用第三方的library

    感谢以下参考资料: 关于如何使用第三方的库: http://stackoverflow.com/questions/21942545/how-to-install-third-party-librar ...

  7. UI-7-UIScrollView

    #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate> { UIIm ...

  8. AOF 持久化策略

    Redis为了解决AOF后台重写造成的数据不一致问题,设置了AOF重写缓冲区.即使设置了no-appendfsync-on-rewrite yes也会造成短暂的主进程阻塞.原因就在于子进程完成AOF重 ...

  9. Java NIO(1):迟迟登场的NIO

    Java NIO的出现 Java语言发展至今,优点大家有目共睹:面向对象的语言.简洁有效.高移植性等等.但是同样也存在很多缺点,C语言程序员口中Java太慢了,.net程序员口中Java太开放了,ph ...

  10. 循环杀死Mysql sleep进程脚本

    #!/bin/sh while : do n=`mysqladmin processlist -uadmin -p***|grep -i sleep |wc -l` date=`date +%Y%m% ...