什么是数据库
数据库是一个存储数据的仓库
- DB(Database) 数据库
- DBMS(Database Management System) 数据库管理系统
- DBS(Database System) 数s据库系统
- 数据库管理软件 MySQL、Oracle、......
DBS = DB + DBS + 数据库应用 + 用户
哪些公司在使用数据库
金融机构、购物网站、游戏网站、论坛网站 .... ...
提供数据库服务的软件
-
软件分类
- MySQL、SQL_Server、SQL_Server、DB2、Mariadb、Mariadb
-
在生产环境中,如何选择使用哪个数据库软件
-
是否开源
-
开源软件
- MySQL、Mariadb、MongoDB
-
商业软件
- Oracle、SQL_Server、DB2
-
-
是否跨平台
-
不跨平台
- SQL_Server
-
跨平台
- MySQL、Oracle、DB2、Mariadb、 MongoDB
-
-
公司类型
-
商业软件
- 金融机构、政府部门
-
开源软件
- 购物网站、游戏网站、论坛网站
-
-
MySQL的特点
1、关系型数据库
关系型数据库特点
- 数据是以行和列的形式存储的
- 这一系列的行和列成为表
- 表中的每一行叫一条记录
- 表中的每一列叫一个字段
- 表和表之间的逻辑关联叫关系
- 关系型数据库的核心内容是关系,即二维表
2、跨平台
- 可以在Unix、Linux、Windows上运行MySQL服务
3、支持多种编程语言
- Python、Java、PHP
MySQL命令
- 没条命令必须以;结尾
- SQL命令不区分大小写
- 使用\c终止命令的执行
MySQL库的管理
库的基本操作
- 查看已有的库
show databases;
- 创建库(指定字符集)
create database 库名 default charset=utf8;
- 查看创建库的语句
show create database 库名;
- 查看当前所在库
select database();
- 切换库
use 库名;
- 查看库中已有的表
show tabels;
- 删除库
drop database 库名;
库的命名规则
- 可以使用数字、字母、_,但不能是纯数字
- 库名区分字母大小写
- 库名具有唯一性
- 不能使用特殊字符和mysql关键字
注意
- 所有的数据都是以文件的形式存储在数据库目录下
- 数据库目录:
/var/lib/mysql
客户端把数据存储到数据库服务器上的过程
- 1、连接到数据库服务器:
mysql -u root -p
- 2、选择库:
use 库名;
- 3、创建/修改表
- 4、断开与数据库的连接
MySQL数据类型
数值类型
- 有符号
signed
- 无符号
unsigned
整型
-
int
大整型 4个字节
取值范围:0~2^32-1~-2^32+1
-
tinyint
微小整型 1个字节- 有符号(
signed
默认):-128~127
- 无符号(
unsigned
):0~255
- 有符号(
-
small
小整型 2个字节
取值范围:0~65535
-
bigint
极大整型 8个字节
取值范围:0~2^64-1
浮点型
-
float
4个字节,最多显示7个有效位- 用法:
字段名 float(m,n)
,m
表示总位数,n
表示小数位数 - 注意
1、浮点型插入整数时会自动补全小数位数
2、小数位如果多于指定的位数,会对下一位四舍五入
- 用法:
-
double
8个字节,最多显示15个有效位- 用法:
字段名 double(m,n)
- 用法:
-
decimal
M+2个字节,最多显示28个有效位- 用法:
decimal(M,D)
- 用法:
字符类型
-
char
定长- 宽度取值范围:
0~255
- 不给定宽度默认宽度为
1
- 宽度取值范围:
-
varchar
变长- 取值范围:
1~65535
- 注意
- varchar没有默认宽度,必须给定一个宽度
-
char
和varchar
使用时都给定宽度,但不能超过各自的范围
- 取值范围:
-
char
和varchar
的特点-
char
浪费存储空间,性能高 -
varchar
节省存储空间,性能低
-
- 字符类的宽度和数值类型的宽度的区别
- 数值类型的宽度为显示宽度,只用于select查询时使用,和占用存储空间大小无关,可用zerofill查看效果
- 字符类型的宽度超过则无法存储
枚举类型
- 定义:字段值只能在列举的范围内选择
-
enum
单选,最多有65535个选项
字段名 enum(值1,值2,...)
sex enum('M','F')
-
set
多选,最多有64个选项
字段名 set(值1,值2,...)
likes set("C++","Python","Java")
日期时间类型
-
year
: 年YYYY
-
date
: 日期YYYYMMDD
-
time
: 时间HHMMSS
-
datetime
: 日期时间YYYYMMDDHHMMSS
默认值返回NULL
-
timestamp
: 日期时间YYYYMMDDHHMMSS
默认值返回系统当前时间
MySQL表的管理
表的基本操作
- 创建表:
create table 表名(字段名 数据类型,字段名 数据类型,...);
- 查看创建表的语句(字符集):
show create table 表名;
- 查看表结构:
desc 表名;
- 删除表:
drop table 表名;
表记录的管理
- 在表中插入记录:
insert into 表名 values(值1),(值2),...;
- 查看表记录:
select * from 表名;
select 字段名1,字段名2,... from 表名;
更改默认字符集
-
通过更改MySQL的配置文件
- 1、获取root权限
sudo -i
- 2、修改mysql配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
character_set_server = utf8
- 3、重启MySQL服务
sudo /etc/init.d/mysql restart
- 1、获取root权限
-
创建表的时候设置字符集
create table t1(id int,name char(10)) default charaset=utf8
表字段操作
语法:alter table 表名 执行动作;
-
添加字段
- 添加字段
alter table 表名 add 字段名 数据类型;
- 添加到开始
alter table 表名 add 字段名 数据类型 first;
- 添加到指定位置
alter table 表名 add 字段名 数据类型 after 字段名;
- 添加字段
-
删除字段
语法:alter table 表名 drop 字段名;
-
修改数据类型
语法:alter table 表名 modify 字段名 新的数据类型
-
修改字段名
语法:alter table 表名 change 旧名 新名 数据类型;
-
修改表名
语法:alter table 表名 rename 新表名;
-
更新表记录
语法:update 表名 set 字段名=值1,字段名=值2,... where 条件;
注意:update语句后如果不加where子句,表中所有记录该字段的值都会更改 -
删除表记录
语法:delete from 表名 where 条件;
注意:delete语句后如果不加where条件子句,将会把表中所有的记录全部删除 -
where条件语句
作用:配合查、改、删操作
语法:select * from 表名 where 条件;
运算符操作
作用:配合查、改、删操作
-
数值比较与字符比较
- 数值比较运算符:
=、!=、>、>=、<、<=
- 字符比较运算符:
=、!=
- 语法格式:
- 查询:
select * from 表名 where 字段名 运算符 数字/字符;
- 修改:
update 表名 set 字段名=值,... where 字段名 运算符 数字/字符;
- 删除:
delete from 表名 where 字段名 运算符 数字/字符;
- 查询:
- 数值比较运算符:
-
逻辑比较
- 运算符
-
and
多个条件同时满足 -
or
多个条件有一个满足就可以
-
- 运算符
-
范围内比较
- 运算符:
between and
、in
、not in
- 语法格式:
- 字段名
between 值1 and 值2
- 字段名
in(值1,值2,...)
- 字段名
not in(值1,值2,...)
- 字段名
- 运算符:
-
匹配空、非空
- 空:
is null
- 非空:
is not null
-
null
:空值,必须用is
或者is not
去匹配 -
""
:空字符串,用=
或者!=
去匹配
- 空:
-
模糊比较
- 语法格式:
字段名 like 表达式
- 表达式:
-
_
:匹配单个字符 -
%
:匹配0到多个字符
-
- 语法格式:
网友评论