################################
---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 新表名;