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 挂载windows目录

    1.默认情况下,Linux服务器会装有samba-client,但是没有装samba-server.但是访问Windows系统共享,安装有samba-client就可以了. [root@test ~] ...

  2. latex之注释快捷键

    注释快捷键 ctrl+T:注释掉选中区域 ctrl_U:解除选中区域的注释

  3. Web Server和Application Server之间的区别?

    An "application server" is a fuzzy concept. Really, it just means software that hosts plug ...

  4. python学习之路07

    Python中你可能不关心的这几个关键字:break.continue.pass 1.break 作用:跳出循环[直接跳出整个循环,继续执行后面的代码] 1.特殊情况一 #当break使用在嵌套循环中 ...

  5. 第三章 JQuery: HelloWorld--常见方法--css--选择器--筛选器--属性--效果--事件--数组操作--字符串操作--对象转换

    1.jQuery简介 为了简化JavaScript 的开发, 一些JavsScript 库诞生了. JavaScript库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的页面, 并且兼 ...

  6. 手把手教你实现 Google 拓展插件(转自实验楼)

    一.课程简介 1.1 实验介绍 本课程的实验环境由实验楼提供,Google 浏览器拓展的运行环境为 Google 浏览器.在本实验中,你将了解如何制作一个属于你自己的 Google 拓展插件. 课程实 ...

  7. PAT 乙级 1092 最好吃的月饼 (20 分)

    1092 最好吃的月饼 (20 分) 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种“最好吃”的月饼,那势必在吃货界引发一场腥风血雨…… 在这里我们用数字说话,给出 ...

  8. ARM920T的Cache

    转载自:http://www.eefocus.com/mcu-dsp/242034 ARM920T有16K的数据Cache和16K的指令Cache,这两个Cache是基本相同的,数据Cache多了一些 ...

  9. css3兼容性检测工具

    1.   Modernizr  会在Modernizr 会在页面加载后立即检测特性:然后创建一个包含检测结果的 JavaScript 对象,同时在 html 元素加入方便你调整 CSS 的 class ...

  10. ubuntu vsftp

    转自:https://www.cnblogs.com/java-synchronized/p/6935711.html 12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP ...