数据库了解
概念
数据库就是一种特殊的文件,其中存储着需要的数据
一个数据库可以有多张表
MySQL是一种关系型数据库
具有关联性数据的就是关系型数据库
MySQL是一种软件可以用来创建mysql数据库
MySQL也是C/S构架(底层TCP)
MySQL客户端
客户端连接服务端使用TCP协议连接
使用时SQL语句操作
MySQL服务器
MySQL服务器操作数据库
数据库优点
持久化存储
读写速度高
保存速度有有效性
对程序支持非常好,容易扩展
数据库词汇
列:字段
行:记录
表:记录的集合
主键:唯一标记一行记录的
外键:对于一张表中某个字段的值是另一张表的主键的值
常见的关系型数据库及底层了解
RDBMS
是一种程序的简称,分为关系型数据库和非关系型数据库
关系型数据库
MySQL(常用与制作网站)
常用版本:5.1 5.6 5.7 5.8
sqlite
Oracle
常用版本 Oracle 10g Oracle 11g
sqlserver(Microsoft)
db2(IBM)
非关系型数据库
redis(处理缓存)
mangodb(存储非关系型数据)
SQL语言概念
SQL语句是一种结构化查询语句,可以用来操作RDBMS数据库语言
sql语句分类
DQL查询
select
DML操作
insert update delete
MySQL基础操作
安装
ubuntu:
sudo apt-get install mysql-server(服务端)
sudo apt-get install mysql-client(客户端)
启动
sudo service mysql start
暂停
sudo service mysql stop
重启
sudo service mysql restart
配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
MySQL的主要数据类型和约束
数据类型
整数型
int
bit
小数
decimal
decimal(5, 2),表示一共存5位数,小数占2位
字符串
varchar
char
char(3)表示固定长度的字符串,长度不够会用空格补全,不可以超过3个字符
varchar
varchar(3)填充ab就会存储ab,不可以超过3个字符
时间类型
data, time, datatime
枚举类型
enum
比如性别,代表只有固定的类型让人选择
test类型
当字符大于4000之后推荐使用
ps:
对于图片,音频,视频等文件,不存储在数据库中,而是上传到服务器中,数据库只保存文件的保存路径
约束
约束是用来限制每一个字段的
主键primary key
物理上存储的顺序
非空not null
此字段不允许为空
外键
数值类型
tinyint 1个字节,0-255
smallint 2个字节 0-65535
mediumint 3个字节
int/integer 4个字节
bigint 8个字节
字符串
char
barchar
text
用命令来操作数据库
数据库连接
mysql -uroot -pmysql
mysql -uroot -p (这种方式需要写密码)
退出数据库
quit/exit/ctrl+d
查看数据库
show databases;
显示时间
select now();
显示版本
select version();
创建数据库
create database python;(创建一个名称为Python的数据库)
create database pythonnew charset=utf8;(创建一个字符集为utf8编码名称为pythonnew的数据库)
删除数据库
drop database python;(删除名称为Python的数据库)
使用数据库
use 数据库名称
查看当前使用数据库
select database();
数据表操作
显示数据库所有的表
show tables;
创建一个数据表
create table xxxxx(id int, name varcharm(30)); # 一个逗号创建一个字段
create table xxxxx(id int primary key not null auto_increment, name varcharm(30)); # 添加约束在每一个字段后面加上约束
案例创建一个students表(id,name,age,high,gender,cls_id)
create table students(
id int unsigned not null auto_increment parimary key,
name varchar(30),
age tinyint unsigned defult 0,
high decimal(5,2),
gender enum("男","女") default "男",
cls_id int unsigned
ps:
创建表顺序(字段名 类型 约束)
desc 数据表的名字;(可以快速查看表结构)
数据表字段结构的的增删减查
增
alter table students add birthday datetime;
alter table 表名
删
drop table 表名
改
alter table 表名 modify brithday data; 不重名
alter table 表名 change brithday birth date default '1990-01-01'; 重名
查
ps:
show create table students; # 可以查看创建这个数据表的SQL语句
数据的增删改查
增:
insert into 表名 values(....)
insert into 表名 values(....),(....)
insert into 表名(字段,字段) values (值1, 值2)
insert into 表名(字段,字段) values (值1, 值2),(值1,值2)
ps:
枚举中数字1代表
改:
update 表名 set 字段=值 (直接修改全部字段)
update 表名 set 字段=值 where name=值 (在满足where后面的条件,一般用主键来判断来指定修改)
update 表名 set 字段=值,字段2=值 where name=值 (一次修改多个值)
查询
select 指定字段 from 表名 (*代表所有的字段)
select 指定字段 as 命名 from 表名 (可以修改字段的名称显示出来)
删
truncate students;(清空表)
delete from 表名; (删除表的所有内容)
delete from 表名 where id<6; (指定删除)
不要去删除数据,可以添加字段来逻辑删除
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=6;