MySQL安装与使用
windows解压版安装
SQL分类概述
四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL
DQL和DML
查询和操纵就是开发中的增删改查,insert/delete/update/select与from/where等子句
DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隐性提交的!不能rollback
DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:GRANT、ROLLBACK、COMMIT
表相关操作DDL
创建表
MySQL表引擎
MyISAM 强调性能,速度快,一般使用这种引擎
InnoDB 支持事务等高级处理,对有事务需求的数据使用
ARCHIVE
BLACKHOLE
CSV
MEMORY
MRG_MYISAM
PERFORMANCE_SCHEMA
表字段数据类型与注意事项
bit
tinyint/smallint/mediumint/int/bigint
real/double/float/decimal/numeric
date/time/timestamp/datetime/year
char/varchar/
binary/varbinary
tinyblob/blob/mediumblob/longblob
tinytext/text/mediumtext/longtext(注:medium中的的,媒体,介质)
enum/set/geometry/point/linestring/polygon/multipoint
multilinestring/multipolygon/geometrycollection
MySQL关键字与转义
check
status
注:表中字段名与关键字相同时,在sql语句中使用 ` ` 进行转义
表约束
PRIMARY KEY
FOREIGN KEY
NOT NULL
UNIQUE
AUTO_INCREMENT
DEFAULT
/*
*创建用户表
*设置主键
*添加备注、设置默认值
*设置引擎、字符集
*/
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`account` varchar(50) DEFAULT NULL COMMENT '用户名',
`password` varchar(100) DEFAULT NULL COMMENT '密码',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`status` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
/*
*创建订单表,一个用户可以有多个订单,一个订单只属于一个用户
*设置主键和外键
*/
CREATE TABLE `tb_order` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`buyer_id` bigint(20) NOT NULL COMMENT '购买人id',
`status` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
FOREIGN KEY (`buyer_id`) references tb_user(`id`),
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
修改表
修改表名、存储引擎
alter table '表名' rename '表名';
alter table '表名' engine=innodb;
添加字段和字段约束,以及指定指定位置
alter table '表名' add column '字段名' int not null default 0 after '字段名';
修改字段名或字段数据类型,以及修改字段位置
alter table '表名' change '旧字段名' '新字段名';
alter table '表名' modify '字段名' 数据类型 约束 默认值 位置;
添加和删除外键,以及修改约束
alter table '表名' add primary key('字段名');
alter table '表名' drop primary key;
删除表
drop table '表名';
清除表中数据
truncate table '表名';
数据库管理DCL
授权(grant/revoke/deny)
CREATE USER kevin IDENTIFIED BY '123456'; /*新建用户,用户名kevin,密码123456*/
SET PASSWORD FOR kevin=PASSWORD('123123'); /*修改密码*/
SHOW GRANTS FOR kevin; /*查看kevin用户权限*/
GRANT SELECT ON db_kevin.* TO kevin; /*为用户添加权限*/
REVOKE SELECT ON db_kevin.* TO kevin; /*取消用户权限*/
提交(commit)
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。
显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;
隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;
事务控制(savepoint/rollback)
savepoint savepoint_name; /*做标记*/
rollbak /*使数据库状态回到上次最后提交的状态*/
rollbak to savepoint savepoint_name; /*回滚到标记点*/
release savepoint savepoint_name; /*解除标记*/
/*MySQL中事务被提交后会新建一个事务,有些命令会隐式执行提交操作,rollbak无法回到提交操作之前*/
MySQL参数设置
1.配置最大连接数
命令行临时配置,重启后失效
修改配置文件配置 my.ini
MySQL其他功能
视图
存储过程
函数
事件
索引
约束
触发器