1.常见命令1.1 总览命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建索引DROP INDEX删除索引1.2 常用语法SELECT用于从数据库中查询数据SELECT column_nameFROM table_nameWHERE conditionORDER BY column_name ASC/DESCcolumn_name(s): 要查询的列。table_name: 要查询的表。condition: 查询条件可选。ORDER BY: 排序方式ASC 表示升序DESC 表示降序可选。INSERT INTO用于向数据库表中插入新数据INSERT INTO table_name (column1, column2,…)VALUES (value1, value2, …)table_name: 要插入数据的表。column1, column2, …: 要插入数据的列。value1, value2, …: 对应列的值。UPDATE用于更新数据库表中现有数据UPDATE table_nameSET column1 value1, column2 value2,…WHERE conditiontable_name: 要更新数据的表。column1 value1, column2 value2, …: 要更新的列及其新值。condition: 更新条件。DELETE用于从数据库表中删除数据DELETE FROM table_nameWHERE conditiontable_name: 要删除数据的表。condition: 删除条件。CREATE TABLE用于创建新的数据库表CREATE TABLE table_name(column1 data_type constraint,column2 data_type constraint,…)table_name: 要创建的表名。column1, column2, …: 表的列。data_type: 列的数据类型如 INT、VARCHAR 等。constraint: 列的约束如 PRIMARY KEY、NOT NULL 等。ALTER TABLE用于修改现有的数据库表的结构ALTER TABLE table_nameADD column_name1 data_typeALTER TABLE table_nameDROP COLUMN column_name2table_name: 要修改的表。column_name1: 要添加的列。data_type: 列的数据类型。column_name2: 要删除的列。DROP TABLE用于删除数据库表DROP TABLE table_nametable_name: 要删除的表CREATE INDEX用于创建索引以加快查询速度CREATE INDEX index_nameON table_name (column_name)index_name: 索引名table_name创建的表column_name: 表中要索引的列DROP INDEX用于删除索引DROP INDEX index_nameON table_nameindex_name: 要删除的索引名table_name索引所在的表WHERE用于指定筛选条件SELECT column_nameFROM table_nameWHERE conditioncondition:筛选条件ORDER BY用于对结果集进行排序SELECT column_nameFROM table_nameORDER BY column_name ASC/DESCcolumn_name : 用于排序的列ASC : 升序默认什么都不写的话就是升序DESC 降序GROUP BY用于将结果按一列或者多列进行分组SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE conditionGROUP BY column_nameaggregate_function: 聚合函数如 COUNT、SUM、AVG 等HAVING用于对分组后的结果进行筛选SELECT column_name, aggregate_function(column_name)FROM table_nameGROUP BY column_nameHAVING conditioncondition筛选条件JOIN用于将两个或多个表的记录结合起来SELECT column_nameFROM table_name1JOIN table_name2ON table_name1.column_name table_name2.column_nameJOIN: 可以是 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN。DISTINCT用于返回唯一不同的值SELECT DISTINCT column_nameFROM table_namecolumn_name(s): 要查询的列。2.SELECT2.1 语法SELECT column_name 1, column_name 2 FROM table_name #OR SELECT * FROM table_name参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。*: 通配符表示选择表中的所有列。2.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取 “name” 和 “country” 列SELECT name, country FROM Websites2.从 “Websites” 表中选取所有列SELECT * FROM Websites3.SELECT DISTINCT在表中一个列可能会包含多个重复值有时您也许希望仅仅列出不同distinct的值。DISTINCT 关键词用于返回唯一不同的值。3.1 语法SELECT DISTINCT column_name 1, column_name 2 FROM table_name参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。3.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表的 “country” 列中选取唯一不同的值也就是去掉 “country” 列重复值SELECT DISTINCT country FROM Websites4.WHEREWHERE 子句用于提取那些满足指定条件的记录。4.1 语法SELECT column_name 1, column_name 2 FROM table_name WHERE condition参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。condition: 筛选条件4.2 WHERE 中的运算符运算符含义等于! / 不等于大于小于大于等于小于等于AND组合多个逻辑与OR逻辑或NOT逻辑非BETWEEN …AND…在某个范围之内LIKE搜索某种模式吗模糊查询IN指定针对某个列的多个可能值IS NULL检查是否为空IS NOT NULL检查是否不为空4.3 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取国家为 “CN” 的所有网站SELECT url FROM Websites WHERE country CNSQL 使用单引号来环绕文本值大部分数据库系统也接受双引号。在上个实例中 ‘CN’ 文本字段使用了单引号。如果是数值字段请不要使用引号。2.从 “Websites” 表中选取id为 “1” 的网站SELECT url FROM Websites WHERE id 13.匹配列表中的任意值INSELECT * FROM Employees WHERE Department IN (HR, IT, Finance)4.模糊匹配LIKE支持通配符 %任意多个字符和 _单个字符SELECT * FROM Employees WHERE Name LIKE ‘J%’ -- 以J开头的名字 SELECT * FROM Employees WHERE Name LIKE ‘%son’ -- 以son结尾的名字 SELECT * FROM Employees WHERE Name LIKE ‘_o%’ -- 第二个字符是o的名字5.ORDER BYORDER BY 关键字用于对结果集进行排序。默认按照升序对记录进行排序。如果需要按照降序对记录进行排序您可以使用 DESC 关键字。5.1 语法SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。ASC: 按升序排序默认DESC: 按降序排序5.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取所有网站并按照 “alexa” 列排序SELECT * FROM Websites ORDER BY alexa2.从 “Websites” 表中选取所有网站并按照 “alexa” 列降序排序SELECT * FROM Websites ORDER BY alexa DESC3.从 “Websites” 表中选取所有网站并按照 “country” 和 “alexa” 列排序SELECT * FROM Websites ORDER BY country, alexa6.INSERT INTOINSERT INTO 语句用于向表中插入新记录。6.1 语法第一种形式无需指定要插入数据的列名只需提供被插入的值即可INSERT INTO table_name VALUES (value1,value2,value3,...);第二种形式需要指定列名及被插入的值INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);参数说明column1, column2, …要插入的字段名称table_name要查询的表名称。value1, value2, …需要插入的字段值。6.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.向 “Websites” 表中插入一个新行。INSERT INTO Websites (name, url, alexa, country) VALUES (百度, https://www.baidu.com/,4,CN);2.在指定的列插入数据,将插入一个新行但是只在 “name”、“url” 和 “country” 列插入数据id 字段会自动更新INSERT INTO Websites (name, url, country) VALUES (stackoverflow, http://stackoverflow.com/, IND);没有添加的列会自动填充为07.UPDATEUPDATE 语句用于更新表中已存在的记录。7.1 语法UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition参数说明column1, column2, …要修改的字段名称table_name要修改的表名称。value1, value2, …需要修改的字段值。condition修改条件用于指定哪些数据要修改。7.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.把 “菜鸟教程” 的 alexa 排名更新为 5000country 改为 USA。UPDATE Websites SET alexa 5000, country USA WHERE name 菜鸟教程8.DELETEDELETE 语句用于删除表中的记录。7.1 语法DELETE FROM table_name WHERE condition;参数说明table_name要删除的表名称。condition删除条件用于指定哪些数据要删除。7.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中删除网站名为 “Facebook” 且国家为 USA 的网站。DELETE FROM Websites WHERE name Facebook AND country USA
【MySQL】SQL菜鸟教程(一)
1.常见命令1.1 总览命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建索引DROP INDEX删除索引1.2 常用语法SELECT用于从数据库中查询数据SELECT column_nameFROM table_nameWHERE conditionORDER BY column_name ASC/DESCcolumn_name(s): 要查询的列。table_name: 要查询的表。condition: 查询条件可选。ORDER BY: 排序方式ASC 表示升序DESC 表示降序可选。INSERT INTO用于向数据库表中插入新数据INSERT INTO table_name (column1, column2,…)VALUES (value1, value2, …)table_name: 要插入数据的表。column1, column2, …: 要插入数据的列。value1, value2, …: 对应列的值。UPDATE用于更新数据库表中现有数据UPDATE table_nameSET column1 value1, column2 value2,…WHERE conditiontable_name: 要更新数据的表。column1 value1, column2 value2, …: 要更新的列及其新值。condition: 更新条件。DELETE用于从数据库表中删除数据DELETE FROM table_nameWHERE conditiontable_name: 要删除数据的表。condition: 删除条件。CREATE TABLE用于创建新的数据库表CREATE TABLE table_name(column1 data_type constraint,column2 data_type constraint,…)table_name: 要创建的表名。column1, column2, …: 表的列。data_type: 列的数据类型如 INT、VARCHAR 等。constraint: 列的约束如 PRIMARY KEY、NOT NULL 等。ALTER TABLE用于修改现有的数据库表的结构ALTER TABLE table_nameADD column_name1 data_typeALTER TABLE table_nameDROP COLUMN column_name2table_name: 要修改的表。column_name1: 要添加的列。data_type: 列的数据类型。column_name2: 要删除的列。DROP TABLE用于删除数据库表DROP TABLE table_nametable_name: 要删除的表CREATE INDEX用于创建索引以加快查询速度CREATE INDEX index_nameON table_name (column_name)index_name: 索引名table_name创建的表column_name: 表中要索引的列DROP INDEX用于删除索引DROP INDEX index_nameON table_nameindex_name: 要删除的索引名table_name索引所在的表WHERE用于指定筛选条件SELECT column_nameFROM table_nameWHERE conditioncondition:筛选条件ORDER BY用于对结果集进行排序SELECT column_nameFROM table_nameORDER BY column_name ASC/DESCcolumn_name : 用于排序的列ASC : 升序默认什么都不写的话就是升序DESC 降序GROUP BY用于将结果按一列或者多列进行分组SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE conditionGROUP BY column_nameaggregate_function: 聚合函数如 COUNT、SUM、AVG 等HAVING用于对分组后的结果进行筛选SELECT column_name, aggregate_function(column_name)FROM table_nameGROUP BY column_nameHAVING conditioncondition筛选条件JOIN用于将两个或多个表的记录结合起来SELECT column_nameFROM table_name1JOIN table_name2ON table_name1.column_name table_name2.column_nameJOIN: 可以是 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN。DISTINCT用于返回唯一不同的值SELECT DISTINCT column_nameFROM table_namecolumn_name(s): 要查询的列。2.SELECT2.1 语法SELECT column_name 1, column_name 2 FROM table_name #OR SELECT * FROM table_name参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。*: 通配符表示选择表中的所有列。2.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取 “name” 和 “country” 列SELECT name, country FROM Websites2.从 “Websites” 表中选取所有列SELECT * FROM Websites3.SELECT DISTINCT在表中一个列可能会包含多个重复值有时您也许希望仅仅列出不同distinct的值。DISTINCT 关键词用于返回唯一不同的值。3.1 语法SELECT DISTINCT column_name 1, column_name 2 FROM table_name参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。3.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表的 “country” 列中选取唯一不同的值也就是去掉 “country” 列重复值SELECT DISTINCT country FROM Websites4.WHEREWHERE 子句用于提取那些满足指定条件的记录。4.1 语法SELECT column_name 1, column_name 2 FROM table_name WHERE condition参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。condition: 筛选条件4.2 WHERE 中的运算符运算符含义等于! / 不等于大于小于大于等于小于等于AND组合多个逻辑与OR逻辑或NOT逻辑非BETWEEN …AND…在某个范围之内LIKE搜索某种模式吗模糊查询IN指定针对某个列的多个可能值IS NULL检查是否为空IS NOT NULL检查是否不为空4.3 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取国家为 “CN” 的所有网站SELECT url FROM Websites WHERE country CNSQL 使用单引号来环绕文本值大部分数据库系统也接受双引号。在上个实例中 ‘CN’ 文本字段使用了单引号。如果是数值字段请不要使用引号。2.从 “Websites” 表中选取id为 “1” 的网站SELECT url FROM Websites WHERE id 13.匹配列表中的任意值INSELECT * FROM Employees WHERE Department IN (HR, IT, Finance)4.模糊匹配LIKE支持通配符 %任意多个字符和 _单个字符SELECT * FROM Employees WHERE Name LIKE ‘J%’ -- 以J开头的名字 SELECT * FROM Employees WHERE Name LIKE ‘%son’ -- 以son结尾的名字 SELECT * FROM Employees WHERE Name LIKE ‘_o%’ -- 第二个字符是o的名字5.ORDER BYORDER BY 关键字用于对结果集进行排序。默认按照升序对记录进行排序。如果需要按照降序对记录进行排序您可以使用 DESC 关键字。5.1 语法SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;参数说明column1, column2, …要选择的字段名称可以为多个字段。如果不指定字段名称则会选择所有字段。table_name要查询的表名称。ASC: 按升序排序默认DESC: 按降序排序5.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中选取所有网站并按照 “alexa” 列排序SELECT * FROM Websites ORDER BY alexa2.从 “Websites” 表中选取所有网站并按照 “alexa” 列降序排序SELECT * FROM Websites ORDER BY alexa DESC3.从 “Websites” 表中选取所有网站并按照 “country” 和 “alexa” 列排序SELECT * FROM Websites ORDER BY country, alexa6.INSERT INTOINSERT INTO 语句用于向表中插入新记录。6.1 语法第一种形式无需指定要插入数据的列名只需提供被插入的值即可INSERT INTO table_name VALUES (value1,value2,value3,...);第二种形式需要指定列名及被插入的值INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);参数说明column1, column2, …要插入的字段名称table_name要查询的表名称。value1, value2, …需要插入的字段值。6.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.向 “Websites” 表中插入一个新行。INSERT INTO Websites (name, url, alexa, country) VALUES (百度, https://www.baidu.com/,4,CN);2.在指定的列插入数据,将插入一个新行但是只在 “name”、“url” 和 “country” 列插入数据id 字段会自动更新INSERT INTO Websites (name, url, country) VALUES (stackoverflow, http://stackoverflow.com/, IND);没有添加的列会自动填充为07.UPDATEUPDATE 语句用于更新表中已存在的记录。7.1 语法UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition参数说明column1, column2, …要修改的字段名称table_name要修改的表名称。value1, value2, …需要修改的字段值。condition修改条件用于指定哪些数据要修改。7.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.把 “菜鸟教程” 的 alexa 排名更新为 5000country 改为 USA。UPDATE Websites SET alexa 5000, country USA WHERE name 菜鸟教程8.DELETEDELETE 语句用于删除表中的记录。7.1 语法DELETE FROM table_name WHERE condition;参数说明table_name要删除的表名称。condition删除条件用于指定哪些数据要删除。7.2 示例Websites表idnameurlalexacountry1Googlehttps://www.google.cm/1USA2淘宝https://www.taobao.com/13CN3菜鸟教程http://www.runoob.com/4689CN4微博http://weibo.com/20CN5Facebookhttps://www.facebook.com/3USA1.从 “Websites” 表中删除网站名为 “Facebook” 且国家为 USA 的网站。DELETE FROM Websites WHERE name Facebook AND country USA