数据库01

一、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)

 

原文地址:https://www.cnblogs.com/zhanglei97/p/11581244.html