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数据库备份恢复
随机推荐
- java线程不安全类与写法
线程不安全类 1.为什么java里要同时提供stringbuilder和stringbuffer两种字符串拼接类 2.simpledateformate是线程不安全的类,如果把它作为全局变量会有线程安 ...
- 10710 - Chinese Shuffle(数论+完美洗牌)
UVA 10710 - Chinese Shuffle 题目链接 题意:给定n张牌,完美洗牌n - 1次,问是否会变回原来的序列 思路:完美洗牌: 如果有a1a2a3...anb1b2b3...bn的 ...
- Django学习之raw()方法查询数据
我们经常有这种需求: 用sql来查询以及写入数据到数据库,Django当然也提供了这种方式,那就是通过raw方法: sql = "select * from blog_blog where ...
- js基础系列框架图 (转载)
- PHP 几种 序列化/反序列化的方法
序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1. serialize和 ...
- golang解析xml
解析xml标签或者html标签,都是xml文档格式.要是返回的html标签,可以用第三方依赖库goquery来解析. 下面说下,解析xml标签的格式.直接上代码,代码如下: package main ...
- 【转】Monkey测试5-运行中停止monkey
停止monkey自动测试步骤: 1.ps命令 查找uiautomator的进程 打开cmd命令行窗口 输入: adb shell ; ps | grep monkey; 返回来的第一个数字,即是mo ...
- python 爬虫1 Urllib库的基本使用
1.简单使用 import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.re ...
- python 反射机制 ( 广泛应用于URL参数)
web实例 考虑有这么一个场景,根据用户输入的url的不同,调用不同的函数,实现不同的操作,也就是一个url路由器的功能,这在web框架里是核心部件之一.下面有一个精简版的示例: 首先,有一个comm ...
- AsyncTask机制学习
其内容可以参考http://blog.csdn.net/webgeek/article/details/17298237 ,首先创建一个AsyncTask类 class GetFaceDetectTa ...