一些特殊格式的文件的集合
用来存储各种数据
持久存储、存取效率高、支持可扩展
关系数据库
基于关系模型建立,用二维表进行数据存储的数据
非关系数据库
mangondb.redis
数据文件集合
数据服务端
数据客户端
SQL
数据库的核心元素
数据保存的流程
MySQL 数据库管理系统的安装
sudo apt-get install mysql-server
MySQL 数据库的配置
配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf
MySQL 数据库操作
客户端连接服务器(*)
sudo apt-get install mysql-client
图形化工具Navicat
命令行连接
可以看到密码
mysql -u用户名 -p密码
回车
不可以看到密码
mysql -u用户名 -p
输入密码
回车
命令行退出: exit 或者 quit
完整性的作用: 保证数据的正确性
主键约束:不能为空,也不能重复 primary key
唯一约束:能为空,但是不能重复 unique key
非空约束: 该字段信息不能为空 not null
默认约束:这个字段可以设置默认值 default
外键约束: 建立表和表外键的关系 foreign key
字段的值必须是设定的范围之内 sex 男女
选择编码“utf8”,排序规则:utf8-bin,点击“确认”
右键,设计表
双击表名,输入记录
转储:表名,右键,转储sql文件
执行sql,运行SQL文件
选择合适的类型保存数据,好处:
1)节省存储空间
2)提升查询效率
整型:int tinyint
浮点型
float(6) double(16) decimal(M,D)
float(5,2) 总共5个数字,2位小数
精确价格选用decimal
Char(255)/varchar(65535)/tinytext(255)/text(65535)
/mediumtext(16777215)/longtext(49838332323)
char与varchar区别
Char长度固定
Utf8 占3个字符
字符串选择
能用varchar不用text
Enum最多65535
date 年月日
datetime 年月日时分秒 1000年 5字节
timestamp 年月日时分秒 1970年 4字节
cmd
mysql -uroot -p
root
select version();
select now
show databases; 查看数据库
create database 数据库名;
drop database数据库名;
use 数据库名;
select database(); 显示当前数据库
show create database 数据库名称 显示建表语句
创建数据库
create database python1 charset=utf8;
show tables; 查看表
创建表
create table classes(
id int unsigned primary key auto_increment,
name varchar(10) not null,
num tinyint
);
create table students(
id int unsigned primary key auto_increment,
name varchar(20) not null,
age tinyint(1) ,
high decimal(3,2),
gender enum("男","女","妖"),
cls_id int unsigned
);
查看表结构
desc classes;
查看创表语句+格式化
show create table students \G:
增加生日表
alter table students add bithday datetime;
重命名
alter table students change bithday birthday datetime;
修改类型
alter table students modify birthday date not null;
删除字段
alter table students drop birthday;
删除表
drop table students
set character_set_client=gbk;
set character_set_results=gbk;
查询select
查询所有
select * from classes
select * from students
条件where
select * from students where name=‘二狗子’;
别名as, 不加引号
select id as ‘编号’, name as ‘名称’ from students where name=‘二狗子’;
插入记录insert
insert into classes values(1,‘python20’,78);
自增长,可以忽略
insert into classes values(null,‘python21’,78);
insert into students values(null, ‘司马二狗’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’);
列名
insert into students(id, name) values(null, ‘狗胜’);
多行
insert into students values(null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’), (null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’),(null, ‘狗蛋’, 18, 1.78, ‘男’, 1, ‘2001-12-12’),(null, ‘狗杂种’, 18, 1.78, ‘女’, 1, ‘2001-12-12’);
修改update
update students set age=28;
条件
update students set age=28 where name=‘狗杂种’;
多字段
update students set age=19,gender='男’where name=‘二狗子’;
逻辑删除
alter table students add is_delete bit default 0;
update students set is_delete = 1 where id = 3;
导出库:(需要管理员身份运行cmd)
mysqldump -uroot -p python1 > d:\python1 .sql
导入表(先删除库,再创建python1库)
mysql -uroot –p python1 < d:\students.sql
Navicat再次刷新,可见