mysql基础操作

数据库操作:

创建数据库:create database runoob
删除数据库:drop database runoob
使用数据库:use runoob
查看所有数据库:show databases

表操作:

创建表:
create table user( 
	id int unsigned auto_increment primary key, 
	username varchar(30), 
	password varchar(50) 
);

查看所有数据表
show tables

查看表结构:
desc user;

删除表
drop table user;

修改表名 
rename table user to user11;

数据操作(增删改查):

查看表数据:
select * from user;
+------+----------+----------+
| id   | username | password |
+------+----------+----------+
|    1 | user1    | 123      |
|    2 | user2    | 123      |
|    3 | user3    | 123      |
|    4 | user4    | 123      |
|    5 | user5    | 123      |
+------+----------+----------+

删除表数据
delete from user where id=1; 

修改表数据
update user set id=4 where id=500

插入表数据
insert into user (username,password) values("user1","123");

常见数据操作:

order by
正序:select * from user order by age asc
倒序:select * from user order by age desc

distinct关键字
select distinct age from user;

查询空值null 和 不等于null
select * from user where age is null;
select * from user where age is not null;

in 使用
select * from user where id in(3, 4, 7);

between and 使用
select * from user where id between 3 and 10

like 使用
select * from user where name like "%广%"

连接函数 cancat()
select concat(id,'-',name) from user 

随机数 rand()
select * from user order by rand() limit 3

统计 count()
select count(*) from user

求和 sum()
select sum(id) from user

平均值 avg()
select avg(id) from user

最大值 max()
select max(id) from user

最小值 min()
select min(id) from user

group by 分组聚合
select sum(id),name from user where id>2 group by name
ps:不能对没有使用 GROUP BY 分组的聚合函数使用 HAVING  进行限定

嵌套查询
select * from user where id in(select max(id) from user);

左连接
select table a left join table b on a.id = b.id

右连接
select table a right join table b on a.id = b.id

内连接
SELECT * FROM a INNER JOIN b ON a.id = b.id

数据类型

数值类型

在这里插入图片描述

日期和时间类型

在这里插入图片描述

字符串类型

在这里插入图片描述

JOIN

JOIN 按照功能大致分为如下三类:

SELECT * FROM tcount_tbl;
+---------------+--------------+
| runoob_author | runoob_count |
+---------------+--------------+
| 菜鸟教程     	| 10           |
| RUNOOB.COM    | 20           |
| Google        | 22           |
+---------------+--------------+

SELECT * from runoob_tbl;
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title  | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1         | 学习 PHP    	| 菜鸟教程       | 2017-04-12      |
| 2         | 学习 MySQL  	| 菜鸟教程       | 2017-04-12      |
| 3         | 学习 Java   	| RUNOOB.COM    | 2015-05-01      |
| 4         | 学习 Python 	| RUNOOB.COM    | 2016-03-06      |
| 5         | 学习 C     	| FK            | 2017-04-05      |
+-----------+---------------+---------------+-----------------+

INNER JOIN(内连接,或等值连接)

在这里插入图片描述

// INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
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;
+-------------+-----------------+----------------+
| a.runoob_id | a.runoob_author | b.runoob_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    		| 10             |
| 2           | 菜鸟教程    		| 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
+-------------+-----------------+----------------+

LEFT JOIN(左连接)

在这里插入图片描述

// LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
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;
+-------------+-----------------+----------------+
| a.runoob_id | a.runoob_author | b.runoob_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    		| 10             |
| 2           | 菜鸟教程    		| 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
| 5           | FK              | NULL           |
+-------------+-----------------+----------------+

RIGHT JOIN(右连接)

在这里插入图片描述

// RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
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;
+-------------+-----------------+----------------+
| a.runoob_id | a.runoob_author | b.runoob_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    		| 10             |
| 2           | 菜鸟教程    		| 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
| NULL        | NULL            | 22             |
+-------------+-----------------+----------------+

MySQL 事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

  1. 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  2. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  3. 事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  1. 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  2. 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  3. 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read
    uncommitted)、读提交(read committed)、可重复读(repeatable
    read)和串行化(Serializable)。
  4. 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

使用方法:

  1. BEGIN 开始一个事务
  2. ROLLBACK 事务回滚
  3. COMMIT 事务确认
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_transaction_test(id int(5)) engine=innodb;  # 创建数据表
Query OK, 0 rows affected (0.04 sec)
 
mysql> begin;  # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into runoob_transaction_test value(5);
Query OK, 1 rows affected (0.01 sec)
 
mysql> insert into runoob_transaction_test value(6);
Query OK, 1 rows affected (0.00 sec)
 
mysql> commit; # 提交事务
Query OK, 0 rows affected (0.01 sec)
 
mysql>  select * from runoob_transaction_test;
+------+
| id   |
+------+
| 5    |
| 6    |
+------+
2 rows in set (0.01 sec)
 
mysql> begin;    # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql>  insert into runoob_transaction_test values(7);
Query OK, 1 rows affected (0.00 sec)
 
mysql> rollback;   # 回滚
Query OK, 0 rows affected (0.00 sec)
 
mysql>   select * from runoob_transaction_test;   # 因为回滚所以数据没有插入
+------+
| id   |
+------+
| 5    |
| 6    |
+------+
2 rows in set (0.01 sec)

ps:

  1. 在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SETAUTOCOMMIT=0,用来禁止使用当前会话的自动提交。
  2. 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

字段操作

找女朋友去了,有空再写

索引

索引操作

数据导入导出

mysql正则表达式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值