mysql装包
mysql是个tar包,需要用tar解压后用rpm装包tar -xf mysql-5.7.17.tar,如果远程装包需要scp发送过去
解压后rpm装包rpm -Uvh mysql-community-*.rpm 直接rpm升级装包(可避免系统类自代数据库程序冲突)其中server和client包必须要有装的
在rpm装包过程中,如出现需要依赖包,直接按提示yum装包
一般需要一下依赖包 autoconf。perl-JSON。libaio。net-toos
如果起冲突请删掉这个包rm -rf mysql-community-server-minimal-5.7.17
数据库的配置文件一般都是默认放在/etc/my.cnf
软件包装完后它会自动创建数据库目,这个目录是数据库专属的,客户端的数据要存服务端上 也是存在这个数据库目录里面的 /var/lib/mysql/
起动mysql程序是用systemctl start mysqld ,执行这个名令后它会调用/usr/lib/systemd/
当你第一次起动mysql程序时,mysql会做自动初始化,它会创建一些必要的程序放在这个目录下面
system/mysqld.service 里的起动程序 (可以用status看到起动程序放在那里)所以需要等待几秒钟
设置开机 systemctl enable mysqld
*************************************************************************
进入数据库服务器 (其实它就相当于一个文件夹)
筛选初始密码 grep -i password /var/log/mysqld.log
使用初始密码登陆 mysql -hlocalhost -uroot -p'筛选出的十位密码'
进去后如下
msyql> 这里面用的是SQL命令的 (结构化查询语言)
****************************************忘记密码或输入密码显示Enter password**********
如果忘记密码可在配置文件vim /etc/my.cnf写 跳过密码
[mysqld]
skip-grant-tables
2. 重启mysqld 3. 命令行进入mysql进行跟改密码
4. 我们查看一下要更改那些项 mysql>select host,user,authentication_string(认证) from mysql.user;
5. 重新设置密码
mysql> update mysql.user
-> set
-> authentication_string=password("123456")
-> where
-> user="root" and host="localhost";
quit 退出到命令行
6. 进入vim /etc/my.cnf
注释跳过密码并写入密码规则(在配置文件写的密码就是永久的了)validate(验证)
[mysqld]
#skip-grant-tables
validate_password_policy=0 只检验长度,如果=1 那就要检验数字,大小写字么特殊符号等
validate_password_length=6 密码长度为6位
:x
登陆完成mysql -uroot -p'123456'
使用alter user 重设口令
mysql> alter user root @"localhost" identified by "123456"
*******************************设置临时密码信息***************************************
[root@es4 ~]# grep -i password /var/log/mysqld.log
[root@es4 ~]# mysql -uroot -p'Q!dPJKYTw4wO' 通过初始密码进入数据库
mysql> set global validate_password_policy=0; 只要长度(这两条是临时的,永久需要在配置文件里改写)
mysql> set global validate_password_length=6; 只要6位数密码(global全局变量)
mysql> alter user root @"localhost" identified by "123456"; 使用alter user 重设口令
Query OK, 0 rows affected (0.00 sec)
《附加》 *为什么数据库目录是/var/lib/mysql*
配置文件/etc/my.cnf 里的datadir指定的(你也可以修改)
**************************************************************************************
• 库的基本操作
– Show databases; // 显示已有的库
// 切换库
– Use 库名 ;
– Select database(); // 显示当前所在的库
– Create database 库名 ; // 创建新库
// 显示已有的表
– Show tables;
– Drop database 库名; // 删除库
***************************************************************************************
DDL操作
所有表的信息都放在/var/lib/mysql下
mysql> create table t1(
-> name char(15),
-> class char(7)
-> );
Query OK, 0 rows affected (0.48 sec)
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec)
mysql> create table t1( 创建t1表
-> name char(15), 字符类型用char
-> class char(7)
-> );
Query OK, 0 rows affected (0.48 sec)
mysql> show tables; 查看表
+---------------+
| Tables_in_db1 |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec)
mysql> desc t1; 查看t1表结构(有那些列)
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(15) | YES | | NULL | |
| class | char(7) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> select * from t1; 查看表记录
*****************************************************************************
表的操作命令 (增,删,改,查)
1. 往表里写信息
Insert into 表名 values( 值列表 );// 插入表记录
mysql> insert into t1 values(
-> "cuizhiwei","nsd1803"),("bob","nsd1803");
Query OK, 2 rows affected (0.06 sec)
查看
mysql> select * from t1;
+-----------+---------+
| name | class |
+-----------+---------+
| cuizhiwei | nsd1803 |
| bob | nsd1803 |
+-----------+---------+
2. 改表某一列
Update 表名 set 字段 = 值 ; // 修改表记录
更新 表t1 设置 class列 等于 nsd1809
mysql> update t1 set class="nsd1809";
Query OK, 2 rows affected (0.06 sec)
3. 删除表所记录的信息
Delete from 表名 ; // 删除表记录
mysql> delete from t1;
Query OK, 2 rows affected (0.06 sec)
删除后表结构还是在的
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(15) | YES | | NULL | |
| class | char(7) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
4.删除表
mysql> drop table t1; 这下用show tables;也看不到这个t1表了
Query OK, 0 rows affected (0.19 sec)
5. 查看当前在那个数据库下
mysql> select database();
+------------+
| database() |
+------------+
| db1 | 在db1 数据库下
+------------+
***************************************************************************************
让表支持中文信息写入
show create table t1; 查看表用了那些命令创建(可以找到字符集DEFAULT CHARSET=)
DEFAULT CHARSET=utf8 改成这个字符集,并在创建表的时候加在分号前面,即可让表支持中文写入。
mysql> create table 学生信息表2(
-> 姓名 char(10),
-> 班级 char(7)
-> ) DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.27 sec)
查看select * from 学生信息表2;
***********************************信息种类类型************************************
数值有分 整型(正整数负整数),浮点型
存游戏等级数值类型可以用MEDIUMINT
存身高等精确信息用数值类型的浮点型
如果要正整数,要在数值类型后面加unsigned,如下
create table db1.t3(
等级 tinyint unsigned)DEFAULT CHARSET=utf8;
然后你发现写入信息只能用正整数写入 insert into t3 values(256);
三、mysql数据类型
3.1 数值类型 (成绩 年龄 工资 )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
微小整型 小整型 中整型 大整型 极大整型
tinyint smallint MEDIUMINT INT bigint
*****unsigned 使用数值类型有符号的范围。
浮点型 (存储小数)
float(M,N)
double(M,N)
M 设置总位数
N 设置小数位位数
正数.小数 总位数 整数位 小数位
18088.88 7 5 2
3.2 字符类型 (商品名称 籍贯 姓名 生产厂家)
char (255) 固定长度字符类型
varchar (65532) 变长字符类型
大文本类型 (音频文件 视频文件 图片文件)
blob
text
3.3 日期时间类型
(注册时间 约会时间 开会时间 入职时间 生日)
年 year YYYY 2018
日期 date YYYYMMDD 20180423
时间 time HHMMSS 161958
日期时间 datetime/timestamp
YYYYMMDDHHMMSS 20180423161958
获取日期时间给对应的日期时间类型的字段赋值
获取日期时间函数
now() 获取当期系统的时间
year(日期时间)获取指定时间中的年
month(日期时间)获取指定时间中的月
date(日期时间)获取指定时间中的日期
day(日期时间)获取指定时间中的号(天)
time(日期时间)获取指定时间中的时间
可以使用2位数字给year类型的字段赋值,规律如下:
01-69 20XX
70-99 19XX
datetime与timestamp 的区别?
3.4 枚举类型(插入记录 时 记录的值 在列举的范围内选择)
性别 爱好 专业
从给定值集合中选择单个值, ENUM
– 定义格式: enum( 值 1, 值 2, 值 N)
• 从给定值集合中选择一个或多个值, SET
– 定义格式: set( 值 1, 值 2, 值 N
enum(值列表) 单选
set(值列表) 多选
******************************************************************************
三 , SQL命令操作 :
******************************************************************************
、mysql数据类型
3.1 数值类型 (成绩 年龄 工资 )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
create database studb;
use studb;
create table t1(level smallint,age tinyint);
insert into t1 values(1024,19),(9,21);
insert into t1 values(21.45,9.87);
select * from t1;
create table t2(
level int unsigned,
age tinyint unsigned
);
desc t2;
insert into t2 values(-201, -1);
insert into t2 values(201, 0);
select * from t2;
create table t3(
pay float(5,2)
);
xxx.xx
999.99
0.00
-999.99
insert into t3 values(124);
insert into t3 values(1.24);
insert into t3 values(-999.99);
insert into t3 values(1000);
select * from t3;
create table t4(
pay double(7,2)
);
xxxxx.xx
99999.99
-99999.99
create table t5(
name char(5),
addrhome char(30),
email varchar(25)
);
insert into t5 values
("bob","beijing","bob@163.com");
select * from t5;
-----------------------------------------------------时间函数------------------------------------------------------------------
create table t6(
name char(15),
age tinyint unsigned,
pay float(7,2),
email varchar(30),
birthday date,
up_time time,
start_year year,
party datetime
);
desc t6;
insert into t6 values
("lanyiqun",18,26800,"lyq@tedu.cn",20181001,083000,
1990,20180501220000);
select * from t6;
mysql> select now();
mysql> select year( now() );
mysql> select year( 20191120 );
mysql> select month( now() );
mysql> select day( now() );
mysql> select date( now() );
mysql> select time( now() );
insert into t6 values( "lucy", 21 , 18800,
"lucy@tedu.cn" , date( now() ), time(now()) , year
(20111218) , now() );
insert into t6(name,start_year) values("tom",69);
+++++++++++++++++++++
create table t7 (
meetting datetime,
party timestamp
);
desc t7;
insert into t7 values( now() , now() );
insert into t7(party) values(20161123184518);
insert into t7(meetting ) values(20201123153000);
select * from t7;
+++++++++++++++++++
create table t8(
name char(15),
sex enum("boy","girl","no"),
likes set("woman","game","money","flim","eat")
);
desc t8;
insert into t8 values
("guoxuehao","boy","game,flim,eat");
insert into t8 values("xierongyue", 3 ,"money,eat");
select * from t8;
zerofill 用0补位
mysql> create table t12(
-> name char(5),
-> level int(3) zerofill,
-> money int(5) zerofill
-> );
Query OK, 0 rows affected (0.26 sec)
mysql> desc t12;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| name | char(5) | YES | | NULL | |
| level | int(3) unsigned zerofill | YES | | NULL | |
| money | int(5) unsigned zerofill | YES | | NULL | |
+-------+--------------------------+------+-----+---------+-------+
值不允许为空(not null)
mysql> create table t13(level int(3) zerofill not null);
Query OK, 0 rows affected (0.27 sec)