mysql数据库入门1 + 每日一问

mysql数据库入门1

准备环境
192.168.4.50 虚拟机
192.168.4.254 真机
真机克隆虚拟机的脚本

环境准备
基本需要
1.创建虚拟机 用小脚本+扩容
2.配置ip地址192.168.4.50 主机名,
3.关闭firewall
4.禁用selinux
5.拷贝软件 mysql-5.7.17.tar
6.配置yum源

clone.sh
create1() {
cd /var/lib/libvirt/images/
cp yy50.qcow2 fay51.qcow2
virsh dumpxml yy50 > /xmlfile/fay51.xml
sed -i ‘s/yy50/fay51/’ /xmlfile/fay51.xml
sed -i ‘/uuid/d’ /xmlfile/fay51.xml
sed -i ‘/mac /d’ /xmlfile/fay51.xml
sed -i ‘s%yy50.img%fay51.qcow2%’ /xmlfile/fay51.xml
virsh define /xmlfile/fay51.xml
virsh list --all
LANG=EN
growpart /dev/vda 1
xfs_growfs /dev/vda1
df -h
}
create1

//为虚拟机配ip脚本
ip(){
hostnamectl set-hostname fay55
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.55/24 connection.autoconnect yes
nmcli connection up eth0
ifconfig eth0
hostname
}
ip

//扩容脚本
LANG=EN
growpart /dev/vda 1
xfs_growfs /dev/vda1
df -h

[root@room12pc14 ~]# scp /linux-soft/03/mysql/mysql-5.7.17.tar root@192.168.4.55:/root

出错1:
[root@faydb ~]# yum repolist
ftp://192.168.4.254/centos-1804/repodata/repomd.xml: [Errno 14] curl#7 - “Failed connect to 192.168.4.254:21; No route to host”

排错1:
192.468.4.50配置在eth1网卡了,需要重新配置在eth0

176.121.168.178

RDBMS1 —DAY01

mysql

中小规模,关系型数据库系统 RDBMS (ORACLE MYSQL SQL SERVER DB2 ) ,
支持window linux unix 多种操作平台
Python java perl php

典型应用环境
LAMP平台, 与Apache HTTP Server
LNMP平台, 与nginx

一.搭建数据库服务器
解包
安装软件包
启动mysqld服务
查看服务进程和端口
查看初始登陆密码
使用初始密码登陆
修改登陆密码
断开连接
使用修改后的密码登陆
修改密码策略
根据新密码策略设置密码
使用新密码登陆

]# tar -xvf mysql-5.7.17.tar //解包
]# ls .rpm
]# yum -y install mysql-community-
.rpm //安装
]# systemctl start mysqld //开启服务
]# ls /var/lib/mysql
]# systemctl enable mysqld //开机自启
]# netstat -utnlp | grep :3306 //查看端口
]# ps -C mysqld //查看进程

相关参数
下载后有:
主配置文件 /etc/my.cnf
数据库目录 /var/lib/mysql
启动进程后有:
默认端口号:3306
传输协议:tcp
进程所有者:mysql
进程所属组:mysql
错误日志文件:/var/log/mysqld.log

	]# grep  password  /var/log/mysqld.log   //查看原始密码
         2019-06-06T02:10:17.284210Z 1 [Note] A temporary password is generated for root@localhost: *?H(rFej9rB!  // *?H(rFej9rB! 是初始化密码
	]# mysql -hlocalhost -uroot -p'f<tbekh-d8Y!'  //只允许root本机登录  首次登录密码在安装软件时候随机生成
	mysql> alter user  root@"localhost" identified by "123qqq...A"; //修改符合政策的新密码:大小字母数字
	mysql> exit

先临时修改密码策略
]# mysql -uroot -p123qqq…A
mysql> show variables like “%password%”; //修改密码策略
mysql> set global validate_password_length=6; //修改密码长度
mysql> set global validate_password_policy=0; //修改密码为最低校验策略
mysql> alter user root@“localhost” identified by “tarena”; //修改策略后,可以设置简单的密码
mysql> exit

     永久修改密码策略
]# mysql  -uroot -ptarena   // -h"localhost"可以省略不写,新密码登录
]# vim /etc/my.cnf   //查看修改后的密码策略
	[mysqld]
	validate_password_length=6
	validate_password_policy=0
:wq

修改密码策略
0 or low 长度
1 or medium 长度;数字,小写,大写,特殊符号
2 or strong 长度,数字,小写,大写和特惠字符

链接方式

客户端链接mysql的方式
1.命令行
2.web页面
3.安装图形软件
4.编写脚本 (php,java,python)

使用mysql 命令
mysql -h服务器ip -u用户名 -p密码 [数据库名] ;
quit 或exit 退出

数据存储流程
客户端把数据库存储到服务器上的步骤
1.链接数据库的服务器
2.建库
3.建表
4.插入记录
5.端口链接

mysql 管理环境
mysql 命令不区分大写(密码/变量值除外) sql 结构化语言
每条命令以分号; 结束 (use 命令除外)
默认命令不支持tab键补全
\c 中止sql命令 (在没有:的时候用)

mysql 的sql命令分类
DDL 数据定义语言 create alter drop
DML 数据操作语言 insert update delete
DCL 数据控制语言 grant revoke
DTL 数据事物语言 commit rollback savepoint

库管理命令
库 类似于文件夹,用来存储表
可以创建多个库,通过库名区分
show databases; //显示已有的库
select user(); //显示链接用户
use 库名; //切换库
select database(); //显示当前所在的库
create database 库名; //创建新库
show tables; //显示已有的表
drop database 库名; //删除库

库名 命名规则
1.仅可以使用数字,字母,下划线,不能纯数字
2.区分字母大小写,具有唯一性
3.不可使用关键字,特殊字符

在mysql中创建中文的表
]# LANG=“zh_CN.UTF-8” //允许中文
mysql> create table db1.学生表( //创建中文表和字段名
姓名 char(10),
家庭地址 char(20)
) DEFAULT CHARSET=utf8;

mysql> insert into db1.学生表 values(“张三丰”,“武当山”); //插入中文数据
mysql> insert into db1.学生表 values(“张四丰”,“武台山”);
mysql> select * from db1.学生表; //显示

文件的行 = 数据库 记录

show create table db1.stuinfo\G 表竖着显示

[root@fay50 ~]# locale //显示系统的语言
LANG=zh_CN.UTF-8
LC_CTYPE=“zh_CN.UTF-8”
LC_NUMERIC=“zh_CN.UTF-8”
LC_TIME=“zh_CN.UTF-8”
LC_COLLATE=“zh_CN.UTF-8”
LC_MONETARY=“zh_CN.UTF-8”
LC_MESSAGES=“zh_CN.UTF-8”
LC_PAPER=“zh_CN.UTF-8”
LC_NAME=“zh_CN.UTF-8”
LC_ADDRESS=“zh_CN.UTF-8”
LC_TELEPHONE=“zh_CN.UTF-8”
LC_MEASUREMENT=“zh_CN.UTF-8”
LC_IDENTIFICATION=“zh_CN.UTF-8”
LC_ALL=

指定字符值
LANG=“zh_CN.UTF-8”

建表
create table 库名.表名([root@fay50 ~]# vim /etc/my.cnf
[root@fay50 ~]# mkdir /myload
[root@fay50 ~]# chown mysql /myload
[root@fay50 ~]# vim /etc/my.cnf
[root@fay50 ~]# systemctl restart mysqld
Failed to restart mysqld.service: Unit not found.

例子
create table db1.stuinfo(
name char(15),
hoemaddr char(20)
);

表类似于文件
desc 库名.表名;
drop table 库名.表名;

记录类似与文件里的行
select * from 库名.表名;
insert into 库名.表名 values(值列表);
update 库名.表名 set 字段=值;
delete from 表名;

insert into db1.stuinfo values(“jim”,“usa”).(“lilei”,“china”);
select * from db1.stuinfo;
update db1.stuinfo set homeaddr=“beijing” ;

数组类型
定长 char(字符个数)
最大字符个数255
不够指定个数时在右边用空格补全
字符个数超出时,无法写入数据

变长 varchar(字符个数) —cpu需要计算字符个数,占用cpu,不推荐
按数组实际大小分配存储空间,最大65532,不补空格
字符个数超出时,无法写入数据

大文本类型: text / blob
字符数大于65535

字符类型分类: char varchar text blob

整数型
类型 名称 用符号范围 无符号范围
tinyint 微小整数 -128~127 0~255
smallint 小整数 -32768~32767 0~65535
mediumint 中整数 -223~223-1 0~2^24-1
int 大整数 -231~231-1 0~2^32-1
bigint 极大整数 -263~263-1 0~2^64-1
unsigned 使用无符号存储范围

例子
mysql> create table db1.t5 (name char(10), level tinyint );
mysql> insert into db1.t5 values (“zbj”,-1);
mysql> insert into db1.t5 values (“zbj”,-129);
mysql> insert into db1.t5 values (“zbj”,198);

mysql> create table db1.t6 (name char(10), level tinyint unsigned);
mysql> insert into db1.t6 values (“zbj”,-1);
mysql> insert into db1.t6 values (“zbj”,0);
mysql> insert into db1.t6 values (“zbj”,256);
mysql> insert into db1.t6 values (“zbj”,25);
mysql> insert into db1.t6 values (“zbj”,25.22);
mysql> insert into db1.t6 values (“zbj”,25.52);

mysql> create table db1.t3(pay float , id double);
mysql> insert into db1.t3 values(9999.23,9999.77);

mysql> create table db1.t4( pay float(5,2) , id double(4,2) );
mysql> insert into db1.t4 values(9999.23,9999.77);

mysql> create table db1.t7(stu_num int , name char(5) ,
age tinyint ,pay float ,money float(7,2) );

mysql> desc db1.t7 ;

类型
日期时间
datetime yyyymmddhhmmss
year yyyy
date yyymmdd
time HH:MM:SS

当没有给timestamp字段赋值时候,自动以当前系统时间赋值,而datetime不赋值默认是 NULL空

mysql> create table db1.t6(
-> meeting datetime,
-> party timestamp
-> );
Query OK, 0 rows affected (0.30 sec)

mysql> insert into db1.t6 values (20190606162000,20190606162000);
Query OK, 1 row affected (0.05 sec)

mysql> insert into db1.t6(meeting) values(20180707093000);
Query OK, 1 row affected (0.04 sec)

mysql> insert into db1.t6(party) values (20160707093000);
Query OK, 1 row affected (0.04 sec)

mysql> select * from db1.t6;
±--------------------±--------------------+
| meeting | party |
±--------------------±--------------------+
| 2019-06-06 16:20:00 | 2019-06-06 16:20:00 |
| 2018-07-07 09:30:00 | 2019-06-06 16:27:42 |
| NULL | 2016-07-07 09:30:00 |
±--------------------±--------------------+
3 rows in set (0.00 sec)

timestamp与datetime的区别

d)两者所能存储的时间范围不一样

timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;

datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。

时间函数

curtime() 获取当前系统时间
curdate() 获取当前系统日期
now() 获取当前系统日期和时间
year() 获取年
month() 获取月
day() 获取日
date() 获取日期
time() 获取时间

enum 单选
格式 字段名 enum(值1,值2,值N)
仅能选择一个值
字段必须在列表里选择

set 多选
格式 字段名 set(值1,值2,值N)
选择一个或多个值
字段值必须在列表里选择

当year类型 使用2位数赋值时:
01~69视为 2001~2069
70~99视为 1970~1999

create table db1.t9( 练习到 16:30
meetting datetime,
party timestamp
) ;

insert into db1.t9 values (20190606162000,20190606162000);

insert into db1.t9(meetting) values (20180707093000);

insert into db1.t9(party) values (20160707093000);

select * from db1.t9;

可以使用时间函数给字段赋值
mysql> insert into db1.t8 values
( “jack” , year(now()) , date(now()) , curtime() , now() );

create table db1.t10 (
name char(10),
sex enum(“boy”,“girl”,“no”),
likes set(“eat”,“game”,“piao”,“du”,“film”)
);

mysql> desc db1.t10;

insert into db1.t10 values (“jack”,“man”,“a,b,c”);
insert into db1.t10 values (“jack”,“boy”,“eat,piao”);

每日有问(2019-06-10):


1. mysql的约束条件有哪些

2. 修改表结构的命令有哪些

3. mysql键值类型有哪几种

4. 请简单概括索引的优缺点

5. 默认索引类型时什么?

答案:

1.null,not null,key,default,extra

2.add,modiry,change,drop,rename

3.index(普通索引),unique(唯一索引),fulltext(全文索引)
primary key(主键),foreign key(外键)

4.优点:加快数据的查询速度

缺点:
1.)索引需要占物理空间
2.)当对表中数据进行增删改时索引也要动态调整,降低了数据的维护速度

5.BTREE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值