数据库
1,装包
删除系统自带mariadbmysql数据库软件
Rpm-qa | grep -i mariadb
安装mysql软件
Yum-y install perl-JSON
Yum-y install mysql-community-*.rpm
2,修改配置文件,让密码策略永久有效
Vim/etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6 密码长度为6
character-set-server=utf8 支持中文
3,启动服务
Systemctlstart mysqld
Systemctlenable mysqld
4,查看服务进程端口号
ps-C mysqld
netstat-utnlp | grep mysqld
一:数据库服务的基本使用
greppassword /var/log/mysqld.log 提取root用户的随机密码
mysql-uroot -p'hqToPwaqf5,g!><'
在丢失密码的时候可以这样
mysqld_safe –skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE
user=’root’;
mysql> FLUSH PRIVILEGES;
1,管理数据库的sql命令
show databases; //查看
create database 库名;//创建库
use 库名; //切换库
drop database 库名;//删除库
select database(); //显示当前所在的库
select version(); //显示mysql的版本
select((4*4)/2)+18; //可以当计算器用
2,管理表的sql命令
show tables; //查看
createtable 表名(namechar(10),
sexchar(2),);
droptable 库名表名; //删除表
select * from表名; //查看表记录
desc表名; //查看表结构
3,管理记录的sql命令
insertinto 表名 values(字段值列表);
例:insertinto 表名values(“tom”,”beijin”);
update库名.表名 set 字段名=值where 条件;
delete from 表名; //删除
二:数据库类型
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
smallint | 2字节 | -32768~32767 | 0~ 65535 | 小整数 |
mediumint | 3字节 | -223~ 223-1 | 0~ 224-1 | 中整数 |
int | 4字节 | -231~ 231-1 | 0~ 232-1 | 大整数 |
bigint | 8字节 | -263~ 263-1 | 0~ 264-1 | 极大整数 |
float | 4字节 | 单精度浮点数 | ||
double | 8字节 | 双精度浮点数 | ||
decimal | 对DECIMAL(M,D),其中M为有效位数、D为小 数位数,M 应大于D,占用M+2字节 | |||
tinyint | 1字节 | -128~127 | 0~ 255 | 微小整数 |
1,数值类型-->整数类型(只能存储整数)
例: create table t1(level smallint,age tinyint);
insertinto t1 values(1024,19),(9,21);
关于整数型字段,使用UNSIGNED修饰时,对应的字段只保存正数,数值不够指定宽度时,在左边填空
格补位,宽度仅是显示宽度,存数值的大小由类型决定,使用关键字ZEROFILL时,填0代替空格补
位,使用关键字ZEROFILL时,填0代替空格补位
例:createtable t1(id tinyint unsigned zerofill);
关于浮点型字段
– 定义格式:float( 总宽度,小数位数)
– 当字段值与类型不匹配时,字段值作为0处理
– 数值超出范围时,仅保存最大/最小值
createtable t2(pay float(7,2));
2,字符类型
定长:char( 字符数)
– 最大长度255字符
– 不够指定字符数时在右边用空格补齐
– 字符数断超出时,无法写入数据
定长:char( 字符数)
– 最大长度255字符
– 不够指定字符数时在右边用空格补齐
– 字符数断超出时,无法写入数据
大文本类型:text/blob
– 字符数大于65535存储时使用
日期时间类型
年 year YYYY 2018
日期 date YYYYMMDD 20180423
时间 time HHMMSS 161958
日期时间datetime/timestamp
YYYYMMDDHHMMSS 20180423161958
获取日期时间函数
now()获取当期系统的时间
year(日期时间)获取指定时间中的年
month(日期时间)获取指定时间中的月
date(日期时间)获取指定时间中的日期
day(日期时间)获取指定时间中的号(天)
time(日期时间)获取指定时间中的时间
枚举类型(插入记录时 记录的值 在列举的范围内选择
enum(值列表) 单选
set(值列表) 多选
修改表结构
基本用法
altertable 表名执行动作;
执行动作;添加字段(add),修改字段类型(modify),修改字段名(change)删除字段(drop),修改表名(rename)
添加新字段,基本语法
altertable 表名add字段名类型(宽度)约束条件;可加after字段名或者first;
例:altertable user id int(2) zerofill primary key auto_increment first;
修改字段类型
altertable 表名modify字段名类型(宽度)约束条件;可加after字段名或者first;
altertable nb modify 性别enum('boy','gril','dog');
修改字段名
-
altertable 表名chage源字段名新字段名 类型(宽度)约束条件;
-
删除字段
-
altertable 表名drop字段名;
-
修改表名
-
altertable 表名rename新表名;提示:表对应的文件也会改变
-
索引
-索引是对记录集的多个字段进行排序的方法
优点
-通过创建唯一性索引,可以保证数据库表中每一行数
据的唯一性
-可以加快数据的检索速度
缺点
-当对表中的数据进行增加、删除和修改的时候,索引
也要动态的维护,降低了数据的维护速度
-索引需要占物理空间
键值类型
-index 普通索引
-unique 唯一索引
-fulltext 全文索引
-primary 主键
-foreignkey 外键
index一个表中可以有多个INDEX字段,字段的值允许有重复,且可以赋NULL值,经常把做查询条件的字段设
置为INDEX字段,INDEX字段的KEY标志是MUL
建表的时候指定索引字段
-index(字段1),index(字段2).。。。。。。。。。
例:mysql>createtable xhh(id char(6) not null,
>namevarchar(15) not null,
>ageint(3) not null,
>index(id),index(name));
在已有的表中设置INDEX字段
-CREATEINDEX 索引名ON表名(字段名);
删除指定表的索引字段
-DROPINDEX 索引名on表名;
查看表的索引信息
-SHOWINDEX FROM 表名;
主键(primarykey)
-一个表中只能有一个primarykey 字段
-对应的字段值不允许有重复,且不允许赋NULL值
-如果有多个字段都作为PRIMARYKEY ,称为复合主键,必须一起创建
-主键字段的KEY标志是PRI
-通常与AUTO_INCREMENT连用
-经常把表中能够唯一标识记录的字段设置为主键字段
在已有的表中设置PRIMARYKEY 字段
– ALTERTABLE 表名ADDPRIMARY KEY( 字段名);
• 移除表中的PRIMARYKEY 字段
– ALTERTABLE 表名DROPPRIMARY KEY;
foreignkey 外键
-让当前表字段的值在另一个表中字段值的范围内选择
-外键使用条件
1,表的存储引擎必须是innodb
2,字段类型要一致
3,被参照字段必须要是索引类型的一种(primarykey)
-基本用法
foreignkey ( 表A的字段名)References 表B(字段名)
onupdate cascade on delete cascade
-删除外键字段
ALTERTABLE 表名DROPFOREIGN KEY 约束名;