系统偏好设置启动mysql
PATH="$PATH":/usr/local/mysql/bin # 链接 mysql -u root -p # 登录
创建
create database xxx; mysqladmin -u root -p create xxx;
删除
drop database xxx; mysqladmin -u root -p drop xxx;
选择
use xxx; # xxx changed
数值
日期和时间类型
字符串类型
表的创建
CREATE TABLE table_name (column_name, column_type, ... , PRIMARY KEY (key_name)) ENGINE = InnoDB DEFAULT CHARSET = utf8;
注意: 字段属性如果要空值,尽量NOT NULL, 否则容易报错
表的删除
DROP TABLE table_name;
表中插入数据
INSERT INTO table_name(field 1, field 2,... field n) VALUES (value 1, value 2,... value n);
⚠️ 数据为字符型需要加入单引号或双引号
表中查询数据
SELECT * FROM table_name; # 读取表中所有数据
语法
SELECT field1, field2, ... , fieldn FROM table1, table2, ... , tablen [WHERE condition1 [AND [OR]] condition2
默认没有大小写区分, 使用BINARY WHERE
可以实现大小写区分
SELECT * from table_name BINARY WHERE filed1 = value1;
=
表示等于, <> or !=
表示不等于
UPDATE table_name SET field1=value1, field2=value2; [WHERE Clause]
更改指定id的语句
UPDATE table_name SET field1=value1 WHERE id=id_value;
DELETE FROM table_name [WHERE Clause];
SELECT field1, field2...fieldN FROM table_name WHERE field1 LIKE condition [AND [OR]] field2 = 'somevalue';
%
来代替任何字符SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT experssion1, expression2, ... expression_n FROM tables [WHERE conditions];
SELECT field1, field2,...fieldN FROM tbl1, tbl2,... tblN ORDER BY field1 [ASC / DESC[默认 ASC]]
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数
SELECT col_name, function(col_name) FROM tbl_name WHERE col_name operator value GROUP BY col_name;
MySQL事务用于处理操作量大、复杂性高的数据,以一个例子来说明就是在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
注意:
重点⚠️
一个事务一般来说要满足的4个条件(ACID):原子性(Atomicity,或不可分割性),
一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
原子性:一个事务(transaction)中所有的操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从未执行过一样(类似于撤销的感觉。
一致性:在事务开始之前和事务结束之后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发地完成预定的工作。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时
由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括:
持久性:事务处理结束后,对数据的修改是永久的,即便系统故障也不会丢失。
在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN
或START TRANSACTION
,或者执行命令SET AUTOCOMMIT=0
,用来禁止使用当前会话的自动提交。
基本操作步骤
# 操作1 begin; # 若干SQL语句 commit; # 提交事务 # 操作2 begin; # 若干SQL语句 rollback; # 回滚事务
使用SAVEPOINT
SAVEPOINT savepoint_name; # 声明一个savepoint ROLLBACK TO savepoint_name; # 回滚到savepoint
删除SAVEPOINT
SAVEPOINT在事务处理完成后(执行一条ROLLBACK或者COMMIT),自动RELEASE(释放)。
RELEASE SAVEPOINT savepoint_name; # 删除指定savepoint
用于修改数据库表名或者修改数据库表字段时,就需要用到ALTER命令
DROP
删除,如果数据表中只有一个字段是无法用DROP
删除的
ALTER TABLE tbl_name DROP key_name;
ADD
添加
ALTER TABLE tbl_name ADD key_name TYPE; ALTER TABLE tbl_name ADD key_name TYPE FIRST; # 添加在第一列 ALTER TABLE tbl_name ADD key_name TYPE AFTER key2_name; # 添加在某字段之后
FIRST
和AFTER
可以用于ADD
和MODIFY
子句,要重置字段位置就先DROP
再ADD
即可
使用MODIFY
或者CHANGE
子句
MODIFY
使用举例
ALTER TABLE tbl_name MODIFY key_name TYPE; # 将字段类型改为你想要的类型
CHANGE
使用举例
ALTER TABLE tbl_name CHANGE key_name1 key_name2 TYPE # 将key1修改,名字为key_name2,类型为TYPE
不设置默认值,字段默认为NULL,否则
ALTER TABLE tbl_name MODIFY key_name TYPE NOT NULL DEFAULT VALUE; # 字段默认为value不为null
修改默认值
使用ALTER
修改字段默认值
ALTER TABLE tbl_name ALTER key_name SET DEFAULT VALUE; # 默认值修改为VALUE
ALTER
和DROP
删除字段默认值
ALTER TABLE tbl_name ALTER key_name DROP DEFAULT;
ALTER
和TYPE
修改数据表类型
ALTER TABLE tbl_name ENGINE = MYISAM; # 修改数据库引擎为MYISAM
可以使用SHOW TABLE STATUS
语句(搭配LIKE
)查看数据库状态
SHOW TABLE STATUS LIKE 'tbl_name'\G
通过RENAME TO
子句实现
ALTER TABLE tbl_name RENAME TO new_name;
ALTER
命令同样可以用于创建和删除表的索引,详见下节