1、MySQL概述   
  1、什么是数据库
   数据库是一个存储数据的仓库
2、都有哪些公司在用数据库
金融机构、游戏网站、购物网站、论坛网站 ... ...
3、提供数据库服务的软件
1、软件分类
MySQL、SQL_Server、Oracle、Mariadb、DB2、MongoDB ...
2、在生产环境中,如何选择使用哪个数据库
1、是否开源
开源软件:MySQL、Mariadb、MongoDB
商业软件:Oracle、DB2、SQL_Server
2、是否跨平台
不跨平台:SQL_Server
跨平台:MySQL、Mariadb、MongoDB、DB2、Oracle
3、公司的类型
商业软件:政府部门、金融机构
开源软件:游戏网站、购物网站、论坛网站... ...
4、MySQL的特点
1、关系型数据库
1、关系型数据库的特点
1、数据是以行和列的形式去存储的
2、这一系列的行和列称为表
3、表中的每一行叫一条记录
4、表中的每一列叫一个字段
5、表和表之间的逻辑关联叫关系
2、示例
1、关系型数据库存储
表1、学生信息表
姓名 年龄 班级
牛郎 25 AID1803
织女 23 AID1801
表2、班级信息表
班级 班主任
AID1803 卢大大
AID1801 孙大大
2、非关系型数据库中存储
{"姓名":"牛郎","年龄":25,"班级":"AID1803","班主任":"卢大大"}
{"姓名":"织女","年龄":25,"班级":"AID1803"}
2、跨平台
可以在Unix、Linux、Windows上运行数据库服务
3、支持多种编程语言
Python、java、php ... ...
2、MySQL的安装
1、Ubuntu安装MySQL服务 RedHat(红帽)、CentOS、Ubuntu
1、安装服务端
sudo apt-get install mysql-server
2、安装客户端
sudo apt-get install mysql-client
2、Windows安装MySQL服务
1、下载MySQL安装包(windows)
mysql-installer***5.7.***.msi
2、双击、按照教程安装即可
3、启动和连接MySQL服务
1、服务端启动
1、查看MySQL服务状态
sudo /etc/init.d/mysql status
2、停止、启动、重启MySQL服务
sudo /etc/init.d/mysql stop | start | restart
2、客户端连接
1、命令格式
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
2、本地连接可以省略 -h 选项
mysql -u用户名 -p密码
mysql -uroot -p123456
4、基本SQL命令
1、SQL命令的使用规则
1、每条SQL命令必须以 ; 结尾
2、SQL命令不区分字母大小写
3、使用 \c 来终止命令的执行 (Linux中 ctrl + c)
2、库的管理
1、库的基本操作
1、查看已有的库
show databases;
2、创建库(指定默认字符集)
create database 库名 default charset=utf8;
3、查看创建库的语句
show create database 库名;
4、查看当前所在库
select database();
5、切换库
use 库名;
6、查看库中已有表
show tables;
7、删除库
drop database 库名;
2、库名的命名规则
1、可以使用数字、字母、_,但不能使用纯数字
2、库名区分字母大小写
3、库名具有唯一性
4、不能使用特殊字符和MySQL关键字
3、练习
1、创建库AID1803db,指定字符集为utf8
create database AID1803db default charset=utf8;
2、切换到该库AID1803db
use AID1803db;
3、查看当前所在库
select database();
4、查看库中已有的表
show tables;
5、查看AID1803db的字符集(查看创建库的语句)
show create database AID1803db;
6、删除库AID1803db
drop database AID1803db;
3、表的管理
1、表的基本操作
1、创建表(指定字符集)
create table 表名(
字段名 数据类型,
字段名 数据类型,
... ...
);
2、查看创建表的语句(字符集)
show create table 表名;
3、查看表结构
desc 表名;
4、删除表
drop table 表名;
2、表的命名规则(同库的命名规则)
3、练习
1、创建库 python
create database python;
2、在库 python 中创建表 py_mysql,指定字符集utf8
表中字段有 id int 和 name char(20) 两个字段
use python;
create table py_mysql(
id int,
name char(20)
)default charset=utf8;
3、查看表 py_mysql 的字符集以及存储引擎
show create table py_mysql;
4、查看 py_mysql 的表结构
desc py_mysql;
5、删除表 py_mysql
drop table py_mysql;
4、注意
1、所有的数据都是以文件的形式存放在数据库目录下
2、数据库目录:/var/lib/mysql
5、更改库、表的默认字符集
1、方法
通过更改MySQL服务的配置文件来实现
2、步骤
1、获取root权限
sudo -i
2、切换到配置文件所在路径
cd /etc/mysql/mysql.conf.d
3、备份
cp -p mysqld.cnf mysqld.cnf.bak
(-p选项连同原文件权限一起复制)
4、用vi打开mysqld.cnf
vi mysqld.cnf
[mysqld]
character_set_server = utf8 保存退出
a -> 写入 -> ESC -> shift + : -> wq
5、重启mysql服务
/etc/init.d/mysql restart | reload(重载配置文件)
6、退出超级用户 exit
7、登录到mysql验证:mysql -uroot -p123456
create database 库名;
show create database 库名;
6、表记录管理
1、在表中插入记录
1、insert into 表名 values(值1),(值2),...,(值N);
2、insert into 表名(字段名列表) values(值1),...(值N);
2、查询表记录
1、select * from 表名;
2、select 字段1,字段名2,...,字段名N from 表名;
3、练习
1、查看所有的库 : show databases;
2、创建新库 stu1 : create database stu1;
3、在库 stu1 中创建表 students ,字段要求如下
1、id int
2、name char(15)
3、age int
4、address char(20)
4、查看表 students 的表结构: desc students;
5、在表中插入一条记录(行)
insert into students values(1,"Tom",25,"Beijing");
6、在表中一次性插入2条记录(行)
insert into students values(...),(...);
7、查看所有表记录 : select * from students;
8、删除表 students : drop table students;
9、删除库 stu1 : drop database stu1;
7、客户端把数据存储到数据库服务器上的过程
1、连接到数据库服务器 : mysql -uroot -p123456
2、选择一个库 :use 库名;
3、创建表或者修改表 :create ...
4、断开与数据库服务器的连接 :exit | quit | \q
8、名词介绍
1、DB (database)
DB就是数据库,存储数据的仓库
2、DBMS(database management system)
数据库管理系统
管理数据库的软件:MySQL、Oracle、MongoDB ... ...
3、DBS(database system)
数据库系统
DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统、人事管理系统) + 用户
9、数据类型
1、数值类型(有符号signed和无符号unsigned)
1、整型
1、int 大整型(4个字节)
取值范围:0 ~ 2 ** 32 -1(42亿多)
2、tinyint 微小整型(1个字节)
1、有符号(signed默认): -128 ~ 127
2、无符号(unsigned): 0 ~ 255
3、smallint 小整型(2个字节)
取值范围:0 ~ 65535
4、bigint 极大整型(8个字节)
取值范围:0 ~ 2 ** 64 - 1
2、浮点型
1、float(4个字节,最多显示7个有效位)
1、用法
字段名 float(m,n) m:表示总位数 n:小数位位数
salary float(5,2) 取值范围? -999.99 ~ 999.99
2、注意
1、浮点型插入整数时会自动补全小数位位数
2、小数位如果多于指定的位数,会对指定位的下一位进行四舍五入
float(5,2) -> 23.128 -> 23.13
2、double(8个字节,最多显示15个有效位)
1、用法
字段名 double(m,n)
3、decimal(M+2个字节,最多显示28个有效位)
1、用法
decimal(28,5)
2、字符类型
1、char(定长)
1、取值范围:1 ~ 255
2、不给定宽度默认为 1
2、varchar(变长)
1、取值范围:1 ~ 65535
2、注意
1、varchar没有默认宽度,必须给定一个宽度值
name varchar(20)
3、char 和 varchar 的特点
1、char
浪费存储空间,但是性能高
2、varchar
节省存储空间,但是性能低
4、练习
1、创建表stuinfo,字段要求如下:
学号:id 大整型 id int,
姓名:name 变长,宽度为15 name varchar(15),
班级:classes 定长,宽度为7 classes char(7),
年龄:age 微小整型,要求不能输入负数
age tinyint unsigned,
身高:height 浮点型,小数位为2位 heigit float(5,2)
2、查看表结构 : desc stuinfo
3、在表 stuinfo 中插入2条记录(行)
insert into stuinfo values
(1,"张三丰","AID1803",23,175.00)
4、查询所有表记录
select * from stuinfo;
5、查询所有学生的姓名、年龄和身高
select name,age,height from stuinfo;
3、枚举类型
1、定义
字段值只能在列举的范围内选择
2、enum(...) 单选(最多有65535个不同的值)
字段名 enum(值1,值2,...,值N)
3、set(...) 多选(最多有64个不同的值)
字段名 set(值1,值2,...,值N)
插入记录时 "Python,boy,Mysql"
4、日期时间类型
1、year :年 YYYY
2、date :日期 YYYYMMDD
3、time :时间 HHMMSS
4、datetime :日期时间 YYYYMMDDHHMMSS
5、timestamp :日期时间 YYYYMMDDHHMMSS
create table t6(
id int,
name varchar(15),
age tinyint unsigned,
birth_year year,
birthday date,
class time,
meeting datetime
)default charset=utf8; insert into t6 values
(1,"武松",40,1979,19790520,090000,20180504000000);
select * from t6;
6、注意
1、插入记录时datetime字段不给值默认返回NULL
2、插入记录时timestamp字段不给值默认返回系统当前时间
10、表字段的操作
1、语法:alter table 表名 执行动作;
1、添加字段
alter table 表名 add 字段名 数据类型 first | after 字段名;
2、删除字段
alter table 表名 drop 字段名;
3、修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
# 修改数据类型时会受到表中原有数据的限制
4、修改字段名
alter table 表名 change 旧名 新名 数据类型;
5、修改表名
alter table 表名 rename 新表名;
1、面试题
1、填空题
1、MySQL中的数据类型有 ____ _____ ____ _____
2、关系型数据库的核心内容是 __关系__ 即 _二维表_
2、简答题
1、简述客户端把数据存储到数据库服务器上的过程
2、char和varchar的区别?各自的特点?
2、操作题
1、创建一个学校的库 school
2、在库中创建一张表 students 来存储学生信息
学号、姓名、年龄、成绩、性别、爱好、入学时间
3、查看students的表结构
4、在students中添加一个字段id,添加在第一列
5、在表中随意插入5条记录
6、查看所有的学生信息
7、查看所有学生的姓名和成绩
3、练习使用一下 vi 文本编辑器

mysql_day01的更多相关文章

随机推荐

  1. Linux命令学习之路——文档连接创建:ln

    使用权限:所有角色 使用方式:ln [ -options ] source target 作用:建立源文件与目标文件之间的连接 注意点: 1.连接分为硬连接和软连接,其中硬连接不能对目录做硬连接,且不 ...

  2. XXS level7

    (1)输入与第六关相同的Payload:"><A HREF="javascript:alert()"> 查看页面源代码,发现“herf"被过滤 ...

  3. 汉语言处理工具pyhanlp的简繁转换

      繁简转换 HanLP几乎实现了所有我们需要的繁简转换方式,并且已经封装到了HanLP中,使得我们可以轻松的使用,而分词器中已经默认支持多种繁简格式或者混合.这里我们不再做过多描述. 说明: ·Ha ...

  4. [转]马上2018年了,该不该下定决心转型AI呢

    转自:http://blog.csdn.net/eNohtZvQiJxo00aTz3y8/article/details/78941013 2017年,AI再一次迈向风口,但我们如何判断未来走向?应不 ...

  5. Python 算术运算符

    Python 算术运算符 运算结果为浮点数 除法:/ 整除: // 求余计算: % 求余运算可以用于固定时间的检测,比如说每10分钟进行一次什么样的操作,则:minute % 10 乘方运算:

  6. c++11模拟boost元占位符placeholder

    准备实现meta programming的fold函数,发现自己缺少占位符实现,这样传入fold的transform op类(元函数)都不得不另外写个外覆类,其实我觉得没啥不好,简单直接,说实话干扰什 ...

  7. VS2017 对com组件调用返回错误hresult e_fail

    解决步骤如下: 第一步: 第二步:进入VS2017 安装目录,如下(路径仅供参考) 执行:gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dl ...

  8. mysql大表设计以及优化

    MYSQL千万级数据量的优化方法积累https://m.toutiao.com/group/6583260372269007374/?iid=6583260372269007374 MySQL 千万级 ...

  9. 单源最短路径算法——Dijkstra算法(迪杰斯特拉算法)

    一 综述 Dijkstra算法(迪杰斯特拉算法)主要是用于求解有向图中单源最短路径问题.其本质是基于贪心策略的(具体见下文).其基本原理如下: (1)初始化:集合vertex_set初始为{sourc ...

  10. solr6.4.1搜索引擎(3)增量同步mysql数据库

    尚未实现首次同步mysql数据库的,请参考我的另一篇文章http://www.cnblogs.com/zhuwenjoyce/p/6512378.html(solr6.4.1搜索引擎同步mysql数据 ...