登录数据库

mysql -u root -p
Enter password:**

创建数据库

create DATABASE 数据库名;

删除数据库

mysql> drop database 数据库名;

选择数据库

mysql> use 数据库名;

创建数据表

*以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

mysql> CREATE TABLE runoob_tbl(
-> runoob_id INT NOT NULL AUTO_INCREMENT,
-> runoob_title VARCHAR(100) NOT NULL,
-> runoob_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;

实例解析: • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL,在操作数据库时如果输入该字段的数据为NULL ,就会报错。 • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。 • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。 • ENGINE 设置存储引擎,CHARSET 设置编码。

MySQL笔记 - 图1

删除数据表

mysql> DROP TABLE runoob_tbl

增删改查操作:

1、插入数据

插入一行数据:

mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> (“学习 PHP”, “菜鸟教程”, NOW());

插入多行数据:

mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
->VALUES
-> (“好好学习”,”天天向上”,now()),(“勇往直前”,””奋斗不止”,now());

2、MySQL 查询

2.1、常用查询:

select * from runoob_tbl;
mysql> select

  • from runoob_tbl where runoob_author=’菜鸟教程’;
    mysql> select
  • from runoob_tbl where binary runoob_author=’runoob.com’;

    MySQL 的 where子句的字符串比较是不区分大小写的。 你可以使用 binary关键字来设定 WHERE 子句的字符串比较是区分大小写的。

2.2、union并集查询

  1. UNION

合并查询结果,剔除重复数据,

列数必须相同,列的类型必须一致,order by 只能用一次

MySQL笔记 - 图2
UNION ALL合并查询结果,包括重复的值

MySQL笔记 - 图3

3、MySQL update 修改

mysql> update runoob_tbl set runoob_title=’学习 C++’ where runoob_id=3;

4、MySQL delete 删除

mysql> delete from runoob_tbl where runoob_id=3;


其他:

MySQL笔记 - 图4

1、ORDER BY 排序查询

mysql> SELECT from runoob_tbl ORDER BY submission_date ASC;//升序,ASC不写默认升序
mysql> SELECT
from runoob_tbl ORDER BY submission_date DESC;//降序

2、GROUP BY 分组查询:

按名字进行分组,并统计每个名字有多少条记录
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
MySQL笔记 - 图5

3、WITH ROLLUP分组统计查询:

按名字进行分组,并对singin求和
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
MySQL笔记 - 图6

使用WITH ROLLUP 就会显示合计总数,就是16的位置,不使用就没有16

联合多表查询:

1、INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
2、LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
3、RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
MySQL笔记 - 图7

1、 INNER JOIN连接:

读取a表中所有runoob_author字段在b表对应的runoob_count字段值:

显示俩表同时有的

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count
FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
MySQL笔记 - 图8

2、 LEFT JOIN连接:

读取左边的数据表 runoob_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl中 没有对应的 runoob_author 字段值。

显示左表有的

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

MySQL笔记 - 图9

3、 RIGHT JOIN连接:

读取右边的数据表 tcount_tbl 的所有选取的字段数据,即便在左侧表 runoob_tbl 中没有对应的runoob_author 字段值。

显示右表有的

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

MySQL笔记 - 图10

NULL 值处理

把null值转为0:Ifnull(列名,0)
mysql> SELECT FROM runoob_test_tbl WHERE runoob_count IS NULL;
mysql> SELECT
from runoob_test_tbl WHERE runoob_count IS NOT NULL;

正则表达式

查找name字段中以’st’为开头的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘^st’;
查找name字段中以’ok’为结尾的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘ok$’;
查找name字段中包含’mar’字符串的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘mar’;
查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘^[aeiou]|ok$’;

MySQL 事务

mysql> begin; # 开始事务
mysql> rollback; # 回滚
mysql> commit; # 提交事务

删除表字段(列)

mysql> ALTER TABLE testalter_tbl DROP i;

添加表字段(列)

mysql> ALTER TABLE testalter_tbl ADD i INT;

修改表字段(列)

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

修改字段NULL值属性

mysql> ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

修改字段默认值属性

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

修改表名

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;