MySQL最常用的几个基本SQL语句

一、创建,查询数据库

创建:

CREATE DATABASE 数据库名;

例如:

CREATE DATABASE test;

查询:

SHOW DATABASES;

选择要是用的数据库:

USE 数据库 

二、创建、查询表

创建(至少包含一个字段):

CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

查询:

DESCRIBE 数据表名;

二、数据的增、删、改查

1、增(这里要注意的是,字段数据是字符型的必须加上引号,int型的可以加引号,也可以不加):

INSERT INTO test VALUES(字段一数据,字段二数据,......);这里的数据,必须是按照每一个字段,一一对应,不能多也不能少。

也可以选取字段进行添加:

INSERT INTO test (字段一,字段二,字段三;......) VALUES(字段一数据,字段二数据,......);这里的字段和字段对应的数据要对应起来(如果没有选取主键id,id一定要设置自增,某则会报错,没有选取的其他字段要允许为空)

例如:

INSERT INTO test (id,name,age,tel) VALUES(5,'zhangsan',20,'123456');

在这里有一个快速复制表数据的方法(成倍增加):

INSERT INTO think_admin (user,name,password,age) SELECT user,name,password,age FROM think_admin;

2、删:

删除表:drop TABLE 数据表名;(这里要慎重操作)

清空表:

DELETE FROM 数据表名;

删除数据:

DELETE FROM test WHERE 条件;

例如:

删除id=1的一条数据:

DELETE FROM test WHERE id=1;

删除name = ‘zhangsan’的数据:

删除id='zhangsan'     并且   age=18的数据:

DELETE FROM test WHERE name='zhangsan' AND age = 18;

删除id='zhangsan'    或者  age=18的数据:

DELETE FROM test WHERE name='zhangsan' OR age = 18;

3、改:

UPTATE 数据表名 SET 字段名=要改的数据 WHERE 条件;

例如:

UPDATE test SET name = 'lisi' WHERE name = 'zhangsan';
UPDATE test SET name = 'lisi' WHERE name = 'zhangsan' AND age = 17;
UPDATE test SET name = 'lisi' WHERE name = 'zhangsan' OR age = 17;

4、查:

(1)查询所有字段的数据:

SELECT * FROM 数据表名;

例如:

SELECT * FROM test;

(2)查询部分字段数据:

SELECT name,age FROM test;

(3)带WHERE条件的查询:

SELECT * FROM test WHERE name = 'zhangsan';
SELECT * FROM test WHERE name = 'zhangsan' OR age = 18;
SELECT * FROM test WHERE name = 'zhangsan' AND age = 18;

(4)多表关联查询:

SELECT * FROM 表1 INNER JOIN 表2 ON 表1.关联字段=表2.关联字段 WHERE 表1.字段1 = 数据值1 AND 字段2 = 数据值2;

例如:

SELECT * FROM test1 INNER JOIN test2 ON test1.test2_id=test2.id WHERE test1.name = 'zhangsan' AND age = 18;

(5)带like的模糊查询:

 SELECT * FROM tb_stu  WHERE sname  =  '小刘'
 SELECT * FROM tb_stu  WHERE sname like '刘%'
 SELECT * FROM tb_stu  WHERE sname like '%程序员'
 SELECT * FROM tb_stu  WHERE sname like '%PHP%'

(6)带limit的限制条数查询:

查询前N条记录(这里是前三条)

 SELECT * FROM test1 LIMIT 3;

查询第M条到第N条记录(这里是第1条到第2条)

 SELECT * FROM test1 LIMIT 0,2;

查询第M条到第N条记录(这里是第2条到第4条)

 SELECT * FROM test1 LIMIT 1,3;

查询后n条记录(这里是后三条记录)

 SELECT * FROM tb_stu ORDER BY id ASC LIMIT 3;

5、union(并集)  用于合并两个或多个 SELECT 语句的结果集

并消去表中任何重复行而派生出一个结果表,当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行

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

列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

6、except 

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 

sql1  except sql2

7、intersect(交集)同union

8、join

(1)natural join 自然连接得到的结果表中,两表中名称相同的列只出现一次。

(2)inner join 内连接查询能将左表和右表中能关联起来的数据连接后返回,返回的结果就是两个表中所有相匹配的数据。

select * from TableA as A inner join TableB B on A.PK = B.PK;

(3)left join 和 right join

左链接是以左边为基准,返回左表的行,如果右表没有匹配到左表对应的数据库,就左表为依据填充为null,如下图


9、GROUP BY 

例如:求一个表中合并name字段,并且计算name字段各个名字的个数

SELECT name,count(name) as name_count from user0 GROUP BY name

10、DISTINCT

SELECT DISTINCT 列名称 FROM 表名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值