- 创建数据库,并指定默认字符集
mysql> create database 数据库名 default character set utf8;
- 删除数据库
mysql> drop database 数据库名;
- 使用数据库
mysql> use 数据库;
显示正在使用的数据库
mysql>select DATABASE();
管理表
- 删除表
mysql> drop table 表;
- 修改表
添加字段
mysql> alter table 表 add column 字段名 类型;
mysql> alter table 表 add 字段名 1 类型,add 字段名 2 类型;
修改字段类型
mysql> alter table 表 modify column 列名 类型;
修改字段名称
mysql> alter table 表 change column 列名 新列名 数据类型;
删除字段
mysql> alter table 表 drop column 列名;
修改表名
mysql> alter table 表 rename to 新表名;
数据操作
1)查看表的数据
mysql> SELECT * FROM 表;
2) 插入数据
– 插入所有列(所有列的值都要按顺序依次插入)
mysql> INSERT INTO 表 VALUES(值 1,值 2);
3) 插入部分列(列的数据和值的顺序和数量一定保持一致 )
mysql> INSERT INTO 表(列名 1,列名 2,列名 3) VALUES(值 1,值 2,值 3);
4) 修改数据
mysql> UPDATE 表 SET 列名=值,列名 1=值 1,列名 2=值 2;
5)删除数据
mysql> DELETE FROM 表;
– 注意:
– 1)只能删除表中的数据,不能影响表中的自增长约束
– 2)使用 delete 删除的数据,通过事务可以回滚。
– 3)后面带条件
6)删除所有数据
mysql> TRUNCATE TABLE 表名;
– 注意:
– 1)既能删除表的数据,也能够把表的子增长约束置为 0.
– 2)使用 truncate 删除的数据,不能回滚!
– 3)后面不能带条件
查询数据
分组查询
SELECT COUNT(*) FROM 表名 GROUP BY 列;
分组筛选
SELECT COUNT(*) FROM 表名 GROUP BY 列 HAVING COUNT(*)>值;
查询去除重复数据
SELECT DISTINCT 列名 FROM 表;
条件查询
-- 1) 逻辑条件: and 且 or 或
SELECT * FROM 表名 WHERE 列名 1= 值 1 AND 列名 2=值 2;
SELECT * FROM 表名 列名 1= 值 1 OR 列名 2=值 2;
-- 2)比较条件: > < >= <= = between and
SELECT * FROM 表名 WHERE 别名>值;
SELECT * FROM 表名 WHERE 别名<=值;
SELECT * FROM 表名 WHERE 别名<值 OR 别名=值;
SELECT * FROM 表名 WHERE 别名>=值 AND 别名<=值;
SELECT * FROM 表名 WHERE 别名 BETWEEN 值 1 AND 值 2; -- (包前包后)
-- 3)判空条件: ='' is null <>'' is not null
UPDATE 表名 SET 列名 ="" WHERE 列名=值;
UPDATE 表名 SET 列名=NULL WHERE 列名=值;
-- null 和 空字符串的区别:
-- null: 没有数据。 判断 null: is null,判断不为 null: is not null
-- 空字符: 有数据,数据就是空字符串。判断空字符: =''; 判断不为空字符串: <>''
SELECT * FROM 表名 WHERE 列 IS NULL;
SELECT * FROM 表名 WHERE 列 ='';
-- 4) 模糊条件: like
-- like 后面跟上符合
-- %: 表示任意多个字符(0-多个)
-- _: 表示一个字符
SELECT * FROM 表名 WHERE 列名 LIKE '值%';
SELECT * FROM 表名 WHERE 列名 LIKE '%值%';
SELECT * FROM 表名 WHERE 列名 LIKE '值 ';
聚合查询
SELECT SUM(列)FROM 表名;
SELECT AVG(列) FROM 表名;
SELECT MAX(列)FROM 表名;
SELECT MIN(列) FROM 表名;
SELECT COUNT(*) FROM 表名;
SELECT COUNT(列) FROM 表名; -- 效率会比 count(*)效率稍高
-- 注意: 聚合函数,会排除 null 值的数据
多表查询
内连接查询:只有满足条件的结果才会显示(使用最频繁)
SELECT 列名 1, 列名 2 -- 2)确定哪些哪些字段
FROM 表 1,表 2 -- 1)确定查询哪些表
WHERE 表 1.列=表 2.列 -- 3)表与表之间连接条件
-- 内连接的另一种语法
SELECT 列名 1,列名 2
FROM 表 1
INNER JOIN 表 2
ON 表 1.列=表 2.列; 左[外]连接查询: 使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件
则显示 null
-- (注意: 左外连接:左表的数据一定会完成显示!)
SELECT 列名 1,列名 2
FROM 表 1
LEFT OUTER JOIN 表 2
ON 表 1.列=表 2.列; 右[外]连接查询: 使用右边表的数据去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件
则显示 null
-- (注意: 右外连接:右表的数据一定会完成显示!)
SELECT 列名 1,列名 2
FROM 表 1
RIGHT OUTER JOIN 表 2
ON 表 1.列=表 2.列;
-- 2.4 自连接查询
SELECT 列名 1, 列名 2
FROM 表 别名 1
LEFT OUTER JOIN 表 别名 2
ON 别名 1.列=别名 2.列;