MySQL
- 可以存储大量的数据, 500万 (大于500万 数据优化)
安装
- 用压缩包安装 配置环境变量
- 新建配置文件 mysql.ini
[mysqld]
port = 3306 //端口号
basedir = [mysql安装目录]
datadir = [数据存放目录]
skip-grant-tables //跳过密码验证
- 启动管理员模式下的CMD 运行命令
//确保所有的C++库都安装
mysqld -install //安装mysql服务
mysqld --initialize-insecure --user=mysql //初始化数据文件
-
启动Mysql服务 net start mysql
-
进入mysql mysql -u root -p[密码]
-
修改密码 update mysql.user set authentication_string=password(‘123456’ ) where user=‘root’ and Host = ‘localhost’;
-
(AlTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’😉 8.0版本
-
刷新权限 flush privileges;
-
注释ini中的跳过密码验证 # skip-grant-tables
-
重启mysql连接测试 net stop mysql && net start mysql && mysql -uroot -p123456
-
show variables like ‘version’; 查看mysql 版本
-
清空服务 sc delete mysql
使用
--对于特殊的关键字用 ` `避免跟系统关键字冲突
show databases ; --显示所有数据库
use [dataBaseName] ; --切换数据库
show tables ; --查看所有的表
describe [tableName] ; --查看数据库中所有表的信息
create database if not exist west; --创建数据库
drop datebase if exist west; --删除数据库
exit; --断开连接
字段属性
- unsigned: 无符号的整数 不能为负数
- zerofill : 零填充 int(3) 5 -> 005
- **autoincreament:**自增 自动在上一条记录基础上加1 通常用来设置唯一主键 必须是整数类型
- 非空:not null 如果不赋值 则报错
- default:默认值
- 每一个表 都必须存在以下五个字段
- id 主键
version
乐观锁- is_delete 伪删除
- gst_create 创建时间
- gst_update 修改时间
CREATE TABLE `school`.`test1` (
`id` INT ( 5 ) NOT NULL auto_increment COMMENT '学号',
`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR ( 20 ) NOT NULL DEFAULT '123456' COMMENT '密码',
`gender` VARCHAR ( 2 ) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '地址',
`email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET=utf8
create table [if not exist] tablename(
`字段名` 列类型 [属性] [索引] [注释],
...)[表类型] [字符集设置] [注释]
show create database databaseName -- 查看创建数据库的语句
show create table tableName -- 查看创建表的语句
desc tableName; -- 查看表的具体结构
数据表的类型
- 数据库引擎 engine=innodb; engine= myisam;
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 (表锁) | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大(约为2倍) |
- MYISAM : 节约空间 速度较快
- INNODB: 安全性高 事务的处理 多表多用户操作
- INNODB: 在数据库表中只有一个*.frm文件, 以及上级目录下的ibdata1文件
- MYISAM: *.frm 表结构的定义文件 *.MYD 数据文件 *.MYI 索引文件(index)
表的字符集编码默认为Latin1 不支持中文
在my.ini中配置默认的编码 character-set-server=utf8
修改和删除表
ALTER TABLE tableName RENAME AS newName; --重命名表
ALTER TABLE tableName ADD age INT(2); --添加字段
ALTER TABLE tableName MODIFY fieldName int(2); --修改字段约束
ALTER TABLE tableName CHANGE fieldName filedName2 [int(2)]; --修改字段名称或约束
ALTER TABLE tableName DROP fieldName; --删除字段
MySQL数据管理
- 创立物理外键
--方法一
create table if not exists `grade`(
`id` int(3) not null auto_increment comment '科目id',
`name` varchar(5) not null default '匿名' comment '科目',
`score` int(2) not null default 0 comment '得分',
primary key(`id`)) engine = INNODB default charset=utf8;
create table if not exists `test3`(
`id` int(3) not null auto_increment comment 'id',
`name` varchar(8) not null default '匿名' comment '姓名',
`birthday` datetime not null ,
`gradeid` int(3) not null comment '分数id',
primary key(`id`),
key `FK_grade` (`gradeid`),
constraint `FK_grade` foreign key (`gradeid`) references `grade`(`id`)) engine = INNODB default charset = utf8;
--方法二
create table if not exists `test3`(
`id` int(3) not null auto_increment comment 'id',
`name` varchar(8) not null default '匿名' comment '名称',
`gradeid` int(3) not null comment '分数id',
primary key(`id`)) engine = INNODB default charset=utf8;
alter table `test3` add constraint `FK_grade` foreign key `gradeid` references `grade`(`id`);
- 数据库就是单纯的表 只用来存数据 只有行(记录)和列(字段)
- 多张表的数据 通过程序实现
插入数据
insert into tableName() values ();
--字段与值要一一对应
--插入多个值用逗号隔开
修改数据
update tableName set field='' where field='';
//注意修改时间 需加上'' 或用常量 current_time
删除
delete from tableName where ;
TRUNCATE TABLE tableName; 命令: 完全清空 重新设置 自增列计数器会归零 不影响事务 只能删除表