Mysql数据库学习(一)数据库搭建、数据类型

0基础的数据库系统学习笔记

数据库服务概述 、 构建MySQL服务 、 数据库基本管理 、 MySQL数据类型
linux系统下mysql数据库的安装
需要自己找到mysql安装装包并解压(我用的包的mysql-5.7.17,提取码和连接是链接:https://pan.baidu.com/s/1U3_jfOIApMwIpAXPWcBgIQ
提取码:tty1

1.1 启动服务
systemctl start mysqld
systemctl enable mysqld
1.2 查看初始登录密码
grep -i ‘password’ /var/log/mysqld.log
1.3 使用初始密码登录,修改登录密码
登录:mysql -uroot -p"初始密码" -hlocalhost
修改密码: alter user root@“localhost” identified by “123…qqqA”
1.4 断开连接
exit
1.5 使用修改的密码登录
mysql -uroot -p123…qqqA

服务启动成功但没有过滤出来 初始登录密码怎么办?
rpm -qa  | grep -i mysql
systemctl  status mysqld  服务是运行的
systemctl  stop  mysqld
rm -rf /var/lib/mysql/*
setenforce 0
systemctl  start  mysqld
grep  password  /var/log/mysqld.log | tail -1 

1.6修改MySQL服务的密码策略, 默认密码策略等级1
修改密码等级:
set global validate_password_policy=0
set global validate_password_length=6
命令行修改临时有效 修改配置文件永久有效
vim /etc/my.cnf (在[mysqld]下添加上面两行然后重启服务即可)

2.MySQL数据库服务的基本使用

2.1 连接数据库服务的连接件方式: 命令行连接 图形工具连接 脚本连接

2.2 把数据存储到数据库服务器上的过程?
1 连接 2 创建库 3 创建表(文件) 4 存储数据 5 断开连接

2.3 SQL命令的使用规则(结构化查询语言)
操作指令不区分大小写(库名/表名、密码、变量值等除外)。
每条SQL指令以 ; 结束或分隔。
不支持 Tab 键自动补齐。
\c 可废弃当前编写错的操作指令。(或者ctrl c)

2.4 库的管理命令
查看库:show databases;
切换库:use 库名;
创建库:create database 库名;
删除库:drop database 库名;
查询当前在哪个库里:select database();

2.5 表的管理命令
查看表:show tables;
查看表头结构:desc 库名.表名;
创建表:create table 库名.表名 (name char(10),old int,address char(10));
表中插入数据:insert into 库名.表名 values (“孙悟空” , “花果山” ),(“张三丰”," 武当山");
查询表信息:select * from 库名.表名;
更新表中某一列内容:update 库名.表名 set 某一列表头=“修改后的内容”; (引号根据类型如char int来选择加或者不加)
删除某一行内容delete from 库名.表名 where 某一列表头=“修改后的内容”;
删除表:drop table 库名.表名;
查看表的实际创建指令:show create table 库名.表名;
建表时指定表使用的字符集 :create table 库名.表名 (name char(10),old int,address char(10))default charset=utf8;
字符集 汉字的集合 gb2312 utf8

一些例子:
create database gamedb;
create table gamedb.信息(姓名 char(15) , 地址 char(50) )DEFAULT CHARSET=utf8;
desc gamedb.信息;
show create table gamedb.信息 ;
insert into gamedb.信息 values (“孙悟空” , “花果山” ),(“张三丰”," 武当山");
select * from gamedb.信息;

三 MySQL数据类型
第一:字符类型 (存储英文字母或汉语拼音 或 汉字)
char 定长(固定长度,插入值时长度不够用空格补充)
varchar 变长 (长度可以变化,插入值时长度不够情况下不会补充,插入多少就是多少)

插入的值的长度不能超过定义时候的长度:
create table t8 (name varchar(3) , class char(7),mail varchar(30));
mysql> insert into t8 values (“lucy”,“nsd2010”,“plj@tedu.cn”);
ERROR 1406 (22001): Data too long for column ‘name’ at row 1

mysql> insert into t8 values (“jim”,“nsd2010”,“plj@tedu.cn”);
mysql> insert into t8 values (“ab”,“nsd2010”,“plj@tedu.cn”);

第二:大文本类型 (图片 视频 音频)
blob
text
可以定义大文本类型但是一般数据库不会使用这种:
mysql> create table t4(name blob);
Query OK, 0 rows affected (0.01 sec)

mysql> create table t5(name text);
Query OK, 0 rows affected (0.03 sec)

第三:数值类型:
整数数值类型(根据存储数值的范围又分为了以下几种:
微小整型 小整型 中整型 大整型 极大整型
tinyint smallint mediumint int bigint
unsigned 使用无符号存储范围(无符号存储范围均为正数)

创建表:
create table db1.t14(name char(10) , age tinyint unsigned , gz int);
查看表头信息:
mysql> desc db1.t14;

使用tinyint unsigned无符号存储时最大值为255 318大于255就会报错:
mysql> insert into db1.t14 values (“lucy”, 318 , 50000);
ERROR 1264 (22003): Out of range value for column ‘age’ at row 1

使用tinyint unsigned无符号存储时均为正数所以填-1就会报错:
mysql> insert into db1.t14 values (“lucy”, -1 , 50000);
ERROR 1264 (22003): Out of range value for column ‘age’ at row 1

用整数数值类型写小数时会四舍五入取整:
mysql> insert into db1.t14 values (“lucy”, 118 , 50000);
mysql> insert into db1.t14 values (“jerry”, 19.5 , 45000.88);
mysql> insert into db1.t14 values (“jerryB”, 19.4 , 45000.23);

第四: 浮点型(小数)数值类型 (能够存储有小数点的数)
float 单精度(精度低一般建议后两位)
double 双精度(精度高)
mysql> create table t13(name char(10) , gz float , jiangjin double );
mysql> insert into t13 values (“bob”,2088.23 , 280.79);
mysql> insert into t13 values (“lucy”,-2088.23 , -280.79);
mysql> select * from t13;

小数点后有多个小数位是建议使用double存储
mysql> create table t12 (name char(10) , pai double ) ;
mysql> insert into t12 values (“zhangzj” , 3.1415926);
mysql> insert into t12 values (“zhangzj” , 3.1415927);
mysql> select * from t12;
±--------±----------+
| name | pai |
±--------±----------+
| zhangzj | 3.1415926 |
| zhangzj | 3.1415927 |
±--------±----------+

	使用float类型时可以设置小数位的位数

create table t11 (name char(10) , gz float(5,2) );
mysql> insert into t11 values(“jerry”,987);
mysql> insert into t11 values(“lilei”,887.229);
mysql> insert into t11 values(“john”,1888.22);
ERROR 1264 (22003): Out of range value for column ‘gz’ at row 1

	字段名  float(数字1,数字2)
	数字1  : 总位数
    数字2  : 小数位数

第五:日期时间类型 :
年 year YYYY 2021
日期 date YYYYMMDD 20210115
时间 time HHMMSS 203455 或 082312
日期时间 datetime 或 timestamp YYYYMMDDHHMMSS 20210115101648
例子:
mysql> create table t10(name char(10) , csnf year , sksj time , birthday date , party datetime );
mysql> insert into t10 values (“bob”,1990,090000,20211120,20210214223000);

mysql> select * from t10;
±-----±-----±---------±-----------±--------------------+
| name | csnf | sksj | birthday | party |
±-----±-----±---------±-----------±--------------------+
| bob | 1990 | 09:00:00 | 2021-11-20 | 2021-02-14 22:30:00 |
±-----±-----±---------±-----------±--------------------+
1 row in set (0.00 sec)

时间函数的使用 (MySQL服务自带 获取系统时间的命令 可以使用命令的获取结果是列赋值)
select now();
select curtime();
select curdate();
select year(now());
select date(now());
select day(now());
select month(now());
select time(now());
select hour(now());
mysql> insert into t10 values (“jerry”, year(now()) , time(now()) , date(now()) , now() );

year类型的使用 使用2位数也可以赋值 但会自动补全4位(1-69前面补全20,70-99前面补全19)
mysql> insert into t10(name , csnf ) values (“tom”,23);
mysql> insert into t10(name , csnf ) values (“lucy”,88);
MySQL> select * from t10;

datetime 与timestamp类型的区别
不给予timestamp赋值时,它会自动把当前系统时间写到表里:
mysql> create table t9 (meetting datetime , party timestamp );
mysql> insert into t9 values (20210219103000, 20210120183000);
mysql> insert into t9(meetting) values(20191211221418);
mysql> insert into t9(party) values(20150303152817);
mysql> select * from t9;
±--------------------±--------------------+
| meetting | party |
±--------------------±--------------------+
| 2021-02-19 10:30:00 | 2021-01-20 18:30:00 |
| 2019-12-11 22:14:18 | 2021-01-15 04:11:19 |
| NULL | 2015-03-03 15:28:17 |
±--------------------±--------------------+

第六:枚举类型 (给表头存储数据时,数据必须在列举的范围内选择)
单选类型 enum
多选类型 set
枚举类型为单选和多选两种:
mysql> create database db1;
mysql> create table db1.t15(name char(10), sex enum(“m”,“w”,“n”), likes set(“girl”,“money”,“sleep”,“eat”) );
mysql> desc db1.t15;

插入数据时填的值必须是建表时写的值否则报错(enum插入数据时也可以填写1 或者2 或者3 分别代表m w n 三个值)
mysql> insert into db1.t15 values (“bob”,“woman”,“sleep,eat,money”);
ERROR 1265 (01000): Data truncated for column ‘sex’ at row 1
mysql> insert into db1.t15 values (“bob”,“w”,“sleep,eat,money”);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值