Linux数据库管理——day1——安装MySQL、基本增删改查操作

数据库:

DB 数据库 依照某个数据模型进行组织并存放到存储器中
DBMS 数据库管理系统 用来控制和管理数据的服务软件
DBS 数据库系统 DB+DBMS=DBS,是一个计算机系统

MySQL (端口号3306)

   特点
      1. 适用于中小规模、关系数据库系统
      2. 支持Linux和Windows等多操作系统
      3. 支持C和C++编写,可移植性强
      4. 通过API支持Python/Java/Perl/PHP等语言

   主要应用环境 LAMP、LNMP、WNMP、WAMP ,再集群中用来存储检索数据

   安装MySQL
      1. 下载RPM包,前往官网下载,解压后,前往目录然后安装

yum -y install perl-JSON  perl-Data-Dumper perl-Time-HiRes 
rpm -Uvh mysql-community-*.rpm

      2. 启动服务

systemctl restart mysql

      3. 查看配置文件 /etc/my.cnf
         数据存放目录 /var/lib/mysql
         日志文件 /var/log/mysqld.log
      4. 修改数据库管理密码

# 第一次进入刚刚创建的数据库
awk '/temporary password/{print $11}' /var/log/mysqld.log
mysql -hlocalhost -uroot -p'刚刚查看的密码'
# 这样就进入mysql操作界面,修改密码命令如下:
mysql>
set global validate_password_policy=0;
set global validate_password_length=6;
alter  user   root@"localhost"  identified by "密码";

# 只检查密码的长度
# 密码长度不能小于6个字符
# 设置密码

   数据库数据文件存放信息:
      1. 数据库库文件存放位置 /var/lib/mysql/
      2. 表文件就在对因的库文件目录下/var/lib/mysql/库名/。
      3.可以用Linux系统命令在 /var/lib/mysql/ 创建一个目录,在mysql里面就会出现同名的库,而且可以在mysql界面中切换查看这个库,但是不能创建表,原因是权限,用mkdir创建的目录是root所有的,而不是mysql,所以mysql就没有权限创建表


管理库命令

    查看有哪些数据库

show databases

    查看库中有哪些表

show 库名.tables

    进入某个数据库进行操作,下面命令中所有表前不写库名,默认是该库

use 库名

对库中的表 增删改查
     创建一个表(如果写的库名就是当前所在库,那可以不写库名)

create table 库名.表名(
    字段1  字段类型(宽度)   约束条件,
………………
    字段n  字段类型(宽度)   约束条件
);

    解释:
       表后是一个括号,括号外分号结尾,这括号内所有数据就是一个完整表结构
       括号内用 , (英文逗号) 分隔   每部分就是一个字段数据
       一个字段就是数据中一列数据
       字段表名可以是中文的,不过在 ) ; 中间加上 DEFAULT CHARSET=utf8 表中所有数据都支持中文。

    删除某个表

drop  库名.表名;

     查看当初创建某个表的信息

show create table 库名.表名;

     查看表的结构信息

desc  库名.表名;
# 信息的字段含义如下
# 字段名  字段类型  是否为空  是否为主键  默认值 描述信息

附: 如果返回值是 Empty set (0.00 sec) 代表查找的表或者库中没有任何数据


对表内数据 增删改查(如果写的库名就是当前所在库,那可以不写库名)

     增加新数据

insert into 库名.表名 values
("第一列值",……,"第n列值"),
…………
("第一列值",……,"第n列值");

     解释:
         这里一个括号内所有数据就是表中的一行数据,
         括号中数据以 , (英文逗号) 分隔   每部分就是一行数据中对应列的值
         所有数据添加完后,在最后一个括号外分号结尾

   特: 只给具体的几列值进行赋值,其他列值使用默认,不过列名间用逗号隔开,但是不能有空格

insert into 表名(列名1,列名2……) values(数据1,数据2……);

     删除某行数据

delete from 表 where 匹配条件;
# 如果没有where匹配限制,就会删除表中所有的数据信息

     修改某行的某些字段的信息

update 库名.表名 set 字段1=值1,……,字段n=值n where 匹配条件;
# 如果没有where匹配限制,就会修改表中所有的行中对应字段的值

     查看表中符合要求的字段信息,以及如何设置别名

select 字段 from  库名.表名  where 匹配条件;
# 如果没有where匹配限制,就会显示表中所有要求字段的值
# 如果想输入所有字段,就用*代替就可
select 字段1 相应别名1,字端2 相应别名2 …………
# 注意,别名不能时SQL语言的关键字
# 修改数据的时候,新数据不能和 约束、字段数据类型 有冲突,否则会导致无法添加!

字段类型

   数值类型、字符型、时间型、枚举型

类型 范围(有符号) 范围(没有符号) 描述
整数类型
tinyint -128 ~ 127 0 ~ 255 微小整数
smallint -2^15 ~ 2^15-1 0 ~ 2^16-1 小整数
int -2^23 ~ 2^23-1 0 ~ 2^24-1 整数
bigint -2^31 ~ 2^31-1 0 ~ 2^32-1 整数
如果整数类型中存了一个小数,那么小数部分会四舍五入
小数类型
float -2^23 ~ 2^23-1 0 ~ 2^24-1 单精度浮点数
double -2^31 ~ 2^31-1 0 ~ 2^32-1 双精度浮点数
如果小数类型中存了一个整数,那么会自动在后面加上若干个0
如果数值超过范围,仅仅保存最大/最小值

注:

   1. 在类型后面 空格+unsigned 就代表无符号存储,不写默认为有符号存储

   2. 字符类型的宽度是限制存储多少,如果数据类型后面没有  (宽度)  ,会报错
        数值类型的宽度是控制显示长度,如果数据长度小于控制长度,会默认用0补齐,而存数据的多少取决于数据类型本身的设定,如果数据类型后面没有  (宽度)  ,默认为显示11位的长度,最好把长度写成1,节约空间


字符类型

char(最多个数) (常用) 最多存储存储个数最大写255个字符
每次定义的时候,固定了存储范围
使用的时候不一定要写 (最大个数),不写默认为最多1个字符
varchar(最多个数) 最多存储65532个字符
会根据存储的具体多少分配空间,但是也不能超过规定范围 
必须写最多个数,不然报错
text/blob  可以存超过65532个字符,用来存储大型数据信息

 对比:
   类型text和blob用于存放数据极大的数据,一般不用,所以主要对比char和varchar
   不同点:
      char执行效率比varchar高,varchar比char节约存储空间
      所以现在用的最多的还是char,原因就是,相对于节约空间,人们现在更追求高效的速度。
   相同点:
      都不能超,char限定多少就是多少,varchar会根据实际存储,如果比原先定的小,分的空间也会小点

时间型 时间范围 数据书写格式 范例
datetime 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 年月日时分秒 20181015181615
timestamp 1970-01-01 00:00:00.000000 ~ 2038-01-19 23:59:59.999999
date 0001-01-01 ~ 9999-12-31 年月日 20181015
year 1901-2155 2018
time 00:00:00 ~ 23:59:59 时分秒 181615

然后用select查询结果就是:

+---------------------+------------+------+----------+
| 2018-10-15 18:16:15 | 2018-10-15 | 2018 | 18:16:15 |
+---------------------+------------+------+----------+

枚举类型

从给定的值中任选一个 enum(值1,……值n)
从给定的值中任选多个 set(值1,……值n)

   在添加数据的时候,用 "" 标示出来,然后可以并且需要选多个的话,就在 "" 里面写多个然后用 , 分隔标示

猜你喜欢

转载自blog.csdn.net/Yu1543376365/article/details/83065588