登录数据库
mysql -u root -p
Enter password:**
创建数据库
删除数据库
选择数据库
创建数据表
*以下例子中我们将在 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 设置编码。
删除数据表
增删改查操作:
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并集查询
UNION
合并查询结果,剔除重复数据,
列数必须相同,列的类型必须一致,order by 只能用一次
UNION
ALL合并查询结果,包括重复的值
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;
其他:
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;
3、WITH ROLLUP分组统计查询:
按名字进行分组,并对singin求和
mysql> SELECT name, SUM(singin) as
singin_count FROM employee_tbl GROUP BY
name WITH ROLLUP;
使用WITH ROLLUP 就会显示合计总数,就是16的位置,不使用就没有16
联合多表查询:
1、INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
2、LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
3、RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
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;
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;
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;
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;