一、创建,查询数据库
创建:
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 表名称