mysql学习笔记—常用sql语句
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
参考:
mysql学习笔记—常用sql语句的更多相关文章
- mysql学习笔记—常用sql函数
SQL 拥有很多可用于计数和计算的内建函数. SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 有用的 Aggregate 函数: AVG() ...
- 【初学Java学习笔记】SQL语句调优
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...
- MYSQL学习笔记——常用语句
1.检索数据 1.1.检索单个列:SELECT prod_name FROM products; 1.2.检索多个列:SELECT prod_id, prod_name, prod_price FRO ...
- MySQL学习笔记:select语句性能优化建议
关于SQL中select性能优化有以下建议,仅当笔记记录. 1.检查索引:where.join部分字段都该加上索引 2.限制工作数据集的大小:利用where字句过滤 3.只选择需要的字段:减少IO开销 ...
- CUBRID学习笔记 18 sql语句的预处理(类似存储过程)
定义预处理 类似sqlserver的存储过程 语法 PREPARE stmt_name FROM preparable_stmt 说明 PREPARE 关键字 stmt_name 预处理语句的名字 ...
- mysql学习之五:sql语句学习3
好吧,大家认为这样的字体还是比較好看,全部我们就换这样的字体了. INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) ...
- mysql学习之四:sql语句学习2
创建数据库: CREATE DATABASE stefan; 删除数据库: DROP DATABASE stefan; 重命名数据库: 重命名数据库没有直接的办法. 已经不再使用的方法: RENAME ...
- CUBRID学习笔记 19 sql语句1
创建 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 create table tableName (字段名 字段类型 pr ...
- mysql用户管理 常用sql语句 mysql数据库备份恢复
随机推荐
- php会话全揭秘
一:php中sesion的配置 二: php手册中的函数 1:bool session_start ( void ) 启动新会话或者重用现有会话 当会话自动开始或者通过 session_start( ...
- Java实现XSS防御
XSS概述 跨站脚本攻击(Cross Site Scripting),缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行, ...
- [JavaSecurity] - AES Encryption
1. AES Algorithm The Advanced Encryption Standard (AES), also as known as Rijndael (its original nam ...
- 【转载】IE下利用滤镜实现背景颜色渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 美团HD(9)-监听点击城市
DJSelectCityViewController.h // 点击城市发出通知 - (void)tableView:(UITableView *)tableView didSelectRowAtIn ...
- JAVA 双重检查锁定和延迟初始化
双重检查锁定的由来在Java程序中,有时需要推迟一些高开销的对象的初始化操作,并且只有在真正使用到这个对象的时候,才进行初始化,此时,就需要延迟初始化技术.延迟初始化的正确实现是需要一些技巧的,否则容 ...
- Linux学习之tune2fs
这是Linux系统用于文件系统自检的工具. 常用选项 -l 查看文件系统信息 -c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次 ...
- BAT-使用BAT方法设置IP地址
::------以下为批处理文件内容---- @echo off ::set slection1= set/p slection1=请输入IP地址: netsh interface ip set ad ...
- centos6.5下redis集群配置(多机多节点)
可参考官网文档:redis集群配置 需要注意的是,集群中的每个节点都会涉及到两个端口,一个是用于处理客户端操作的(如下介绍到的6379/6380),另一个是10000+{监听端口},用于集群各个节点间 ...
- Starting Tomcat v7.0 Server at localhost' has encountered a problem. 如何解决
刚刚学习JavaWeb,遇到了一个问题 因为是初学,我在工程中编写了一个JSP,想要在浏览器中打开,然后出现了这个问题: 在途中大家可以看到,我点击运行写好的JSP,却出现错误,真正的原因是因为Jav ...