1装包
1.1 删除系统自带mariadb mysql数据库软件
rpm -q mariadb-server mariadb
]#rpm -qa | grep -i mariadb
]#systemctl stop mariadb
]#rpm -e --nodeps mariadb-server mariadb
]#rm -rf /etc/my.cnf
]#rm -rf /var/lib/mysql
1.2 安装mysql软件
]# tar -xf mysql-5.7.17-1..tar
]# ls *.rpm
]# rm -rf mysql-community-server-minimal-5.7.17-
yum list | grep -i perl-json
]# yum -y install perl-JSON
]# rpm -Uvh mysql-community-*.rpm
]# rpm -qa | grep -i mysql检查
修改配置文件(不需要修改配置文件 按默认配置运行即可)
ls /etc/my.cnf
启动服务
systemctl start mysqld
]# systemctl enable mysqld
查看服务进程和端口号
[root@mysql51 mysql]# ps -C mysqld
PID TTY TIME CMD
3252 ? 00:00:00 mysqld
[root@mysql51 mysql]# netstat -utnlp | grep mysqld
tcp6 0 0 :::3306 :::*
systemctl status mysqld 查看
二、数据库服务的基本使用
2.1 使用初始密码在本机连接数据库服务
]# grep password /var/log/mysqld.log
]# mysql -hlocalhost -uroot -p'hqToPwaqf5,g!><'
2.2 重置本机连接密码
mysql>set global validate_password_policy=0; 只检查密
码的长度
mysql>set global validate_password_length=6; 密码长度
不能小于6个字符
mysql>alter user root@"localhost" identified by"123456"
mysql>quit
]# mysql -hlocalhost -uroot -p123456
mysql> show databases;
让密码策略永久生效
]#vim /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
:wq
]#systemctl restart mysqld
2.3 把数据存储在数据库服务器上的过程?
连接数据库服务器(命令行 API 图形工具)
选择库 (存放数据的文件夹)
选择表 (就是文件)
插入记录 (文件中的行)
字段 列
结构化查询语言
2.4 sql命令使用规则
2.5 sql命令分类DDL数据定义语言DML数据操作语言\c终止
连接数据库服务 建库 建表 插入记录
2.6 管理数据库的sql命令
查看 show databases;
创建 create database 库名;
切换 use 库名;
删除 drop database 库名;
显示当前所在的库 select database();
2.7 管理表的 sql命令
查看 mysql> show tables;
创建 mysql> create table gamedb.stuinfo(
-> name char(10),
-> addr char(20)
-> );
删除 drop table 库名.表名 ;
查看表记录 select * from 库名.表名 ;
查看表结构 desc 库名.表名 ;
2.8 管理记录的sql命令
查看 select * from 库名.表名 ;
插入 insert into 库名.表名 values(字段值列表);
insert into gamedb.stuinfo values ("tom","beijing");
insert into gamedb.stuinfo values ("bob","beijing");
修改 update 库名.表名 set 字段名=值 where 条件;
update gamedb.stuinfo set addr="shanghai" where
name="tom";
删除
delete from 库名.表名;
delete from gamedb.stuinfo;
++++++++++++++++++++++++++++++++
三、mysql数据类型
数值 tinyint 有符号-128~127 无符号0~255 (1字节)
字符 宽度
枚举
时间birthday date;
up_time time;
y_star year;
party datetime;
show create table studb.stuinfo;
create table t2(name char(10)) DEFAULT CHARSET=utf8
alter table xueshengbiao DEFAULT CHARSET=utf8 default charset=utf8
3.1 数值类型 (成绩 年龄 工资 )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
浮点型 有效位, 小数位
字符 变长 大文本类型text blob
路径 char 255 固定长度 varchar65532
create database studb;
use studb;
create table t1(level smallint,age tinyint);
insert into t1 values(1024,19),(9,21);
insert into t1 values(21.45,9.87);
select * from t1;
create table t2(
level int unsigned,
age tinyint unsigned
);
desc t2;
insert into t2 values(-201, -1);
insert into t2 values(201, 0);
select * from t2;
create table t3(
pay float(5,2)
);
xxx.xx
999.99
0.00
-999.99
insert into t3 values(124);
insert into t3 values(1.24);
insert into t3 values(-999.99);
insert into t3 values(1000);
select * from t3;
create table t4(
pay double(7,2)
);
xxxxx.xx
99999.99
-99999.99
create table t5(
name char(5),
addrhome char(30),
email varchar(25)
);
insert into t5 values
("bob","beijing","[email protected]");
select * from t5;
----------------------
create table t16(
name char(15),
age tinyint unsigned
pay float(7,2),
email varchar(30),
birthday date,
up_time time,
start_year year,
party datetime
);
desc t6;
insert into t6 values
("lanyiqun",18,26800,"[email protected]",20181001,083000,
1990,20180501220000);
select * from t6;
mysql> select now();
mysql> select year( now() );
mysql> select year( 20191120 );
mysql> select month( now() );
mysql> select day( now() );
mysql> select date( now() );
mysql> select time( now() );
insert into t16 values( "lucy", 21 , 18800,
"[email protected]" , date( now() ), time(now()) , year
(20111218) , now() );
insert into t6(name,start_year) values("tom",69);
+++++++++++++++++++++
create table t7 (
meetting datetime,
party timestamp
);
desc t7;
insert into t7 values( now() , now() );
insert into t7(party) values(20161123184518);
insert into t7(meetting ) values(20201123153000);
select * from t7;
+++++++++++++++++++
create table t8(
name char(15),
sex enum("boy","girl","no"),
likes set("woman","game","money","flim","eat")
);
desc t8;
insert into t8 values
("guoxuehao","boy","game,flim,eat");
insert into t8 values("xierongyue", 3 ,"money,eat");
select * from t8;
create database db2;
use db2;
create table t2(
name char(3),
level int(3) zerofill
);
insert into db2.t1 values ("bob",1);
insert into db2.t1 values ("bob",99);
insert into db2.t1 values ("bob",218);
insert into db2.t1 values ("bob",7218);
name level
bob 001
bob 099
bob 218
bob 7218
+++++++++++++++++++++++++++++++
create table t5(
classroom char(7) default "nsd1801",
name char(5) not null ,
age tinyint(2) unsigned zerofill default 18,
sex enum("boy","girl") not null default "boy"
);
desc t5;
insert into t5(name)values("lucy");
insert into t5 values("nsd1802","alice",31,"girl");
select * from t5;
++++++++++++++++++++++++++++++++++++
二、修改表结构
alter table studb.t1 add name char(15) first ;
alter table studb.t1 add addrhome varchar(50) default
"beijing";
alter table studb.t1 add sex enum("boy","girl") not null
default "boy" after name;
desc studb.t1;
select * from studb1;
mysql> alter table studb.t1 drop sex , drop name;
mysql> alter table t1 modify addrhome char(10) default
"beijing";
mysql> alter table t1 modify level smallint(6) not null;
mysql> alter table t1 modify age tinyint(4) first;
mysql> alter table t1 change addrhome home char(10) default
"beijing";
mysql> alter table t1 rename dogperson;
+++++++++++++++++++
约束条件 限制字符赋值
四部分 NULL NO
Key 健值 主 键 外键 唯一 索引 全文索引
Default Null 默认值 系统为空
Extra
3.1.1普通索引的使用(index)
使用规则?
查看索引
desc 表名;
show index from 表名;
desc studb.t2;
show index from studb.t2;
创建索引:
***在已有表创建索引
create index 索引名 on 表名(字段名);
create index aaa on studb.t2(age);
desc studb.t2
mysql> show index from studb.t2\G;
Key_name: aaa #索引名
Column_name: age #字段名
Index_type: BTREE (二叉树) Hash #索引类型
drop index bbb on d2
***建表时创建索引
create table 表名(
字段列表,
index(字段名),
index(字段名),
);
create table studb.t21(
classroom char(7) default "nsd1801",
name char(5) not null ,
age tinyint(2) unsigned zerofill default 18,
sex enum("boy","girl") not null default "boy",
index(name),
index(age),
index(classroom)
);
desc studb.t21;
show index from studb.t21\G;
删除索引 drop index 索引名 on 表名;
mysql> drop index aaa on t2;
mysql> desc t2;
mysql> show index from t2;
++++++++++++++++++++++++++++++++++
在已有表创建 主键
mysql> alter table t21 add stu_id char(9) first ;
mysql> alter table t21 add primary key(stu_id);
mysql> desc t21;
insert into t21 values(null,"nsd1801","lxd",18,"boy"); 报错
insert into t21 values("nsd180101","nsd1801","lxd",18,"boy"); 可
以
insert into t21 values("nsd180101","nsd1801","gxh",18,"boy"); 报
错
insert into t21 values("nsd180118","nsd1858","gxh",18,"boy"); 可
以
select * from t21;
alter table 表 drop primary key;
desc t21;
insert into t21 values("nsd180101","nsd1801","gxh",18,"boy"); 可
以了
建表时创建主键
create table 表名(
字段列表,
primary key(字段名)
);
create table 表名(
字段 类型(宽度) primary key,
......
);
create table studb.t22(
person_id char(18),
name char(10),
age tinyint(2) unsigned,
pde
);
desc studb.t22;
insert into studb.t22 values(null,"bob",21); 错误
insert into studb.t22 values("xxxxxx","bob",21); 可以了
insert into studb.t22 values("xxxxxx","lucy",19); 错误
insert into studb.t22 values("Fxxxxx","lucy",19); 可以了
create table studb.t24(
person_id char(18) primary key,
name char(10),
age tinyint(2) unsigned
);
desc studb.t24;
创建复合主键:多个字段一起做主键,插入记录时,只要做复合主键字段的值
不同时重复,就可以插入记录。
mysql> create table studb.t23(
-> clientip char(15),
-> port smallint(2),
-> status enum("allow","deny"),
-> primary key(clientip,port)
-> );
mysql> desc studb.t23
insert into studb.t23 values("1.1.1.1",22,"allow");可以
insert into studb.t23 values("1.1.1.1",22,"deny");报错
insert into studb.t23 values("2.1.1.1",22,"deny");可以
pri pri
clientip port status
1.1.1.1 22 allow
1.1.1.1 23 allow
2.1.1.1 23 deny
主键primary key 通常和auto_increment连用。
create table studb.t27(
stu_id int(2) zerofill primary key auto_increment,
name char(10),
age tinyint(2) unsigned,
sex enum("boy","girl")
);
insert into studb.t27(name,age,sex)values("bob",19,"girl");
insert into studb.t27(name,age,sex)values("bob",19,"girl");
select * from t27;
向已有表中添加记录编号字段id 并使其字段的值自动增长方式赋值
mysql> alter table dogperson add id int(2) primary key
-> auto_increment first;
select * from dogperson;
select * from dogperson where id=3;
alter table studb.t22 add primary key(name);
+++++++++++++++++++++++++++++
外键的使用在知识点文档里。