一、数据库的介绍及其相关概念
数据库:存储数据的仓库;
1.DB(DateBase)
数据库
依照某种数据模型进行组织并放到存储器的数据集合
2.DBMS(DateBase Management System)
数据库管理系统
用来操纵和管理数据库的服务软件
3.DBS(DataBase System)
数据库系统:即DB+DBMS
指带有数据库并整合了数据库管理软件的计算机系统
典型应用环境
LAMP平台,与Apache HTTP Server组合
LNMP平台,与Nginx组合
安装软件
[root@proxy ~]# systemctl start mysqld #启动服务
[root@proxy ~]# ss -auntlp | grep 3306 #查看服务是否已经启动
information是在mysql的目录下没有的,这是属于虚拟库,数据存在
内存中,只读,不能进行删除,存储的是服务器参数设置
二、数据库的相关基础操作
1、修改登陆密码
首先查找初始密码,去日志里面查找,有特殊符号时需要加单引号
[root@proxy ~]# grep password /var/log/mysqld.log
[root@proxy ~]# mysql -uroot -p'vcY;pJT,f8Es'
mysql> alter user root@"localhost" identified by "123qqq...A";
如果日志没有初始密码,删除mysql的目录,重新启动服务(忘记密码也可以做该操作)
1.1、修改密码策略
临时修改
mysql> show variables like "%password%"; #查看变量
mysql> set global validate_password_policy=0; #修改密码策略
mysql> set global validate_password_length=6; #修改密码长度
永久修改
[root@proxy ~]# vim /etc/my.cnf
[mysqld]
....
validate_password_policy=0
validate_password_length=6
2、常用的SQL命令分类
2.1、库管理命令
2.2、表管理命令
mysql> create database db1; #创建库
mysql> create table db1.sun(name char(10),homeadd char(20)); #创建表
mysql> create table db1.yun(password char(50),name char(5))default charset=utf8; #创建表,并支持中文
mysql> use db1 #进入该库目录下
mysql> show tables; #查看该库下所有表
mysql> desc db1.sun; #查看表结构
mysql> drop table db1.sun; #删除表
2.3、记录管理命令
mysql> insert into db1.yun values("jie","mao"),("f760","李峰"); #添加两行,可以用逗号隔开
mysql> select * from db1.yun; #查看表的内容
mysql> select name from yun; #查看表的name列内容
mysql> update db1.yun set name="李凤" where password="f760"; #修改表的内容
mysql> select * from db1.yun\G; #当表的内容过多,可以使用\G,竖直看
mysql> delete from yun; #删除表的内容,不删除表,也可以用它删除行,要加条件删除
3、MySQL数据类型
3.1、字符类型
定长:char(字符个数)
最大字符个数255
不够指定字符个数是在右边用空格补全
字符个数超出时,无法写入数据
边长:varchar(字符个数)
按数据实际大小分配存储空间
字符个数超出时,无法写入数据(65535)
大型文本类型:text/bob
字符数大于65535存储时使用
3.2、数值类型
3.2.1、整数型
mysql> create table db1.t1(name char(10),age tinyint unsigned); #age的数值类型且使用无符号存储范围
mysql> insert into t1 values("jack","19.4"); #当输入的数带小数点时,会进行四舍五入
3.2.2、浮点型
字段名 float(n,m) xxx.xx 999.99 ~ -999.99
字段名 double(n,m) xxxxx.xx 99999.99 ~ -99999.99
n表示总位数 个数
m表示小数位 个数
mysql> create table t2(name char(10),gz float(7,2));
mysql> insert into t2 values("jack","77777");
mysql> select * from t2;
+------+----------+
| name | gz |
+------+----------+
| jack | 77777.00 |
+------+----------+
3.3、日期时间类型
-日期时间 datetime
1.范围:1000-01-01 00:00:00~9999-12-31 23:59:59 2.格式:yyyymmddhhmmss
-日期时间 timestamp
1.范围:1970-01-01 00:00:00~2038-01-19 00:00:00 2.格式:yyyymmddhhmmss
PS:当timestamp字段赋值时,自动一当前系统时间赋值,而datetime值为null(空)
-日期 date
1.范围:0001-01-01~9999-12-31 2.格式:yyyymmdd
-年 year
1.范围:1901-2155 2.格式:yyyy
PS:当使用2位数赋值时:01-69视为 2001-2069 、70-99视为 1970-1999
-时间time
格式:HH:MM:SS
mysql> create table db2.t11(name char(15),csnf year,birthday date,up_class time,party datetime);
mysql> insert into db2.t11 values("bob",2020,20200214,090000,20200214090000);
mysql> create table db3.t1(name char(10),meetting datetime,party timestamp); #查看timestamp与datetime的区别
mysql> insert into db3.t1(name,meetting) values("mao",20200214090000);
mysql> insert into db3.t1(name,party) values("jie",20200214090000);
mysql> select curtime();
mysql> select curdate;
mysql> select time(now());
mysql> insert into db2.t11 values("jack",year(now()),date(now()),time(now()),now()); #插入当前系统时间
3.4、枚举类型
enum 单选
1.格式:字段名 enum(值1,值2,值N)
2.仅能选择一个值
3.字段值必须在列表里选择
set多选
1.格式:字段名 set(值1,值2,值N)
2.选择一个或多个值
3.字段值必须在列表里选择
mysql> create table db1.t7(name char(15),sex enum("boy","girl"),likes set("eat","game","it"));
mysql> insert into db1.t7 values("mao","boy","eat,it");