-
安装
-
-
权限
-
-
数据库操作
-
数据表操作
-
数据字段操作
-
sql语句操作
安装
1.sudo apt-get install mysql-server mysql-client libmysqlclient-dev
2.查看是否启动
netstat -tap | grep mysql
3.启动mysql
service mysql start
4.连接mysql
mysql -h 127.0.0.1 -u root -p
5.use mysql;
6.grant all on *.* to root@'%' identified by '你的密码' with grant option; #授权用户可以在任意主机上 用root 密码 进行登录 并且对所有的数据库 数据表具备权限
7.flush privileges;
8.quit
9.sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
将 bind-address 127.0.0.1 这一行注释
10. suo ufw disable # 阿里云服务器需要将3306端口号添加到安全组 忽略第10步
sudo /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
sudo modprobe ip_tables save
11. service mysql restart
12.navicat 连接即可
第二种方式:
wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh db
编译安装
忘记root密码
1.sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
locking后面加一行
skip-grant-tables
2.service mysql restart #重启mysql
3.mysql -u root -p
提示输入密码 回车即可
4.密码更新
update user set authentication_string=PASSWORD("654321") where User='root';
update user set plugin="mysql_native_password";
flush privileges;
5.sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
skip-grant-tables 注释掉
6.重启mysql
service mysql restart
更新密码
mysql -h 127.0.0.1 -u root -p
use mysql;
update user set authentication_string=PASSWORD("654321") where User='root';
update user set plugin="mysql_native_password";
flush privileges;
数据库概念
生活中的数据库
-
银行卡 余额转账信息 存在银行数据库种
-
淘宝京东 订单信息
-
游戏装备信息
-
12306 购票信息
-
QQ音乐 网易云音乐 充值信息 收藏信息
数据库的五个单位
-
数据库服务器 mysql-server office
-
数据库 python1903.xls 就是一个数据库
-
数据表 python1903.xls中的sheet1 sheet2 sheet3 就是一个个的数据表
-
数据字段 每个sheet中的 序号 姓名 性别 年龄等 就是数据字段
-
数据行 每个学生的信息就是数据行
连接数据库
1.命令行 连接
mysql -h 数据库服务器的地址 -u 用户名 -p
Linux windows 连接的时候 保证服务先启动
Linux: service mysql start
windows: net start mysql57(安装的时候的名字)
cmder.exe 管理员身份运行
cmd.exe #到c盘 windows system32种 找到cmd.exe 右击管理员身份运行
2.可视化连接 navicat
首先保证服务器开启 3306端口号
服务器 注释掉 bind-address 127.0.0.1 因为默认只能本机连接数据库
操作数据库
mysql中 以;结尾
创建数据库
create database 数据库名;
查看数据库
show databases; #s不要忘了
选中数据库
use 数据库名字;
查看数据库有多少数据表
show tables; #s不要忘了
删除数据库
drop database 数据库名字;
数据表的操作
创建数据表
create table user(id int(11),name varchar(50))default charset=utf8; create table 表名(字段名 类型(长度),字段2 类型(长度))engine=引擎 default charset=utf8; #mysql中没有utf-8 只有utf8 engine=引擎 设置mysql引擎 mysql5.5.5 之后默认引擎是 innodb 之前是myisam default charset=utf8 设置字符集 复制表 create table 新表名 like 已经存在的表名;
查看表结构
show tables; desc 表名;
删除表
drop table 表名;
数据字段的操作
alter table 表名
修改表字段的类型 modify
alter table user modify name int(30); alter table 表名 modify 字段名 新类型(新长度);
添加字段 add
alter table user add column age tinyint;#默认加到最后 column 可加可不加 alter table 表名 add column 新字段名 类型(长度); mysql> desc user; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | int(30) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
添加字段的时候控制顺序 first after
mysql> alter table user add password varchar(30) first; #添加到第一位 mysql> desc user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | password | varchar(30) | YES | | NULL | | | id | int(11) | YES | | NULL | | | name | int(30) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) alter table user add column 新字段名 类型(长度) after 已经存在的字段名; #指定字段的后面
删除字段 drop
alter table 表名 drop column 字段名;#column 可加可不加 alter table 表名 drop 字段名; #也是正确的
已经存在的表字段 调整顺序 modify first after
alter table user modify id int(11) first; #将id字段调整到第一位 alter table user modify age tinyint after id;
修改表名 rename
alter table 旧表名 rename 新表名; alter table user rename users;
类型 引擎 字符集 索引
数据类型
-
数值类型
-
整型
-
浮点型
-
-
字符串类型
-
日期时间类型
-
复合类型
-
空间类型 (科学计算人员关注咱们不用管)
整型
类型 | 字节 | 范围 |
---|---|---|
tinyint | 1 | -128~127 |
smallint | 2 | -32768~32767 |
mediumint | 3 | -8388608~8388607 |
int | 4 | |
bigint | 8 | |
ps: 如果说 某个字段 不能够出现负数 这个时候需要添加 unsigned 无符号 正数
年龄我们一般用tinyint 来表示 0 男 1 女 2 未知 加unsigned
日期 一般是存时间戳 因为时间戳是整型 节约空间
浮点类型 123.45 ‘123.45’
类型 | 字节 | 范围 |
---|---|---|
float(m,d) | 4 | 单精度 m表示总个数 d表示小数点后位数 |
double(m,d) | 8 | 双精度 m表示总个数 d表示小数点后位数 |
decimal | 定点数 储存为字符串的浮点数 mysql 本质上是字符串存储 | |
银行中对于精度要求非常高 建议使用定点数 |
字符串
定长 char(50) 分配50空间 如果超过50 截短只剩50 不足50 空格补齐
边长 varchar(50)分配50空间 如果超过50 截短 只剩50 不足50 不用空格补齐
blob 类型 区分大小写 blob类型 不区分大小写
类型 | 字节 | 范围 |
---|---|---|
char | 0-255 | 定长 |
varchar | 0-255 | 变长 |
tinyblob | 0-255 | 二进制形式的字符串 不超过255字节 |
blob | 0-65535 | 二进制形式的长文本数据 |
tinytext | 0-255 | 短文本 |
text | 0-65535 | 长文本字符串 |
mediumblob | 二进制形式的中等文本数据 | |
longblob | 二进制形式的极大文本 | |
longtext | 极大文本数据 |
时间类型
类型 | 字节 | 举例 |
---|---|---|
date | 3 | 2019-11-12 |
time | 3 | 11:12:13 |
datetime | 8 | 2019-11-12 11:12:13 |
timestamp | 4 | 自动存储记录修改的时间 |
year | 1 | 年份 |
mysql中日期一般是存时间戳 如果数据量不大 那么 datetime 也可以 方便查看
select unix_timestamp(now()); #将当前日期加时间转成时间戳
复合类型
类型 | 说明 | 举例 |
---|---|---|
set | 集合类型 | set("n1","n2","n3") |
enum | 枚举类型 | enum("n1","n2","n3") |
区别:
enum 只允许从一个集合中 取出一个值
set 允许从集合中 取出任意多个值
总结
create table if not exists numbers( id INT(11) UNSIGNED not null, username VARCHAR(50) not null, content LONGTEXT not null, create_time datetime not null, sex TINYINT UNSIGNED not null DEFAULT 1, age TINYINT DEFAULT 18 )ENGINE=INNODB DEFAULT CHARSET=utf8; create table if not exists nums( id INT(11) not null, username VARCHAR(50) not null, content LONGTEXT not null, create_time datetime not null, sex TINYINT UNSIGNED not null DEFAULT 1, age TINYINT zerofill )ENGINE=INNODB DEFAULT CHARSET=utf8; zerofill #表示填充0 UNSIGNED #不能出现负数 default #设置默认值 not null #表示不为空
字符集
-
ascii A 65 a 97
-
gbk 简体中文 向下兼容 gb2312
-
Unicode 兼容世界上所有的语言 跨语言 跨平台
-
utf-8 unicode 可变长度的字符编码 1-6个字节
工作过程常用的排序规则
规则集 | 说明 |
---|---|
gbk_chinese_ci | 简体中文版不区分大小写 |
utf_gerneral_ci | 多国语言 不区分大小写 |
引擎
mysql 增删改查
增删改 被称作 写
查 读
mysql数据以文件的形式存储在服务器中
查看 /etc/mysql/mysql.conf.d/mysqld.cnf 注意查看 datadir 就是存放数据库数据的文件 路径
\G 代替 ; 表示以最佳阅读体验阅读 查看 mysql的引擎 show engines\G 常用的 引擎 innodb myisam mysql5.5.5 以后默认引擎是 innodb
-
myisam 读效率高 如果你这张表 读的可能性最大 那么选择myisam引擎 掌握
-
innodb 支持事务 如果对数据安全性要求比较高 那么选择 innodb 掌握
-
ARCHIVE 多用来归档 压缩比能达到1:10 了解
myisam 、innodb引擎的区别
-
myisam
-
不支持事务
-
表锁 锁住整张表
-
在服务器中的文件存放格式 *.frm *.MYD *.MYI
-
-
innodb
-
支持事务 如果说数据出错 支持数据回滚 保证数据的安全
-
行锁
-
在服务器中的文件存放格式*.frm *.ibd
-