SQL语法总结 常用指令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 dror database if exists xx; 删除数据库 show databases; 展示所有数据库use xxx 进入指定的数据库 show tables; 展示所有表select * from xxxx; 展示表中的内容SELECT DISTINCT country FROM Websites; 返回表中不同的值 describe user ; 查看表格数据结构 desc user ; 查看表格建构 简写select * from diaochabiao where sixth= '男' ; 'where' 作为条件筛选数据CREATE USER 'username' @'host' IDENTIFIED BY 'password' ; 创建用户命令# 数据库备份sql 文件命令 mysqldump - u root - p123456 # 数据库导入sql 文件命令 source name.sql
ALTER 语法 1 2 3 4 5 ALTER TABLE 表名 DROP [COLUMN ] 字段名 ;删除字段ALTER TABLE 表名 ADD [COLUMN ] 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段 ; 在指定位置插入新字段ALTER TABLE 表名 COMMENT '新注释' ; 修改注释ALTER TABLE 旧表名 RENAME TO 新表名 ; 修改表名ALTER TABLE 表名 MODIFY [COLUMN ] 字段名 新数据类型 新类型长度 新默认值 新注释;
SQL ORDER BY 语法 1 2 3 SELECT column1, column2, ...FROM table_nameORDER BY column1, column2, ... ASC | DESC ;
column1, column2, …:要排序的字段名称,可以为多个字段。
ASC:表示按升序排序。
DESC:表示按降序排序。
SQL INSERT INTO 语句 1 2 INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);
table_name:需要插入新记录的表名。
column1, column2, …:需要插入的字段名。
value1, value2, …:需要插入的字段值
SQL UPDATE 语句 1 2 3 UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition ;
table_name:要修改的表名称。
column1, column2, …:要修改的字段名称,可以为多个字段。
value1, value2, …:要修改的值,可以为多个值。
condition:修改条件,用于指定哪些数据要修改。
SQL DELETE 语句 1 2 DELETE FROM table_nameWHERE condition ;
table_name:要删除的表名称。
condition:删除条件,用于指定哪些数据要删除。
删除所有数据 DELETE FROM table_name;
MySQL SELECT LIMIT 用于规定要返回的记录的数目
1 SELECT * FROM Websites LIMIT 2 ;
LIKE 1 2 3 select * from diaochabiaowhere name Like 'l%' ;
%l 以’l’结尾所有项
%l% 包含’l’的所有项 注释:从diaochabiao中找出name列中以’l’开头的所有项
SQL [charlist] 通配符 MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式
1 2 select * from diaochabiaoWHERE name REGEXP '^[^A-H]' ;
SQL IN 操作符 1 2 3 SELECT column1, column2, ...FROM table_nameWHERE column IN (value1, value2, ...);
column1, column2, …:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
table_name:要查询的表名称。
column:要查询的字段名称。
value1, value2, …:要查询的值,可以为多个值1 2 3 4 5 6 7 8 9 mysql> select * from diaochabiao - > WHERE BrithYear IN ('2002' ,'2003' ); + | id | Name | BrithYear | sixth | + | 1 | ljn | 2002 | 男 | | 2 | ljh | 2003 | 女 | + 2 rows in set (0.00 sec)
SQL BETWEEN 操作符 1 2 3 SELECT column1, column2, ...FROM table_nameWHERE column BETWEEN value1 AND value2;
column1, column2, …:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
table_name:要查询的表名称。
column:要查询的字段名称。
value1:范围的起始值。
value2:范围的结束值。
实列 1 2 3 4 5 6 7 8 9 mysql> select * from diaochabiao - > WHERE id BETWEEN 3 AND 5 ; + | id | Name | BrithYear | sixth | + | 4 | lhh | 2005 | 女 | | 5 | NULL | NULL | NULL | + 2 rows in set (0.00 sec)
带有 IN 的 BETWEEN 操作符实例 1 2 3 4 5 6 7 8 9 mysql> select * from diaochabiao - > WHERE (id BETWEEN 3 AND 5 ) - > AND sixth NOT IN ('NULL' ); + | id | Name | BrithYear | sixth | + | 4 | lhh | 2005 | 女 | + 1 row in set (0.01 sec)
SQL 别名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mysql> select name,concat(BrithYear,sixth) - > AS bs from diaochabiao; + | name | bs | + | ljn | 2002 男 | | ljh | 2003 女 | | lhh | 2005 女 | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | + 10 rows in set (0.01 sec)
SQL 连接(JOIN) SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
1 2 3 SELECT column1, column2, ...FROM table1JOIN table2 ON condition ;
column1, column2, …:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
table1:要连接的第一个表。
table2:要连接的第二个表。
condition:连接条件,用于指定连接方式。
不同的 SQL JOIN
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 mysql> select * from newlist; + | date | shenfen | + | 2022 -12 -22 00 :00 :00 | 2222222 | | 2023 -12 -21 00 :00 :00 | 2222 | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | + 7 rows in set (0.00 sec)mysql> select * from diaochabiao; + | id | Name | BrithYear | sixth | + | 1 | ljn | 2002 | 男 | | 2 | ljh | 2003 | 女 | | 3 | lhh | 2005 | 女 | | 4 | NULL | NULL | NULL | + 4 rows in set (0.00 sec)
INNER JOIN 1 2 3 4 5 6 7 8 9 10 11 mysql> select * from newlist - > inner join diaochabiao - > on newlist.id = diaochabiao.id; + | id | date | shenfen | id | Name | BrithYear | sixth | + | 1 | 2022 -12 -22 00 :00 :00 | 2222222 | 1 | ljn | 2002 | 男 | | 2 | 2023 -12 -21 00 :00 :00 | 2222 | 2 | ljh | 2003 | 女 | | 3 | NULL | NULL | 3 | lhh | 2005 | 女 | + 3 rows in set (0.00 sec)
注释:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 “diaochabiao” 表中的行在 “newlist” 中没有匹配,则不会列出这些行。
LEFT JOIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 mysql> select * from newlist - > left join diaochabiao - > on newlist.id = diaochabiao.id; + | id | date | shenfen | id | Name | BrithYear | sixth | + | 1 | 2022 -12 -22 00 :00 :00 | 2222222 | 1 | ljn | 2002 | 男 | | 2 | 2023 -12 -21 00 :00 :00 | 2222 | 2 | ljh | 2003 | 女 | | 3 | NULL | NULL | 3 | lhh | 2005 | 女 | | 4 | NULL | NULL | NULL | NULL | NULL | NULL | | 5 | NULL | NULL | NULL | NULL | NULL | NULL | | 6 | NULL | NULL | NULL | NULL | NULL | NULL | | 7 | NULL | NULL | NULL | NULL | NULL | NULL | + 7 rows in set (0.00 sec)
RIGHT JOIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 mysql> select * from diaochabiao - > right join newlist - > on diaochabiao.id = newlist.id - > ; + | id | Name | BrithYear | sixth | id | date | shenfen | + | 1 | ljn | 2002 | 男 | 1 | 2022 -12 -22 00 :00 :00 | 2222222 | | 2 | ljh | 2003 | 女 | 2 | 2023 -12 -21 00 :00 :00 | 2222 | | 3 | lhh | 2005 | 女 | 3 | NULL | NULL | | NULL | NULL | NULL | NULL | 4 | NULL | NULL | | NULL | NULL | NULL | NULL | 5 | NULL | NULL | | NULL | NULL | NULL | NULL | 6 | NULL | NULL | | NULL | NULL | NULL | NULL | 7 | NULL | NULL | + 7 rows in set (0.00 sec)
注释:RIGHT JOIN 关键字从右表(access_log)返回所有的行,即使左表(Websites)中没有匹配。
SQL UNION 操作符 SQL UNION 操作符合并两个或多个 SELECT 语句的结果。 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
1 2 3 SELECT column_name(s) FROM table1UNION SELECT column_name(s) FROM table2;
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
实列 1 2 3 4 5 6 7 8 9 10 11 12 mysql> select country from diaochabiao - > union - > select country from newlist; + | country | + | US | | CN | | UT | | | + 4 rows in set (0.00 sec)
SQL UNION ALL 语法 1 2 3 SELECT column_name(s) FROM table1UNION ALL SELECT column_name(s) FROM table2;
注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
实例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 mysql> select country from diaochabiao - > union all - > select country from newlist; + | country | + | US | | CN | | UT | | CN | | US | | | | | | | | | | | + 10 rows in set (0.00 sec)
SQL SELECT INTO 语句 通过 SQL,您可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
1 2 3 SELECT * INTO newtable [IN externaldb]FROM table1;
SQL INSERT INTO SELECT 语句 INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
语法 1 2 INSERT INTO table2SELECT * FROM table1;
实列 1 2 3 4 5 6 7 mysql> select * from persons; + | personID | FristName | country | + | 1 | ljn | cn | + 1 row in set (0.00 sec)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 mysql> insert into persons(FristName,country) - > select name,country from diaochabiao; Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from persons; + | personID | FristName | country | + | 1 | ljn | cn | | 2 | ljn | US | | 3 | ljh | CN | | 4 | lhh | UT | + 4 rows in set (0.00 sec)