MySQL快速入门,看这一篇就够了,库、表、数据相关操作都在这里?? 
'''不管BS还是CS架构,服务端和客户端都是基于socket通信来收发消息的,后台的编程语言有很多,数据类型可能不一样,那么在存储数据的时候使用数据库,SQL语句就规定了统一操作数据的语言'''关系型数据库特点
MySQL、Oracle、db2、access、sql server···非关系型数据库特点:
redis、mongodb、memcache类比理解
推荐下载5.6,5.7版本左右的,尽量不要下载最新版本
步骤如下:





下载后解压缩
'''打开bin文件1. 服务端:mysqld.exe2. 客户端:mysql.exe'''登录
# 在超级管理员身份下打开cmd命令窗口登录mysql -uroot -h 127.0.0.1 -P 3306 -p-u:用户-h:地址-P:端口-p:密码# 简写mysql -uroot -p# 只写mysqlmysql登录游客模式,不是管理员登录,只能体会lowb的功能show databases; # 展示所有数据库\c或 ctrl+c(新版本) # 取消执行exit\ctrl+z(新版本) # 退出win命令补充
# 查看进程tasklisttasklist |findstr mysqld# 杀死进程(管理员模式)taskkill /F /PID PID号步骤
1.配置环境变量,将mysqld所在路径添加到path中D:\MySQL\mysql-5.6.48-winx64\mysql-5.6.48-winx64\bin2.将mysql服务端mysqld制作成开机自启动的服务打开cmd,输入mysqld --install# 移除mysql服务:mysql --remove[mysqld] : mysql服务端,启动mysql服务加载的配置[mysql] :mysql客户端,启动mysql加载的配置[client] :其他客户端统一编码配置,在目录下新建
my.ini文件,写入以下内容
[mysqld]character-set-server=utf8collation-server=utf8_general_ci[client]default-character-set=utf8[mysql]default-character-set=utf8# 然后重启服务# \s查看配置用户名和密码,登录可以不用输入(可选)
[mysql]user="root"password=[密码]
# 下载好的MySQL初始没有密码,可以设置新密码,在cmd中mysqladmin -uroot -p [oldpwd] password [newpwd]1. 先关闭mysql服务# 命令行启动,原理是跳过登录密码验证功能2. mysqld --skip-grant-tables3.无密码登录:mysql -uroot -p4.修改当前用户的密码(mysql文件夹中的user表):update mysql.user set password=password(新密码) where user='root' and host='localhost';5.将修改数据刷到硬盘:flush privileges;6.重新启动服务就可以正常校验登录了,登录大部分程序的业务逻辑都是增删改查
# 增加数据库create database 数据库名;create database 数据库名 charset ='gbk'; # 设置库的字符集编码# 查看数据库show database; # 查所有数据库show create database 数据库名; # 查单个# 修改数据库alter database 数据库名 charset='gbk';# 删除数据库drop database [数据库名];操作表,需要指定该表所在的库(文件夹)
# 查看当前所在库的名字 select database();# 切换库use 数据库名;# 增加表create table 表名(字段1,字段2);create table t1(id int,name char(4));# 删除表drop table [表名];# 修改表名alter table 表名 modify 字段 字段类型 ;alter table t1 modify name char(16);# 查看表show tables; # 查看库下所有表show create table 表名; # 查看单表desc 表名; # 查看表的详细字段信息# 在一个数据库操作另外一个数据库内的表,可以不use数据库名.表名操作数据,先确定库,在确定表,在操作数据
# 增加数据insert into 表名 values(value1, value2,···);insert into t1 values(1,'hammer') # 插入单个insert into t1 values(1,'hammer'),(2,'ze'); # 插入多个# 查看数据select * from 表名; # 查看所有数据select 字段名 from 表名;select name from t1; # 获取t1表中的所有name值# 修改数据update 表名 set 字段名='值' where 字段条件update t1 set name='hammer' where id>1; # id大于1的name修改成hammer# 删除数据delete from 表名; # 删除表内所有数据delete from 表名 where 条件;delete from t1 where id>1; # 将id>1的数据删除delete from t1 where name='hammer';日常生活中文件格式有很多种,针对不同文件的格式会有对应不同存储方式和处理机制,针对不同的数据应该有对应的不同处理机制来存储;
InnoDB:MySQL5.5版本之后默认的存储引擎(默认)MyISAM:MySQL5.5版本之前默认的存储引擎,比InnoDB快,但是InnoDB更安全show engines;mysql> show engines;InnoDB :DEFAULT(默认的) Supports transactions(支持事物), row-levellocking(行锁), and foreign keys(外键)create table 表名(类型,字段) engine=[引擎名]# 验证不同的存储引擎在存储表的时候,异同点create table t1(id int) engine=innodb;create table t2(id int) engine=myisam;create table t3(id int) engine=blackhole;create table t4(id int) engine=memory;# 文件区别如下图# 存数据insert into t1 values(1);insert into t2 values(1);insert into t3 values(1); insert into t4 values(1);# 重启服务查看select * from t1;+------+| id |+------+| 1 |+------+select * from t2;+------+| id |+------+| 1 |+------+select * from t3; # 内存中会消失Empty set (0.00 sec)select * from t4; # "黑洞"存啥消失啥Empty set (0.00 sec)
格式:create table 表名 ( 字段1 类型(宽度) 约束条件, 字段2 类型(宽度) 约束条件, 字段3 类型(宽度) 约束条件 ···)宽度是对数据进行限制
mysql> create table t5(name char);mysql> desc t5; # 宽度默认为1+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| name | char(1) | YES | | NULL | |+-------+---------+------+-----+---------+-------+insert into t5 values('hammer'); # 插入值mysql> select *from t5; +------+| name |+------+| h |+------+# 只能插入一个字符,不同版本不同限制,不同效果# 5.7版本之后默认开启了严格模式,规定多少宽度,就插入多少数据,超出报错约束条件
desc查看表结构,查看是否可以插入空值
mysql> desc t5;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| name | char(1) | YES | | NULL | |+-------+---------+------+-----+---------+-------+* null yes:可以插入控制【待续,持续更新····】