MySQL数据库服务+基本指令+数据类型

一.数据库服务

1.数据库

  • CPU —>内存 —>磁盘 —>数据库
  • 存放数据的数据: 元数据metadata(数据的描述信息)

2.常用软件SQL & NOSQL

  • 主流操作系统: Unix、Linux、Windows
  • SQL: 关系型数据库
    MySQL、Oracle、SQL server、DB2
  • NOSQL: 基于内存的数据库
    Redis、Memcached、Mongodb

3.术语

  • DB:数据库
  • DBMS:数据库管理系统
  • DBS:数据库系统(DB+DBMS)

4.MySQL

  • Mysql:
    -应用最广泛的开源数据库软件
    -适用于中小规模、关系型数据库系统
    -应用于: LAMP或LNMP平台
  • Mariadb:
    -为应付MySQL可能会闭源的风险而诞生
    -与mysql保持最大程度兼容

二.构建Mysql服务器

1.基础环境

主机名称: mysql50					eth0网卡:192.168.4.50
真机软件包: mysql-5.7.17.tar			关闭防火墙、SELinux
官网rpm包: http://dev.mysql.com/downloads/mysql

2.步骤

01.安装mysql软件包

tar -xf mysql-5.7.17.tar
yum -y install *.rpm

02.启动mysqld服务

systemctl  start/enable  mysqld
systemctl status mysqld 
ss -anptu |grep :3306		ps -C mysqld	#查进程

03.mysql主要参数

在这里插入图片描述

04.配置MySQL管理员(默认root)密码

  • 首次启动服务,mysql会自动为root账户配置随机密码
grep password /var/log/mysqld.log		#日志查询随机密码
  • 密码策略参数:
    在这里插入图片描述
mysql -uroot  -p'密码'		        #使用随机密码登录,修改密码
>set global validate_password_policy=0;		#只验证长度
>set global validate_password_length=6;     #修改密码默认长度6
>alter user user() identified by "123456";	#修改登陆密码
#永久设置:
vim /etc/my.cnf
	[mysqld]
	validate_password_policy=0
	validate_password_length=6

三.Mysql数据库基本管理

1.数据库操作基本流程

	-连接登陆数据库	-创建数据库	-创建数据表	
    -插入数据记		-断开连接
  • 连接 MySQL 的方法:
    命令行、Web 网页(phpmysqladmin)、安装图形软件(navicat)、编写脚本(PHP、java…)
  • 命令:
mysql [-h服务器IP或域名 -u用户名 -p密码 数据库名称]
如: mysql -h127.0.0.1 -uroot
quit 或者 exit 退出数据库
  • mysql注意事项:
    操作指令不区分大小写(密码和变量除外)
    每条SQL语句都以分号;结束
    默认不支持Tab键补齐
    \c 可以取消书写错误的命令
  • 常用的SQL命令分类:
DDL数据定义语言: create创建	alter修改	drop删除			#库
DML数据操作语言: insert增		update更新	delete删		#数据
DCL数据控制语言: grant设权限  	revoke回收
DTL数据事务语言: commit rollback savepoint

2.数据库指令练习

mysql -uroot -p123456
> show databases;		 		#查看数据库
> use mysql;			 		#切换数据库
> select database();			#查看当前数据库(所处数据库位置)
> select user();		 		#查看当前登录用户
> create database haha character set utf8mb4;	#创建数据库	
> drop database haha;			#删除数据库
  • 例:创建下图数据表,数据库名称为 school,数据表名称为 student
    在这里插入图片描述

A.创建数据库、表(字段)

> show character set;			#查看所有可用编码
> create database school character set utf8mb4;
> create table school.student(学号 char(20),姓名 char(20),性别 char(5),手机号 int(11),通信地址 char(50));
#查看数据表结构: desc数据表名称
> desc school.student;

B.插入数据、查看
格式: insert into 数据库名称.数据表名称 values (值列表);

> insert into school.student values('NSD181001','葫芦娃','男',1388888888,'北京');
> insert into school.student values('NSD181002','蛇精','女',1389999999,'上海'),('NSD181003','爷爷','男',1387777777,'长白山');

C.更新数据、删除
update 数据库名称.数据表名称 set 字段=值 [where条件]

> update school.student set 性别='女';	   	#更新所有数据
> update student set 性别='男' where 姓名='葫芦娃';
> delete from school.student where 学号='NSD181003';
> delete from school.student;				#删除表中所有数据
> drop table school.student;				#删除整个数据表

四.Mysql数据类型

1.数据类型

  • 字符型: 姓名、地址、单位、邮箱
  • 数值型: 体重、身高、成绩、工资、金额 (可计算:整数型、浮点型)
  • 枚举型: 爱好、性别、专业 (选择型:单选、多选)
  • 日期时间型: 出生日期、注册时间…

2.字符类型

  • char(字符数):
    固定长度,最大长度255字符
    姓名 char(4)—>固定4字符,不够指定字符空格代替
  • varchar(字符数):
    可变长度,根据实际大小分配存储
    姓名 char(4)—>实际大小字符,但最大4字符
  • text/blob:
    字符数大于65535时使用
    注:字符串需要使用引号
> create table school.info(name char(4),email varchar(30));
> desc school.info;			#查看表结构
> insert into school.info values('tom','tom@163.com');			#成功
> select * from school.info;
> insert into school.info values('tarena','tarena@163.com');	#tarena超过4字符,写入数据失败

3.数值类型

在这里插入图片描述

> create table school.num1(id tinyint,age int(3),score float(4,2));
> insert into school.num values(255,22,11.2);	
					#报错,tinyint:默认有符号-128~127(0~255)
> insert into num values(-126,22,14.266); 
					#注:范围内,写入成功;年龄3位表不够时补足:22-->022
> insert into school.num values(-125,22,143.434);
					#报错,总长度 4 位(整数2 位,小数为2 位)
> insert into school.num values(-125,22,14.436);	--->14.44
					#整数位合法,小数位超出,系统会进行四舍五入
> create table school.num2(id tinyint unsigned,age int(3),score float(4,2));	#unsigned 无符号类型0~255
> insert into school.num2 values(255,22,22.34);		#写入成功

4.日期时间类型

  • datetime日期时间类型:
    范围: 1000-01-01 00:00:00:000000~9999-12-31 23:59:59.999999
    如果不给该类型的数据赋值,则默认为NULL
  • timestamp日期时间类型:
    范围: 1970-01-01 00:00:00:000000~2038-01-19 03:14:07.999999
    如果不给该类型的数据赋值,则mysql自动为其分配当前的系统时间
  • 时间格式:
    YYYYmmddhhmmss,或者"YYYY-mm-dd hh:mm:ss"
  • date日期类型:
    范围: 0001-01-01~9999-12-31
    默认使用4位数字表示,当只用2位数字赋值时:
    01~69--->2001-2069 70~99--->1970-1999
  • year年份类型:
    范围: 1901-2155
  • time时间类型:
    范围: HH:MM:SS
    例: 创建学员信息表:姓名、出生日期、入学年份、上课时间、下课时间
> create table school.stuinfo(name char(5),birth datetime,
start year,begin time,end time);
> insert into schomysqlol.stuinfo 
values ('tom',20011010121200,2018,0800,1800);
> insert into school.stuinfo 
values ('tom','2018-01-01 21:20:00',2019,0800,1800);
> insert into school.stuinfo values ( 'lucy',20011010121200,2555,0800,1800);	#报错,year范围是1901-2155
  • MySQL服务内置命令:
    可以使用时间函数给字段赋值
    在这里插入图片描述
> select year(now()),month(now()),day(now());
> select now(),sysdate();
> select date("2019-12-11 22:23");
> select time("2019-12-11 22:23");

5.枚举类型(选择类型)

-enum(值1,值2,值3...)    	#单选项
-set(值 1,值 2,值 3...)		#多选项
> create table school.tea(name char(5),
gender enum('boy','girl'),
interest set('book','film','music','football'));
> desc school.tea;
> insert into school.teavalues('tom','boy','book,film')		#正常写入
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值