mysql第一天

时间:2020-01-09
本文章向大家介绍mysql第一天,主要包括mysql第一天使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Mysql第一天

  • 安装

    • 远程连接

    • 权限

  • 数据库操作

  • 数据表操作

  • 数据字段操作

  • 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

高性能mysql

原文地址:https://www.cnblogs.com/quietzpc/p/12170586.html