MySQL数据库基础(一) MySQL安装及数据类型

目录
一、MySQL数据裤简介
二、MySQL数据的安装
2.1、MySQL安装
2.2、修改MySQL密码登录策略
三、数据库基础管理
3.1、连接方式及数据储存流程
3.2、库管理命令
3.3、表管理命令
3.4、记录管理命令
四、MySQL数据类型
4.1、常见信息种类
4.2、字符型
4.3、数值型
4.4、日期时间型
4.5、枚举型

一、MySQL数据库简介
数据库服务概述
常见的数据库软件
主流操作系统 Unix、Linux、Windows

专业术语
DB (DataBase)
-数据库
-依照某种数据模型进行组织并存放到存储器的数据集合

DBMS(DataBase Mangement System)

  • 数据库管理系统
  • 用来操纵和管理数据库的服务软件

DBS(DataBase System)
-数据库系统:即 DB+ DBMS
-指带有数据库并整合了数据库管理软件的计算机系统

起源与发展
-应用最广泛的开源数据库软件
-一最早隶属于瑞典的MySQL AB公司
-2008年1月,MySQL AB被Sun收购
-2009年4月,SUN被Oracle收购

崭新的开源分支MariaDB
-为应付MySQL可能会闭源的风险而诞生
-由MySQL原作者 Widenius主导开发-与MySQL保持最大程度兼容
-MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

特点及应用
主要特点
-适用于中小规模、关系型数据库系统
-支持Linux、Unix、Windows等多种操作系统
-支持Python、Java、Perl、PHP等编程语言

典型应用环境
-LAMP平台,与Apache HTTP Server组合
-LNMP平台,与Nginx组合

二、MySQL数据的安装
2.1、MySQL安装

准备环境 基本需求
1.创建CentOS系统虚拟机1台
2.配置IP地址192.168.4.150
3.关闭firewalld
4.禁用SELinux
5.配置yum源 安装mysql-server

1 ) 安装MySQL 配置官网的yum源

[root@mysql ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm    #安装官方yum源
[root@mysql ~]# yum clean all
[root@mysql ~]# yum repolist
[root@mysql ~]# yum -y install  mysql-server    #安装MySQL服务端

[root@mysql ~]# rpm -qa |grep mysql
mysql-community-client-8.0.22-1.el7.x86_64      #客户端应用程序
mysql80-community-release-el7-3.noarch          #之前下载的 yum安装包
mysql-community-common-8.0.22-1.el7.x86_64      #数据库和客户端库共享文件
mysql-community-libs-8.0.22-1.el7.x86_64        #数据库客户端应用程序的共享库
mysql-community-client-plugins-8.0.22-1.el7.x86_64
mysql-community-server-8.0.22-1.el7.x86_64      #数据库服务端

[root@mysql ~]# systemctl start  mysqld         #开启服务
[root@mysql ~]# systemctl enable mysqld         #设置开机启动
[root@mysql ~]# systemctl status  mysqld        #查看服务状态
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2020-11-24 14:07:31 CST; 4min 21s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2919 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2991 (mysqld)
   Status: "Server is operational"
   CGroup: /system.slice/mysqld.service
           └─2991 /usr/sbin/mysqld

11月 24 14:07:09 mysql systemd[1]: Starting MySQL Server...
11月 24 14:07:31 mysql systemd[1]: Started MySQL Server.


[root@mysql ~]# ss -anput|grep 3306         #查看服务占用端口
tcp    LISTEN     0      70       :::33060                :::*                   users:(("mysqld",pid=2991,fd=32))
tcp    LISTEN     0      128      :::3306                 :::*                   users:(("mysqld",pid=2991,fd=34))

软件安装后自动创建相关目录文件
主配置文件
-/etc/my.cnf
数据库目录
-/var/lib/mysql
默认端口号: 3306
进程名 mysqld
传输协议 TCP
进程所有者 mysql
进程所属组 mysql
错误日志文件
-/var/log/mysqld.log

2 ) 初始密码登录
数据库管理员名为root

  • 默认仅允许root本机连接
  • 首次登录密码在安装软件时随机生成
  • 随机密码存储在日志文件/var/log/mysqld.log里
  • 连接命令 ]# mysql -h数据库地址 -u用户 -p密码
  • 数据库命令输入默认不支持 Tab键命令补齐,这也进一步增加了数据管理员的难度,在日常的使用管理中,管理员一般会借助第三方的数据库管理软件

常用的数据库管理软件有:
-Workbench
-Navicat

2.2、修改MySQL密码登录策略
案例1:
要求:登陆数据库修改密码策略 设置简单密码

[root@mysql ~]# grep -i 'password' /var/log/mysqld.log      //查看随机密码
2020-11-24T06:07:17.500550Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R-SsjKcfZ4a7
[root@mysql ~]# mysql -u root -p'R-SsjKcfZ4a7'              //登陆mysql
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 8.0.22

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>                                               //登录成功后,进入SQL操作环境
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.    #提示需要修改默认密码

修改root密码
-具体操作如下
-使用alter user命令修改登录密码―新密码必须满足密码策略
修改登陆密码方法如下:

mysql> alter user root@"localhost " identified by“密码";

连接MySQL服务器时,最基本的用法是通过 -u 选项指定用户名、-p指定密码。密码
可以写在命令行(如果不写,则出现交互,要求用户输入),当然基于安全考虑一般
不推荐这么做:所以以下明文密码会有警告!
[Warning] Using a password on the command line interface can be insecure.

mysql> alter user root@"localhost" identified by "123AAA...b";     //修改密码
Query OK, 0 rows affected (0.03 sec)
mysql> exit               //退出数据库 或使用 quit
Bye

[root@mysql ~]# mysql -u root -p'123AAA...b'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

3 ) 修改密码策略
为了方便后面的演示,输入密码不用太复杂设置一个简单的密码 默认数据库是有密码复杂度要求的

临时生效 服务重启后失效

mysql> set global validate_password.policy=0;      //只验证长度
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.length=6;     //修改密码长度为6位,默认为8位
Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@"localhost" identified by "123456";    //修改密码为123456
Query OK, 0 rows affected (0.04 sec)

mysql> exit
Bye

修改配置文伯 永久性生效

[root@mysql ~]# vim /etc/my.cnf    
[mysqld]                         //在mysqld后面添加这两行
validate_password.policy=0 
validate_password.length=6
[root@mysql ~]# systemctl restart mysqld

[root@mysql ~]# mysql -u root -p123456          //登陆MySQL
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show  databases;             //显示已有的库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.06 sec)
mysql> 

三、数据库基础管理
3.1、连接方式及数据储存流程

客户端连接MySQL服务的方法
1.命令行
2.web页面
3.安装图形软件
4.编写脚本( php、Java、python.....)

-使用 mysql 命令登录
mysql -h服务器IP -u用户名 -p密码「数据库名]
-quit或exit退出

数据存储流程
客户端把数据存储到数据库服务器上的步骤
1.连接数据库服务器
2.建库 //类似于文件夹
3.建表 //类似于文件
4.插入记录 //类似于文件内容
5.断开连接

SQL命令使用规则

  • SQL命令不区分字母大小写(密码、变量值除外)
  • 每条SQL命令以 ; 结束
  • 默认命令不支持Tab键自动补齐
  • \c 终止sql命令

MySQL管理环境(续1)
常用的SQL命令分类
管理数据库使用SQL(结构化查询语言)
1.DDL数据定义语言 如:create、alter、drop
2.DML数据操作语言 如:insert、update、delete
3.DCL数据控制语言 如:grant、revoke
4.DTL数据事物语言 如:commit、rollback、savepoint

3.2、库管理命令
库管理命令

  • 库类似于文件夹,用来存储表
  • 可以创建多个库,通过库名区分
  • show databases; #显示已有的库
  • select user( ); #显示连接用户
  • use 库名; #切换库
  • select database( ); #显示当前所在的库
  • create database 库名; #创建新库
  • show tables; #显示已有的表
  • drop database 库名; #删除库

库管理命令(续1)
库名命名规则

  • 仅可以使用数字、字母、下划线、不能纯数字
  • 区分字母大小写,具有唯一性
  • 不可使用指令关键字、特殊字符
mysql> create database DB1;
Query OK, 1 row affected (0.03 sec)

mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.04 sec)

3.3、表管理命令
·建表
-表存储数据的文件。
Mysql> create table 库名.表名(
字段名1 类型(宽度),
字段名2 类型(宽度),
......
)DEFAULT CHARSET=utf8; #指定中文字符集,可以给字段赋值中文

mysql> create table db1.stuinfo(
name char(15),
homeaddr char(20)

表管理命令(续1)

  • 表类似于文件,
  • desc库名.表名; #查看表结构
  • drop table库名.表名; #删除表

3.4、记录管理命令

  • 记录类似于文件里的行
  • select * from库名.表名; #查看表记录
  • insert into库名.表名 values(值列表); #插入表记录
  • update 库名.表名 set字段=值; #修改表记录
  • delete from表名; #删除表记录
mysq> insert into db1.stuinfo values("jim" ;" usa"),("lilei" , "china");
mysql> select * from db1.stuinfo;
Mysql> update db1.stuinfo set homeaddr= "beijing" ;

案例2∶数据库基本管理
1.使用mysql命令连接数据库 新建如下表格
2.练习库管理命令(查看、删除、创建库、切换)
3.练习表管理命令(查看、删除、创建表)
4.练习记录管理命令(插入、查看、修改、删除)

1 ) 使用mysql命令连接数据库,练习查看现在的库

[root@mysql ~]# mysql -u root -p123456
mysql> show  databases;
+--------------------+
| Database           |
+--------------------+
| DB1                |
| db1                |
| information_schema |           //信息概要库
| mysql              |           //授权库
| performance_schema |           //性能结构库
| sys                |           //系统元数据库
+--------------------+
6 rows in set (0.06 sec)

2)切换/使用指定的库

mysql> use sys;    //切换到sys库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select database();    //确认当前所在的库
+------------+
| database() |
+------------+
| sys        |
+------------+
1 row in set (0.00 sec)

mysql> use mysql;   //切换到mysql库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select database();   //确认当前所在的库
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

3)新建名为newdb的库,确认结果

mysql> create database newdb;     //新建名为newdb的库
Query OK, 1 row affected (0.03 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| DB1                |
| db1                |
| information_schema |
| mysql              |   
| newdb              |   //新建的newdb库
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.01 sec)

4)删除指定的库

mysql> drop database newdb;   //删除名为newdb的库
Query OK, 0 rows affected (0.02 sec)
 
mysql> show databases;    //确认删除结果,已无newdb库
+--------------------+
| Database           |
+--------------------+
| DB1                |
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

5)查看指定的库里有哪些表

mysql> use mysql
Database changed
mysql> use mysql;
Database changed
mysql> show tables;
+----------------------------------------------+
| Tables_in_mysql                              |
+----------------------------------------------+
| columns_priv                                 |
| component                                    |
| db                                           |
| default_roles                                |
| engine_cost                                  |
| func                                         |
| general_log                                  |
| global_grants                                |
| gtid_executed                                |
| help_category                                |
| help_keyword                                 |
| help_relation                                |
| help_topic                                   |
| innodb_index_stats                           |
| innodb_table_stats                           |
| password_history                             |
| plugin                                       |
| procs_priv                                   |
| proxies_priv                                 |
| replication_asynchronous_connection_failover |
| role_edges                                   |
| server_cost                                  |
| servers                                      |
| slave_master_info                            |
| slave_relay_log_info                         |
| slave_worker_info                            |
| slow_log                                     |
| tables_priv                                  |
| time_zone                                    |
| time_zone_leap_second                        |
| time_zone_name                               |
| time_zone_transition                         |
| time_zone_transition_type                    |
| user                                         |     //存放数据库用户的表
+----------------------------------------------+
34 rows in set (0.00 sec)

6)查看指定表的字段结构
当前库为mysql,查看columns_priv表的结构,以列表形式展现

mysql> desc columns_priv\G
*************************** 1. row ***************************
  Field: Host
   Type: char(255)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 2. row ***************************
  Field: Db
   Type: char(64)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 3. row ***************************
  Field: User
   Type: char(32)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 4. row ***************************
  Field: Table_name
   Type: char(64)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 5. row ***************************
  Field: Column_name
   Type: char(64)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 6. row ***************************
  Field: Timestamp
   Type: timestamp
   Null: NO
    Key: 
Default: CURRENT_TIMESTAMP
  Extra: DEFAULT_GENERATED on update CURRENT_TIMESTAMP
*************************** 7. row ***************************
  Field: Column_priv
   Type: set('Select','Insert','Update','References')
   Null: NO
    Key: 
Default: 
  Extra: 
7 rows in set (0.00 sec)

查看columns_priv表的结构,以表格形式展现

mysql> desc columns_priv;     //查看表结构,以表格形式展现末尾需要有分号
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
| Field       | Type                                         | Null | Key | Default           | Extra                                         |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
| Host        | char(255)                                    | NO   | PRI |                   |                                               |
| Db          | char(64)                                     | NO   | PRI |                   |                                               |
| User        | char(32)                                     | NO   | PRI |                   |                                               |
| Table_name  | char(64)                                     | NO   | PRI |                   |                                               |
| Column_name | char(64)                                     | NO   | PRI |                   |                                               |
| Timestamp   | timestamp                                    | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
| Column_priv | set('Select','Insert','Update','References') | NO   |     |                   |                                               |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
7 rows in set (0.00 sec)

上述操作中,当引用非当前库中的表时,可以用“库名.表名”的形式。比如,切换
为mysql库再执行“desc columns_priv;”,与以下操作的效果是相同的:

mysql> desc mysql.columns_priv;
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
| Field       | Type                                         | Null | Key | Default           | Extra                                         |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
| Host        | char(255)                                    | NO   | PRI |                   |                                               |
| Db          | char(64)                                     | NO   | PRI |                   |                                               |
| User        | char(32)                                     | NO   | PRI |                   |                                               |
| Table_name  | char(64)                                     | NO   | PRI |                   |                                               |
| Column_name | char(64)                                     | NO   | PRI |                   |                                               |
| Timestamp   | timestamp                                    | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
| Column_priv | set('Select','Insert','Update','References') | NO   |     |                   |                                               |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------------------------+
7 rows in set (0.00 sec)

在mydb库中创建一个名为pwlist的表

mysql> create database mydb;
Query OK, 1 row affected (0.28 sec)

mysql> use mydb
Database changed

mysql> create table pwlist(                 
    -> name char(16) not null,
    -> password char(48)default'',
    -> primary key(name)
    -> );
Query OK, 0 rows affected (0.39 sec)

mysql> show tables;     //查看新建的表单
+----------------+
| Tables_in_mydb |
+----------------+
| pwlist         |
+----------------+
1 row in set (0.01 sec)

mysql> desc pwlist;     //查看pwlist表的字段结构
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(16) | NO   | PRI | NULL    |       |
| password | char(48) | YES  |     |         |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> drop table pwlist;   //删除当前库中的pwlist表
Query OK, 0 rows affected (0.11 sec)

案例3:
在mydb库中创建一个学员表
在MySQL表内存储中文数据时,需要更改字符集(默认为latin1不支持中文),以便
MySQL支持存储中文数据记录;比如,可以在创建库或表的时候,手动添加“DEFAULT
CHARSET=utf8”来更改字符集。
根据上述表格结构,创建支持中文的student表:

mysql> create table mydb.student( 
    -> 学号 char(9) NOT NULL,
    -> 姓名 varchar(4) NOT NULL,
    -> 性别 enum('男','女') NOT NULL,
    -> 手机号 char(11) DEFAULT'',
    -> 通信地址 varchar(64),
    -> PRIMARY KEY(学号)
    -> )DEFAULT CHARSET=utf8;   //手工指定字符集,采用utf8
Query OK, 0 rows affected, 1 warning (0.04 sec)

mysql> DESC mydb.student;   //查看student表的字段结构
+--------------+-------------------+------+-----+---------+-------+
| Field        | Type              | Null | Key | Default | Extra |
+--------------+-------------------+------+-----+---------+-------+
| 学号         | char(9)           | NO   | PRI | NULL    |       |
| 姓名         | varchar(4)        | NO   |     | NULL    |       |
| 性别         | enum('男','女')   | NO   |     | NULL    |       |
| 手机号       | char(11)          | YES  |     |         |       |
| 通信地址     | varchar(64)       | YES  |     | NULL    |       |
+--------------+-------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> show create table mydb.student;   //查看student表的实际创建指令:
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                             |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `学号` char(9) NOT NULL,
  `姓名` varchar(4) NOT NULL,
  `性别` enum('男','女') NOT NULL,
  `手机号` char(11) DEFAULT '',
  `通信地址` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`学号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8                  |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> exit

注意:若要修改MySQL服务的默认字符集,可以更改服务器的my.cnf配置文件,添加
character_set_server=utf8 配置,然后重启数据库服务。

[root@mysql ~]# cat /etc/my.cnf
[mysqld]
......
character_set_server=utf8    //添加默认字符集

[root@mysql ~]# systemctl restart mysqld    //重启服务
[root@mysql ~]# mysql -u root -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like 'character%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8                           |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8                           |          //修改成功
| character_set_system     | utf8                           | 
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)

四、MySQL数据类型
4.1、常见信息种类

  • 数值型∶体重、身高、成绩、工资
  • 字符型:姓名、工作单位、通信住址
  • 枚举型:兴趣爱好、性别、专业
  • 日期时间型:出生日期、注册时间

4.2、字符型
定长char

  • 定长:char(字符个数)
  • 最大字符个数255
  • 不够指定字符个数时在右边用空格补全
  • 字符个数超出时,无法写入数据。
mysql> create table db1.t1(
    -> name char(5),
    -> homedir char(50)
    -> );
Query OK, 0 rows affected (0.42 sec)
mysql> insert into db1.t1 values("bob","USA");

变长varchar

  • 变长: varchar(字符个数)
  • 按数据实际大小分配存储空间
  • 字符个数超出时,无法写入数据。·大文本类型: text/blob
  • 字符数大于65535存储时使用
mysql> create table db1.t7(
    -> name char(5),
    -> email varchar(30)
    -> );
Query OK, 0 rows affected (0.44 sec)
mysql> insert into db1.t7 values("lucy","luck@163.com");

案例4:
按照如下结构建表:

mysql> desc db1.t3;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | char(5)     | YES  |     | NULL    |       |
| mail    | varchar(10) | YES  |     | NULL    |       |
| homedie | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

1)新建db1库,并切换到db1库

mysql> create database db1;
Query OK, 1 row affected (0.02 sec)

mysql> use db1;
Database changed

2)新建t3表

mysql> create table db1.t3(
    -> name char(5),
    -> mail varchar(10),
    -> homedie varchar(50)
    -> );
Query OK, 0 rows affected (0.11 sec)
  1. 查看a3表结构
mysql> desc db1.t3;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | char(5)     | YES  |     | NULL    |       |
| mail    | varchar(10) | YES  |     | NULL    |       |
| homedie | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

4.3、数值型
整数型

只能存储整数

浮点型·浮点型
-格式1∶字段名类型;
-格式2∶字段名类型(总宽度,小数位数)

案例5
要求:按照 下图所示建表

mysql> desc db1.t2;
+---------+------------+------+-----+---------+-------+
| Field   | Type       | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| stu_num | int        | YES  |     | NULL    |       |
| name    | char(5)    | YES  |     | NULL    |       |
| age     | tinyint    | YES  |     | NULL    |       |
| pay     | float      | YES  |     | NULL    |       |
| money   | float(5,2) | YES  |     | NULL    |       |
+---------+------------+------+-----+---------+-------+

1)创建t2表

mysql> use db1;
Database changed
mysql> create table db1.t2(
    -> stu_num int,
    -> name char(5),
    -> age tinyint,
    -> pay float,
    -> money float(5,2)
    -> );
Query OK, 0 rows affected, 1 warning (0.07 sec)
  1. 查看t2表结构
mysql> desc db1.t2;
+---------+------------+------+-----+---------+-------+
| Field   | Type       | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| stu_num | int        | YES  |     | NULL    |       |
| name    | char(5)    | YES  |     | NULL    |       |
| age     | tinyint    | YES  |     | NULL    |       |
| pay     | float      | YES  |     | NULL    |       |
| money   | float(5,2) | YES  |     | NULL    |       |
+---------+------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

4.4、日期时间型
类型
日期时间 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

类型(续1)
日期date

-范围:0001-01-01 ~ 9999-12-31
-格式:yyyymmdd

年year
-范围:1901~2155
-格式:yyyy

时间time
-格式:HH:MM:SS

类型(续2)
关于日期时间字段
-当未给timestamp字段赋值时,自动以当前系统时间赋值,而datetime值为NULL(空)

year类型
-要求使用4位数赋值
-当使用2位数赋值时:

  • 01~69视为 2001~2069
  • 7099视为19701999

时间函数
· MySQL服务内置命令
一可以使用时间函数给字段赋值


案例6:
要求:
练习如下时间函数的使用:
now( ) year( ) month( ) day( ) date( ) time( )
curtime( ) curdate( )
按照如下图所示建表

mysql> desc db1.t4;
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| name       | char(10) | YES  |     | NULL    |       |
| your_start | year     | YES  |     | NULL    |       |
| up_time    | time     | YES  |     | NULL    |       |
| birthday   | date     | YES  |     | NULL    |       |
| party      | datetime | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+

1)练习如下命令的使用 now( ) year( ) month( ) day( ) date( ) time( )

mysql> select now();   //使用now()查看当前的日期和时间
+---------------------+
| now()               |
+---------------------+
| 2020-11-25 15:18:08 |
+---------------------+
1 row in set (0.00 sec)

mysql> select curdate();  //使用curdate()获得当前的日期
+------------+
| curdate()  |
+------------+
| 2020-11-25 |
+------------+
1 row in set (0.00 sec)

mysql> select curtime();  //使用curtime()获得当前的时间
+-----------+
| curtime() |
+-----------+
| 15:18:41  |
+-----------+
1 row in set (0.00 sec)

mysql> select year(now()),month(now()),day(now());  //分别获取当前日期时间中的年份、月份、日
+-------------+--------------+------------+
| year(now()) | month(now()) | day(now()) |
+-------------+--------------+------------+
|        2020 |           11 |         25 |
+-------------+--------------+------------+
1 row in set (0.00 sec)

mysql> select date(now()) ;  //获取系统日期
+-------------+
| date(now()) |
+-------------+
| 2020-11-25  |
+-------------+
1 row in set (0.00 sec)

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2020-11-25  |
+-------------+
1 row in set (0.01 sec)

2)创建t4表 建表

mysql> create table db1.t4(
    -> name char(10),
    -> your_start year,
    -> up_time time,
    -> birthday date,
    -> party datetime
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> desc db1.t4;    //查看表结构
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| name       | char(10) | YES  |     | NULL    |       |
| your_start | year     | YES  |     | NULL    |       |
| up_time    | time     | YES  |     | NULL    |       |
| birthday   | date     | YES  |     | NULL    |       |
| party      | datetime | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+
5 rows in set (0.01 sec)

mysql> insert into db1.t4 values("bob",1990,083000,20191120,20190828200000);    //插入记录
Query OK, 1 row affected (0.29 sec)

mysql> insert into db1.t4 values("tom",1991,090000,20191120,now());
Query OK, 1 row affected (0.26 sec)

mysql> select * from db1.t4;   //查看表所有列名的集合
+------+------------+----------+------------+---------------------+
| name | your_start | up_time  | birthday   | party               |
+------+------------+----------+------------+---------------------+
| bob  |       1990 | 08:30:00 | 2019-11-20 | 2019-08-28 20:00:00 |
| tom  |       1991 | 09:00:00 | 2019-11-20 | 2020-11-25 15:37:26 |
+------+------------+----------+------------+---------------------+
2 rows in set (0.00 sec)

mysql> select name  from db1.t4;  //查看表name列记录
+------+
| name |
+------+
| bob  |
| tom  |
+------+
2 rows in set (0.00 sec)

mysql> 

4.5、枚举型
enum

  • enum单选︰
  • 格式∶字段名enum(值1,值2,值N)
  • 仅能选择一个值
  • 字段值必须在列表里选择

set 多选:
-格式:字段名set(值1,值2,值N)
-选择一个或多个值
-字段值必须在列表里选择

案例7:
要示 按照如下图所示建表

mysql> desc db1.t5;
+-------+----------------------------------+------+-----+---------+-------+
| 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    |       |
+-------+----------------------------------+------+-----+---------+-------+

1)创建t5表

mysql> create table db1.t5(
    -> name char(5),
    -> likes set("eat","game","film","music"),
    -> sex enum("boy","girl","no")
    -> );
Query OK, 0 rows affected (0.30 sec)

2)查看表结构

mysql> desc db1.t5;
+-------+----------------------------------+------+-----+---------+-------+
| 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.00 sec)

3)插入表记录

mysql> insert into db1.t5 values("bob","eat,film,game","boy");
Query OK, 1 row affected (0.02 sec)

mysql> select * from db1.t5;
+------+---------------+------+
| name | likes         | sex  |
+------+---------------+------+
| bob  | eat,game,film | boy  |
+------+---------------+------+
1 row in set (0.00 sec)
最后编辑于:2024-10-27 16:14:22


喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911677.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《现代工业经济和信息化》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《现代工业经济和信息化》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《现代工业经济和信息化》级别? 答:省级。主管单位:山西省工业和…

SpringCloudAlibabaSidecar整合异构微服务

Spring Cloud Alibaba Sidecar概述 这里引用官方文档的原话: spring-cloud-starter-alibaba-sidecar 是一个用来快速完美整合(享受服务发现的优势、有负载均衡、有断路器) Spring Cloud 与异构微服务(非Spring Cloud应用&#xf…

Vue 组件传递数据-Props(六)

一、Props传递静态数据 defineProps() 和 defineEmits() 为了在声明 props 和 emits 选项时获得完整的类型推导支持&#xff0c;我们可以使用 defineProps 和 defineEmits API&#xff0c;它们将自动地在 <script setup> 中可用&#xff1a; defineProps 和 defineEmits …

SpringBoot源码解析(三)

一、手写模拟springboot核心流程 前面两章内容已经详细解释了springboot的核心原理与启动流程&#xff0c;本章通过手写模拟实现一个SpringBoot&#xff0c;让大家能以非常简单的方式就能知道SpringBoot大概是如何工作的&#xff0c;作为对上两章内容的一个巩固。 一、模拟Sp…

Python实战:调用淘宝API以抓取商品页面数据

在数据驱动的商业决策中&#xff0c;获取电商平台的商品数据至关重要。淘宝作为中国最大的在线购物平台&#xff0c;其商品数据对于市场分析、价格监控和竞品研究等方面都具有极高的价值。本文将通过一个Python实战案例&#xff0c;展示如何调用淘宝API来抓取商品页面的数据。 …

STL---迭代器

本文来源&#xff1a;《C语言程序设计》第10章 理解迭代器对于理解STL框架并掌握STL的使用至关重要。 迭代器是泛化的指针&#xff0c;STL算法利用迭代器对存储在容器中的元素序列进行遍历&#xff0c;迭代器提供了访问容器中每个元素的方法。 虽然指针也是一种迭代器&#…

设计模式-七个基本原则之一-单一职责原则 + SpringBoot案例

单一职责原理:(SRP) 面向对象七个基本原则之一 清晰的职责&#xff1a;每个类应该有一个明确的职责&#xff0c;避免将多个责任混合在一起。降低耦合&#xff1a;通过将不同的职责分开&#xff0c;可以降低类之间的耦合度&#xff0c;提高系统的灵活性。易于维护&#xff1a;当…

京东AI单旋旋转验证码98准确率通杀方案

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文滑块识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/12 京东单旋验证码最近更新了,使用AI生成,要求识别角度,以下是部分数据集: 接下…

playground.tensorflow神经网络可视化工具

playground.tensorflow 是一个可视化工具&#xff0c;用于帮助用户理解深度学习和神经网络的基本原理。它通过交互式界面使用户能够构建、训练和可视化简单的神经网络模型。以下是一些主要的数学模型和公式原理&#xff0c;它们在这个平台中被应用&#xff1a; 1. 线性模型 线…

[vulnhub] DarkHole: 2

https://www.vulnhub.com/entry/darkhole-2,740/ 端口扫描主机发现 探测存活主机&#xff0c;185是靶机 # nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 18:02 CST Nmap scan report for 192.168.75.1 Host is up (0.…

【开源免费】基于SpringBoot+Vue.JS宠物咖啡馆平台(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 064 &#xff0c;文末自助获取源码 \color{red}{T064&#xff0c;文末自助获取源码} T064&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

移动取证和 Android 安全

当今的数字时代已经产生了许多技术进步&#xff0c;无论是智能手机还是虚拟现实、人工智能和物联网 (IoT) 等下一代基础技术。 智能手机已不再只是奢侈品&#xff0c;而是我们生存所必需的东西。根据各种统计数据&#xff0c;如今全球有超过 50% 的人使用手机。 由于数据存储…

C++builder中的人工智能(14):修正线性单元(ReLU)激活函数

这篇文章将解释在人工神经网络&#xff08;ANN&#xff09;中修正线性函数&#xff08; Rectified Linear Function&#xff09;是什么&#xff0c;以及如何使用ReLU激活函数。让我们回顾一下激活函数的概念&#xff0c;并定义这些术语。学习修正线性函数对于使用C软件编写程序…

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

05 SQL炼金术:深入探索与实战优化

文章目录 SQL炼金术&#xff1a;深入探索与实战优化一、SQL解析与执行计划1.1 获取执行计划1.2 解读执行计划 二、统计信息与执行上下文2.1 收集统计信息2.2 执行上下文 三、SQL优化工具与实战3.1 SQL Profile3.2 Hint3.3 Plan Baselines3.4 实战优化示例 SQL炼金术&#xff1a…

MySQL_第13章_视图

1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图&#xff1f; 视图一方面可以使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。 2.2 视图的理解 视图是一种虚拟表&#xff0c;本身是不具有数据的&#xff0c;占用很少的内存…

【代码随想录day24】【C++复健】93.复原IP地址; 78.子集 ;90.子集II

今天写代码的时候整体状态其实就不太好&#xff0c;整个人晕晕的&#xff0c;好多时候写出来的代码也是多少带点愚蠢。 93.复原IP地址 看卡哥说“大家做完 分割回文串 之后&#xff0c;本题就容易很多了”还以为是秒杀题呢&#xff0c;结果直接被卡住。怎么说呢&#xff0c;…

Vue:条件渲染 列表渲染

Vue&#xff1a;条件渲染 & 列表渲染 条件渲染v-showv-if 列表渲染v-for数组对象 条件渲染 Vue允许依据一定的条件&#xff0c;通过表达式的布尔值&#xff0c;来决定是否渲染某些元素&#xff0c;其依赖于v-show和v-if两条指令。 v-show v-show可以依据表达式的布尔值&…

计算机的错误计算(一百四十八)

摘要 本节探讨 MATLAB 中 附近数的正割函数与 附近数的余割函数的计算精度问题。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 0.4105556037464873e9、0.3670813182326778e13、-0.2549029285657875e8 与 -0.1248777628817462e12&am…

input file检验成功之后才可以点击

input file检验成功之后才可以点击 需求 在上传发票前需要先填写发票号&#xff0c;然后点击选择文件直接完成上传功能 实现思路 在没有输入发票号之前&#xff0c;file按钮不可用不能点击&#xff0c;输入之后&#xff0c;按钮可用&#xff0c;点击之后选择文件&#xff…