一、MySQL服务得搭建
1.安装MySQL压缩包并解压
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
之后yum -y install mysql-server 发现无可用安装包
这时需要MySQL的repo源:wget mysql-community-release-el7-5.noarch.rpm
之后安装:rpm -ivh mysql-community-release-el7-5.noarch.rpm
再运行yum -y install mysql-server即可安装,安装完成后,启动MySQL服务:systemctl start mysqld
也可以设置开机自启
服务启动后,会自动创建名为mysql的所属主和所属组
(如果安装mysql-server服务时使用了数字密钥认证,就可以直接登录数据库)
2.使用初始密码连接服务,初始密码在日志文件:/var/log/mysqld.log下
3.修改初始密码:alter user root@"localhost" identfied by "密码"
4.使用新密码登录: mysql -hlocalhost -uroot -p"密码"
可以修改密码策略:
show variables like "%password%"来查看密码策略(这里是不需密码登录的状态)
mysql> show variables like "%password%"; +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | disconnect_on_expired_password | ON | | old_passwords | 0 | | report_password | | +--------------------------------+-------+ 3 rows in set (0.01 sec)
之后在命令行执行set global 策略=值是临时,选择在配置文件/etc/my.cnf 中修改
vim /etc/my.cnf
[mysqld]下来配置
二、管理库基本命令
2.1基本库命令
1.show databases; 显示已有得库
2、select user(); 显示连接用户
mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.31 sec)
3、select database();显示当前所在库
4、create database 库名; #创建新库
5、use 库名 #切换到库下,相当于cd
mysql> use abc123 Database changed mysql> select database(); +------------+ | database() | +------------+ | abc123 | +------------+ 1 row in set (0.00 sec)
6.show tabels; #显示所有表
7、drop database 库名; #删除库
2.2基本表命令
1.建表
ysql> create table abc123.stuinfo(name char(15),fromadrr char(15)); Query OK, 0 rows affected (1.64 sec)
2.查看表结构,desc 库名.表名;
3.select *from 库名.表名 ; #查看表记录
mysql> select *from abc123.stuinfo;
+----------+----------+
| name | fromadrr |
+----------+----------+
| zhangsan | beijing |
| lisi | beijing |
+----------+----------+
4.insert into 库名.表名 values(值列表);(字符类型要用“ ”括上)
insert into abc123.stuinfo values("zhangsan","beijing"),("lisi","nanjin");
5.updata 库名.表名 set 字段=值 #修改表记录
update abc123.stuinfo set fromadrr="beijing";
6、delete form 表名;#修改表记录
delete from stuinfo;
三、MySQL的数据类型
字符型:
1.定长(固定长度)char
—最大字符个数255
—不够字符个数时,右边用空格补齐
—超过指定长度时,无法写入数据
2.变长:varchar
—根据存储空间的大写分配存储空间
—超过指定的长度时,无法写入数据
—最大长度65532
3、大文本:(音乐,视频等)(blob/text)
—字符存储超过65535时使用
生产环境中一般使用char 或varchar,char 类型不指定宽度时默认值为1 varchar 不允许不指定宽度
字符类型要使用双引号引上。
数值型
1.整型:
2.浮点型:
单精度 双精度
float double
格式一: 字段名: 类型
格式二: 字段名 :类型(宽度,小数位数)
3.日期时间类型
*datetime
—范围: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
—格式:yyyymmddhhmmss
*timestamp
—范围: 1970-01-01 00:00:00 ~ 2038-01-19 00:00:00
—格式:yyyymmddhhmmss
*日期 date
—范围:0001-01-01~9999-12-31
—格式:yyyymmdd
*年 year
——1901~2155
—格式:yyyy
*时间 time
—格式:HH:MM:SS
###########################################################
关于日期的时间字段:当未给timestamp赋值时,自动以当前系统时间默认赋值,而当datetime没有赋值时,默认为null
year默认四位赋值,当使用两位时 01~69 为2001~2069 70~99时为1970~1999
#############################################################
其中,select curtime();
select curdate();
select now();是用来获得当前时间的,
mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-09-24 | +------------+ 1 row in set (0.04 sec) mysql> select curtime(); +-----------+ | curtime() | +-----------+ | 20:45:34 | +-----------+
其他命令只能做截取功能,不可以与select 连用,可以用now()获得时间,再进行截取
mysql> select year(now()),month(now()),day(now()),time(now()); +-------------+--------------+------------+-------------+ | year(now()) | month(now()) | day(now()) | time(now()) | +-------------+--------------+------------+-------------+ | 2019 | 9 | 24 | 20:52:45 | +-------------+--------------+------------+-------------+ 1 row in set (0.04 sec)
#############################################################################################################
4.用时间日期类建表
mysql> create table T1 ( -> name char(10), -> your_start year(4), -> up_time time, -> birthday date, -> party datetime);
查看:
mysql> desc T1; +------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+-------+ | name | char(10) | YES | | NULL | | | your_start | year(4) | YES | | NULL | | | up_time | time | YES | | NULL | | | birthday | date | YES | | NULL | | | party | datetime | YES | | NULL | | +------------+----------+------+-----+---------+-------+
插入数值:
mysql> insert into T1 values ("zhangsan",2001,200715,20191010,now()); Query OK, 1 row affected (0.31 sec) mysql> select * from T1; +----------+------------+----------+------------+---------------------+ | name | your_start | up_time | birthday | party | +----------+------------+----------+------------+---------------------+ | zhangsan | 2001 | 20:07:15 | 2019-10-10 | 2019-09-24 21:19:31 | +----------+------------+----------+------------+---------------------+ 1 row in set (0.00 sec)
#######################################################################################################################
5、枚举类型:
enum 单选:—格式:字段名 enum(值1,值2,值N)
—只能选择一个值,这个值必须在列表中选择
set 多选:—格式:字段名 set(值1,值2,值N)
—可以选择多个值,这些值也必须在列表内
建表与查看:
mysql> create table T2 ( -> name char(5), -> likes set('eat','game','film','music'), -> sex enum('boy','girl','no')); Query OK, 0 rows affected (0.14 sec) mysql> desc T2; +-------+----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------------------------------+------+-----+---------+-------+ | name | char(5) | YES | | NULL | | | likes | set('eat','game','film','music') | YES | | NULL | | | sex | enum('boy','girl','no') | YES | | NULL | | +-------+----------------------------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
插入数据与查看数据:
mysql> insert into T2 values("bob","game,music","boy"); Query OK, 1 row affected (0.00 sec) mysql> select *from T2; +------+------------+------+ | name | likes | sex | +------+------------+------+ | bob | game,music | boy | +------+------------+------+ 1 row in set (0.00 sec)