1.什么是数据库
存储数据的仓库
2.哪些公司在用数据库
金融机构,游戏网站,电商网站…
3.提供数据库服务的软件
1.软件分类
MySQL , Oracle , MongDB, MariaDB, SQL_Server …
2.生产环境中,如何选择使用哪个数据库
1.是否开源
1开源软件: MySQL,MariaDB,MongDB
2.商业软件:Oracle,SQL_Server
2.是否跨平台
1.不跨平台:SQL_Server
2.跨平台:MySQL,MariaDB,MongDB,Oracle
3.公司类型
1.商业软件: 政府部门,金融机构,
2.开源软件:游戏网站,电商网站…
3.MySQL特点
1.关系型数据库
1.关系型数据库特点
1.数据是以行和列(表格)形式存储
2.表中的行叫记录,表中列叫字段
3.表和表之间的逻辑关联叫关系
2.示例
1.关系型数据库存储
表1:学生信息表
姓名 年龄 班级
佩琪 20 三班
丹妮 23 六班
表2:班级信息表
班级 班主任
三班 卢大大
六班 大空翼
2.非关系型数据库存储
{'姓名':'佩琪','年龄':20','班级':'六班','班主任':'大空翼'}
2.跨平台
Unix,Linux,Windows上部署数据库服务
3.支持多种编程语言
python, java, php ...
4.数据库软件,数据库,数据仓库概念
1.数据库软件
一个软件,看的见,可操作,来实现数据库的逻辑功能
2.数据库
逻辑上的概念,实现存储数据的功能
3.数据仓库
数据量:比数据库庞大的多
侧重点:
数据库侧重存储
数据仓库侧重数据分析和数据挖掘
2.MySQL安装
1.Ubuntu安装MySQL服务
1.安装服务端
sudo apt-get install mysql-sever
2.客户端
sudo apt-get install mysql-client
2.Windows安装MySQL
1.下载MySQL安装包
mysql-installer-5.7***.msi
2.按照教程安装
3.Mac 安装MySQL
1.下载安装包
2.设置环境变量
cd
vi .bash_profile
在末尾添加:PATH="$PATH":/usr/local/mysql/bin
3.终端:source .bash_profile
4.登录测试: mysql -uroot -p密码
3.启动和连接MySQL服务
1.启动服务端
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql status | stop | restart
2.客户端连接
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
mysql -uroot -p
show databases;
4.基本SQL命令:
1.SQL命令使用规则
1.每条命令必须以;结尾
2.SQL命令不区分字谜大小写
3.使用\c 来终止当前命令执行
2.库的管理
1.库基本操作
1.查看已有库(下列四个库严禁删除)
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
2.创建库
create database 库名;
create database 库名 character set utf8;
3.查看创建库的语句
show create database 库名;
4.查看当前所在库
select database();
5切换库
use 库名;
6.查看库中已有表:
show tables;
7删除库
drop database 库名;
2.库的命名规则
1.数字,字母,_,但不能使用纯数字
2.库名区分字母大小写
3.不能使用特殊字符和mysql关键字
3.表的管理
1.表的基本操作
1.创建表
create table 表名(
字段名1 数据类型,
字段名2 数据类型) character set utf8;
2.查看创建表的语句(字符集,存储引擎)
show create table 表名;
3查看表结构
desc 表名;
4.删除表
drop table 表名;
4.注意
1.所有数据都是以文件形式存放在数据库目录下
2.数据库目录: /var/lib/mysql
tarena@tedu:~$ sudo -i
[sudo] tarena 的密码:
root@tedu:~# cd /var/lib/mysql
root@tedu:/var/lib/mysql# ls
5.表记录管理
1.插入表记录(insert)
1.insert into 表名 values(值1),(值2),()…;
t1 : id name score
insert into ti values
(1,’“金毛狮王”,80),(2,“白眉鹰王”,60)
2.insert into 表名(字段1,...) values(值1),(值2),...;
2.查询表记录(select)
1. select * from 表名 where 条件;
2. select 字段1,字段2 from 表名 where 条件;
练习:
1重启一下mysql服务,并登录
2查看所有库
3创建库studb,指定utd8
4在studb中创建tab1,指定utf8,字段有:id name age
5查看tab1表结构
6在tab1中插入2条记录
7在tab1中id 和name 两个字段插入2条记录
insert into tab1(id,name) values
(3,“周芷若”),
(4,“金花”)
8查看tab1中所有记录
9查看tab1中年龄大于20的学生的姓名和年龄
5.更改库的默认字符集(Ubuntu)
1方法(更改配置文件)
2.步骤
1.sudo -i
2.cd/etc/mysql/mysql.conf.d
3.备份: cp mysqld.cnf mysqld.cnf.bak
4.subl mysqld.cnf
[mysqld]
character_set_server=utf8
5.重启mysql服务
/etc/init.d/mysql restart
6.进入数据库验证
Mac本: /etc/my.cnf
[mysqld]
character_set_server=utf8
- 客户端把数据存储到数据库服务器上的过程
1.连接到数据库:mysql -uroot -p123456
2.选择库: use 库名;
3.修改表: insert/updata…
4.断开与数据库连接: exit | quit | |q
7.数据类型
1.数值类型
1.整型
1.int 大整型(4个字节)
0~2**32-1(42亿多)
2.tinyint 微小整型(1个字节)
1.有符号(signed默认):-128-127
2.无符号(unsigned):0~255
age tinyint unsigned
3.smallint 小整型(2个字节)
4.bigint 极大整型(8个字节)
2.浮点型
1.float 浮点型(4个字节,最多显示7个有效位)
1.用法
score float(m,n), m->总位数 n->小数位的位数
float(5,2) : -999.99-999.99
2.double(m,n)
3.decimal(m,n) 整数和小数分开存储
将9的倍数封装成4个字节
存储空间:
余数 字节
0 0
1-2 1
3-4 2
5-6 3
7-8 4
decimal (19,9)
整数部分 10/9=1余1 4+1=5个字节
小数部分 9/9=1 4+0=4字节
2.字符类型
1.char(定长,存储效率高,占空间)
宽度取值范围:1-255
2.varchar(变长,效率低,节省空间)
宽度取值范围:1-65535
3.text/longtext(4G)/blob/longblob
4.char和varchar的特点
1.char :浪费存储空间,性能高
2.varchar:节省存储空间,性能低
3.枚举类型
1.单选: enum(值1,值2,值3...)
2.多选: set(值1,值2,值3...)
##插入记录时:"girl,study,mysql"
4.日期时间类型
1.date: "yyyy-mm-dd"
2.time: "hh:mm:ss"
3.datetime: "yyyy-mm-dd hh:mm:ss"
4.timestamp: "yyyy-mm-dd hh:mm:ss"
5.注意:
1.datetime:不给值默认返回null
2.timestamp:不给值默认返回系统当前时间
6.实例:
1.创建用户充值表
create table t7(id int, username varchar(20),password varchar(20),money int,
birthday date, cztime timestamp)
3时间日期函数
1.now() :返回当前时间
2.curdate(): 返回日期
3.curtime(): 返回时间
4.year(date):取出年份
5.date(date):取出日期
6.time(date):取出时间
练习:
1.创建库studb2,并在库中创建表stuinfo id 大整型
name 字符类型,宽度15
age 微小整型,不能输入负数
height浮点型,小数为2位
money浮点型,x小数位2位(decimal)
2查看表结构
3.在表中插入1条记录
4.查询所有表记录
5在表中id name插入2条记录
6查询所有学生的id和姓名
4.日期时间运算
1语法格式
select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位);
时间间隔单位:
1 day | 2 hour | 3 year | 3 month
2示例:
1查询1天以内的充值记录
select * from t7 where cztime >=(now()-interval 1 day);
2.查询1年以前的充值记录
select * from t7 where cztime<=(now()-interval 1 year);
3.查询1天以前,3天以内的充值记录
select * from t7 where cztime>= (now()-interval 1day ) and cztime<=(now()-interval 3 day);
select * from t7 where cztime>=“2018-05-01 12:00:00” and cztime <= “2018-10-08 12:00:00”;
select * from t7 where date(cztime)>=“2018-10-01” and date(cztime)<=“2018-10-31”;
作业:
1.mysql中的数据类型有____,,,____
2.关系型数据库的核心内容是关系即二维表
3简述客户端把数据存储到数据库服务器上的过程
4char和varchar的区别,各自的特点
5操作
1.创建库 school
2.在库中创建表students,用来存储学生信息id ,name(变长) class(定长)
phonenumber(定长),age(不能为负) ,成绩(浮点)
3.查看students的表结构
4.在表中随意插入3条记录
5在表中的姓名,成绩,2个字段插入3条记录
6查看所有学生的姓名和成绩
7查看成绩及格(>60)的学生姓名和成绩