数据的存储
单程序的数据存储在文件中(独有) 但程序程序(共有)
数据库MySql MySQL:是用于管理文件的软件
服务端软件
客户端软件
技能
安装客户端 服务端
连接
学习SQL语句
其他类似软件:
关系型数据库:sqllite,db2,oracle,access,sql server MySQL
非关系型数据库:MongoDB,redis
MySql安装 Windows版本 下载地址
安装版本就是一路next
解压版的安装方式
初始化 找到bin文件下的mysqld
服务端 E:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld –initialize-insecure
用户名默认是 root 面默认为空
启动服务端
E:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld
客户端连接
E:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld -u root -p
通过设置环境变量的方式
添加环境变量 E:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld
windows服务
制作Windows服务 E:\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld –install
可以用 net start mysql启动服务 net stop mysql停止服务
linux -cenos7 CentOS 7的yum源中没有正常安装mysql时的mysql-sever文件,需要去官网上下载1
2
3
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
成功安装之后重启mysql服务service mysqld restart 初次安装mysql是root账户是没有密码的 设置密码的方法mysql -u root mysql> set password for ‘root’@‘localhost’ = password(‘mypasswd’); mysql> exit
MySQL连接 数据库的格式是:
数据库的连接 默认的是 mysql -u root -p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
查看数据库:show databases; # 最后是s 代表多个 分号结尾
创建数据库: create database db1; #没有s db1是数据库的名字
进入数据库:use db1;
查看数据库中的表: show tables;
查看所有的表:select * from 表名字; # 查看表中的内容
查看所有的用户:用户存在在mysql的user表中,select user,host from user;查看
+------+-----------+
| user | host |
+------+-----------+
| abc | % |
| root | 127.0.0.1 |
| root | ::1 |
| | haha |
| root | haha |
| | localhost |
| root | localhost |
+------+-----------+
创建用户 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
创建一个用户,用户名是aaa,密码是123 ,只能是192.168.1.0登录
create user 'aaa'@'192.168.1.0' identified by '123';
创建一个用户,用户名是bbb,密码是123 ,只能是192.168.1.% 在这个范围内登录
create user 'bbb'@'192.168.1.%' identified by '123';
任意IP都能登录
create user 'ccc'@'%' identified by '123';
最后查看所有的用户:
mysql> select user,host from user;
+------+-------------+
| user | host |
+------+-------------+
| abc | % |
| root | 127.0.0.1 |
| bbb | 192.168.1.% |
| aaa | 192.168.1.0 |
| root | ::1 |
| | haha |
| root | haha |
| | localhost |
| root | localhost |
+------+-------------+
在操作Linux登录mysql的时候,用户用空的密码也可以登录。通过查找是是因为mysql 系统表(mysql.user)里默认有几条空用户与空密码的数据,所以导致以上的问题,使用如下命令,把空用户的数据行删除掉即可;
1
2
3
mysql> select * from mysql.user;
mysql> delete from mysql.user where user = "";
mysql> flush privileges;
http://63638790.blog.51cto.com/513514/1556935
授权 1
2
3
4
5
6
部分授权
grant select,insert,update on db1.t1 to 'abc'@'%';
全部授权
grant all privileges on db1.t1 to 'abc'@'%';
取消授权
mysql> revoke all privileges on db1.t1 from 'abc'@'%';
SQL语句规则 操作文件夹(数据库)
查看所有的数据库 show databases;
创建数据库 create database db1;
设置数据库的编码 create database db1 default charset utf8; # 这里没有等号
删除数据库 drop database db1;
操作文件(表) 注意在创建表的时候,首先要选择具体的数据库
1
2
3
4
create table t1(
id int not null auto_increment primary key ,
name char (10 )
)engine =innodb default charset =utf8;
auto_increment 表示自增 primary key;# 主键 表示约束,不能重复切不能为空
以后通常的设置1
2
3
create table t2(
id int not null auto_increment primary key ,
name char (10 ))engine =innodb default charset =utf8;
数据类型
数字
tinyint
int
bigint
FLOAT
DOUBLE
decimal 可以定制精确的小数 decimal(a,b);a是数据的总长度 b是小数位数
字符串
时间类型 DATATIME
枚举
set
操作文件中的内容(表的内容)
插入数据 insert into t1(id,name) values(1,’aaa’);
删除 delete from t1 where id<6
修改 update t1 set age=18; update t1 set age=18 where age=17;
查看 select * from t1;
外键 要先创建没有外键的表,然后再创建与外键有关联的表
先操作用户表,然后操作部门表
外键的数据类型要一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
create table class (
cid int auto_increment primary key ,
caption varchar (12 )
)engine =innodb default charset =utf8;
create table teacher(
tid int auto_increment primary key ,
caption varchar (12 )
)engine =innodb default charset =utf8;
create table student(
sid bigint auto_increment primary key ,
sname varchar (10 ),
gneder varchar (20 ),
class_id int ,
constraint fk_stuendt_key foreign key (class_id) references class (cid)
)engine =innodb default charset =utf8;
create table course(
cid int auto_increment primary key ,
cname varchar (20 ),
teacher_id int ,
constraint fk_course_key foreign key (teacher_id) references teacher(tid)
)engine =innodb default charset =utf8;
create table score(
sid int auto_increment primary key ,
student_id bigint ,
course_id int ,
score_number int ,
constraint fk_stu_key foreign key (student_id) references student(sid ),
constraint fk_score_key foreign key (course_id) references course(cid)
)engine =innodb default charset =utf8;
主键 一个表只有一个主键,可以关联多个列
外键 外键可以有多个1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE t1(
pid int NOT NULL auto_increment ,
nid int NOT NULL auto_increment ,
PRIMARY KEY (pid,nid)
)ENGINE =INNODB DELETE CHARSET =utf8;
create table t2(
sid int auto_increment primary key ,
id1 int ,
id2 int ,
constraint fk_key foreign key (id1,id2) references t1(pid,nid),
)engine =innodb default charset =utf8;
对于自增可以修改 show create table t1 ;#横屏显示 show create table t1 \G; # 旋转90度 alter table t1 auto_increment=2; # 修改这个值可以改变自增的值