################################

---MySQL数据库(3306)

DB Database
--数据库:依照某种数据模型进行组织并存放到存储器的数据集合。

DBMS Database Management System
--数据库管理系统:用来操纵和管理数据库的大型服务软件。

DBS  Database System
--数据库系统:指带有数据库并整合了数据库管理软件的计算机系统。

常见的数据库服务软件
关系型(RDBMS)按照规定的结果存储数据,并且数据之间可以做关联操作
Oracle(甲骨文/商业软件) MySQL(甲骨文/开源跨平台) DB2(IBM) SQL Server(微软)
非关系型数据库软件(NoSQL)KEY-VALUES(键值对)
redis  mongodb

#####################################3

搭建MySQL数据库服务器
(1)下载软件包
/etc/my.cnf     //配置文件
/var/lib/mysql   //数据库的存储目录
(2)启动服务
systemctl restart mysqld
systemctl status mysqld
netstat -lnptu | grep :3306    //查看端口
ps -C mysqld                 //查看进程

grep password /var/log/mysql.log   //查看初始密码
使用初始密码登录并重置登录密码
mysql -hlocalhost -uroot -p'mima'
mysql>show databases;    //使用初始密码登录 不能查看数据库内容
[tip]:修改密码
mysql>alter user root@localhost identified by "123456" 
[error]:密码不符合规定,可以通过修改规定从而设置密码
mysql>set global validate_password_policy=0;  //只验证长度
mysql>set global validate_password_length=6;  //修改密码长度 (默认为8个字符)
mysql>alter user root@localhost identified by "123456"
[ok]修改密码成功
mysql>quit or exit
mysql -hlocalhost -uroot -p123456
mysql>

库管理命令
.....>show databases;   //查看已有库
create database gamedb;   //创建gamedb库
drop database gamedb;    //删除gamedb库
use gamedb ;             //切换到gamedb库里
select database();      //查看当前在哪个库里

表管理命令
use gamedb;
show tables;           //查看库里已有的表
create table 表名(字段 类型(宽度)约束条件 ) //创建表
#create table stuinfo(
#>name char(10),
#>age int);
desc stuinfo             //查看表stuinfo结构
drop table stuinfo        //删除表
#insert into stuinfo values(  //表中插入记录
#>'tom',
#>23);
select * from stuinfo    //查看表中所有记录
delect from stuinfo      //删除表中记录

######################################

mysql数据类型

数值类型:

整型:根据存储数值的范围整型类型分为
tinyint smallint mediunint int  区分符号即 + -号  后面加上 unsigned 变为无符号,即‘-’号无法输入
浮点型:根据存储数值的范围分为单精度,双精度
float(n,m) n表示共多少位  m表示小数点位数
double(n,m)

字符类型:

定长   char() 括号里面默认为1,最大为255,括号里面的表示宽度,不够指定字符数时在右边用空格补齐  
变长   varchar()最大为65532  按照实际大小分配空间
大文本 bolb/text  字符大于65535存储时使用

日期时间类型:

年   year YYYY  2017
日期 date YYYYMMDD 20171220
时间 time HHMMSS   080521
日期时间
    datetime YYYYMMDDHHMMSS    默认为null
    timestamp YYYYMMDDHHMMSS   timestamp 默认为系统时间
    now()== datetime/timestamp
    year(now())  取其中的年份
    date(now())  取其中的日期
    time(now())  取其中的时间
    mounth(now())取其中的月份
    day(now())   取其中的日
    
枚举类型:字段的值只能在列举范围内选择
字段名 enum(值列表)单选
字段名 set(值列表)多选

设置字段约束条件:限制如何给字段赋值
null 默认为yes 即可以赋空值   not null 不可以赋空值
默认为 null 可以设置默认为自定义  default ‘自定义’

#create table stuinfo(
#>name char(10) not null,
#>age  tinyint   not null,
#>high float(3,2) not null,
#>sex enum('boy','girl') not null default 'boy', 
#>s_year year not null,
#>shijian time  not null default time(now()),
#>riqi datetime  not null default now(),
#>likes set('book','film','game','sleep')
#>);

#desc styinfo;
 
#insert into stuinfo values(
#>'tom',
#>23,
#>1.82,
#>'boy'/1,
#>2017,
#>205821/time(now()),
#>20171220205821/now(),
#>'book,game'
#>);

#select * from stuinfo;
############################################
修改表字段
(1)增加字段
alter table styinfo add 字段名 类型(宽度)约束条件;
alter table styinfo add 字段名 类型(宽度)约束条件 first; 默认增加在末尾,first 放在第一列
alter table styinfo add 字段名 类型(宽度)约束条件 after 字段名; 放在某个字段后面
(2)删除字段
alter table stuinfo drop 字段名;
(3)修改字段(类型,约束条件)  //修改字段时,原表中如果有的数据与要修改字段类型冲突,则无法修改成功
alter table stuinfo modify 字段名 新类型 新约束条件 ;
(4)修改字段名
alter table stuinfo change 字段名 新字段名 类型 约束条件;  类型 约束条件不变
(5)修改表名
alter table stuinfo 表名 rename 新表名;