MySQL数据库的特点:
1、是关系型数据库
关系型数据库的特点
1、数据是以行和列的的形式存储的
2、这一系列的行和列称为表
3、表中的每一行叫做记录
4、表中的每一列叫做字段
5、表和表之间的逻辑关联叫做关系
6、关系型数据库的核心内容是:关系 即二维表
示例:
1、关系型数据库存储
表1:学生信息表
姓名 年龄 班级
aa 20 1712
bb 25 1713
表2:班级信息表
班级 班主任
1712 曹操
1713 刘备
说明:要找到学生aa的班主任是谁,需要通过班级字段来找到班主任
2、非关系型数据库存储(是以键值对的形式存储的)
{姓名:“aa”,年龄:20,班级:1712,班主任:“曹操”}
二者之间的比较:
非关系行数据的性能比较高(查找数据的速度)但是会造成数据的冗余
2、跨平台
可以在Unix、Linux、Windows上运行MySQL服务
3、支持多种语言编程语言
4、是基于硬盘的读写
MySQL的安装:
1、Linux系统下安装MySQL服务
1、安装服务端:sudo apt-get install mysql-server
2、安装客户端:sudo apt-get install mysql-client
3、初始的用户名和密码在/etc/mysql/debian.cnf文件中,使用 cd /etc/mysql/ 进去目录,subl debian.cnf 打开查看
启动和连接MySQL服务
1、服务端启动
1、查看MySQL服务的状态:sudo /etc/init.d/mysql status
2、启动MySQL服务:sudo /etc/init.d/mysql start
3、停止MySQL服务:sudo /etc/init.d/mysql stop
4、重启MySQL服务:sudo /etc/init.d/mysql restart
2、客户端链接
1、命令格式:mysql -h主机名 -u用户名 -p密码(-h和-u后面可以添加空格,-p后面不可以)
mysql -h localhost -u debian-sys-maint -pLo0r79JmxvMFNtA
2、本地连接可以省略 -h 选项
mysql -u debian-sys-maint -pLo0r79JmxvMFNtA
3、断开与服务端的连接:exit quit \q
基本的SQL命令:
1、SQL命令的使用规则
1、每条命令必须以分号(;)结尾(说明中文分号无效)
2、SQL命令不区分字母大小写
3、使用\c终止命令的执行
2、库的管理(指定字符集)
1、库的基本操作
1、查看已有的库:show databases;
(有四个默认的库,不要修改或删除:information_schema,mysql,performance_schema,sys)
2、创建库:create databases 库名 default charset=utf8;
3、查看创建库的语句:show create databases 库名;
( CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */)
4、查看当前所在库:select database();
5、切换库:use 库名;
6、查看库中已有的表:show tables;(如果当前的库为NULL则会报错:ERROR 1046 (3D000): No database selected)
7、删除库:drop database 库名;
2、库的命名规则
1、可以使用数字、字母、_,但是不能是纯数字
2、库名区分字母大小写
3、库名具有唯一性(不能重复)
4、不能使用特殊字符和mysql关键字
3、表的管理:
1、表的基本操作:
1、创建表:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
....
)
2、查看创建表的语句(字符集):show create table 表名;
3、查看表结构:desc 表名;
4、删除表:drop table 表名;
2、注意:
1、所有的数据都是以文件的形式存储在数据库目录下
2、数据库目录:/var/lib/mysql
4、表记录的管理:
1、在表中插入记录
1、insert into 表名 values(值1),(值2),... 说明值就是一条记录,必须与字段相匹配
2、查看表记录
1、select * from 表名;*号代表所有的字段
2、select 字段名1,字段名2,... from 表名;
5、如何更改默认字符集:
1、方法:通过更改Mysql的配置文件实现
2、步骤:
1、获取root权限:sudo -i
2、修改mysql配置文件:vi /etc/mysql/mysql.conf.d/mysqld.cnf
1、点击a键进入编辑状态
2、在[mysqld]下 插入character_set_server = utf8
3、点击Esc键退出编辑状态
4、点击Shift + :
4、输入wq命令写入并退出 (输入q!退出不保存)
3、重启mysql服务:sudo /etc/init.d/mysql restart
客户端把数据存储到数据库服务器上的过程(面试会问到)
1、连接到数据库服务器:mysql -h -u -p
2、选择库:use 库名;
3、创建/修改表
4、断开与数据库的连接:exit 、quit、\q
数据类型:
1、数值类型(有符号signed 和 无符号 unsigned)
1、整型
1、int 大整型(占4个字节):
取值范围:0~2**32-1
2、tinyint 微小整型(占1字节)
1、有符号(signed默认)取值范围:-128~127
2、无符号(unsigned) 取值范围:0~2**8-1
3、smallint 小整型(占2字节)
取值范围:0~65535
4、bigint 极大整型(占8字节)
取值范围:0~2**64-1
2、浮点型
1、float(4个字节,最多显示7个有效位)
1、用法:字段名 float(m,n) m代表总位数,n代表小数位位数
float(5,2)取值范围:-999.99~999.99;会根据小数第3位进行四舍五入
说明:m总位数不要超过7位,否则7位之后数字会随机生成。浮点型插入整数时会自动补全小数位数
2、double(8字节,最多显示15个有效位)
用法:字段名 double(m,n)
3、decimal(占M+2个字节,最多显示28个有效位)
用法:decimal(M,D)
2、字符类型
1、char(定长)
1、宽度取值范围:1~255
2、不给宽度默认为宽度为1
2、varchar(变长)(输入要的值不能超过变长值,储存空间根据实际输入的数值来确定)
1、取值范围:1~65535
2、注意:
1、varchar没有默认宽度,必须给定一个宽度
2、char和varchar使用时都给宽度,但不能超过各自的范围
3、char 和 varchar 的特点
1、char浪费存储空间但是性能高
2、varchar节省存储空间,性能低(需要计算需要占用的存储空间)
4、字符类型的宽度和数值类型的宽度的区别
1、数值类型的宽度为显示宽度,只用于select查询时使用,和占用存储空间的大小无关,可用zerofill查看效果
2、字符类型的宽度超过则无法存储
3、枚举类型
1、定义:字段值只能在列举的范围内选择
2、enum 单选(最多有65535个不同的值)
字段名 enmu(值1,值2,...)
3、set 多选(最多有64个不同的值)
字段名 set(值1,值2,...),插入值的时候每个值之间用逗号分隔开
4、日期时间类型
1、year: 年 YYYY
2、date:日期 YYYYMMDD
3、time:时间 HHMMSS
4、datetime:日期时间 YYYYMMDDHHMMSS
5、timestamp:时间日期 YYYYMMDDHHMMSS
6、说明:
1、datetime 不给值默认返回NULL
2、timestamp不给值默认返回系统当前时间
表字段的操作:
1、语法:alter table 表名 执行动作
1、添加字段(add):
1、添加到末尾
alter table 表名 add 字段名 数据类型
2、添加到开始
alter table 表名 add 字段名 数据类型 first
3、添加到指定位置
alter table 表名 add 字段名 数据类型 after 已有字段名
2、删除字段(drop):
alter table 表名 drop 字段名
3、修改数据类型(modify):
alter table 表名 modify 字段名 新的数据类型
4、修改字段名
alter table 表名 change 旧名 新名 数据类型
5、修改表名
alter table 表名 rename 新表名
练习:
1、填空题:
1、MySQL中的数据类型有 数值类型、字符类型、枚举类型、日期时间类型
2、关系型数据库的核心内容是 关系 即 二维表
2、简答题:
1、简述客户端把数据存储到数据库服务器上的过程
答:
1、连接MySQL服务器数
2、选择库 use 库名
3、添加\修改表
4、断开与数据库的连接 exit | quit | \q
2、char和varchar的区别?各自的特点
答:
1、char(定长),所占用的内容空间已经由定长决定了,虽然多占用内存,但是效率高
2、varchar(不定长),所占用的内控空间由添加字段的数据本身决定,但是需要计算占用的空间,效率第,省内存
3、操作题:
1、创建一个库school
create database school;
2、在库中创建表students来存储学生信息,字段如下学生(id)要求显示宽度为3位,不够用0填充
姓名(name),年龄(age只能为正数)、成绩(score浮点)、性别(sex单选)、爱好(likes多选)、入学时间(年月日)
use school;
create table students(
id int(3) zerofill,
name char(20),
age tinyint unsigned,
score float(4,1),
sex enum('男','女'),
likes set('打篮球','学习','购物','打游戏','打仗'),
go_school_time date
)default charset = utf8;
3、查看students的表结构
desc students;
4、在students表中增加一个字段id,加在第一列
alter table students add kid int first;
5、在表中任意插入5条记录
insert into students values(1,1,'曹操',60,80,'男','打仗,打游戏',20000912);
insert into students values(2,2,'刘备',50,90,'男','打仗,打游戏',20000912);
insert into students values(3,3,'关羽',45,70,'男','打仗,打游戏',20000912);
insert into students values(4,4,'张飞',40,60,'男','打仗,打游戏',20000912);
insert into students values(5,5,'小乔',20,100,'女','学习,购物',20000912);
6、查看所有学生的姓名、成绩、和入学时间
select name,score,go_school_time from students;
python_MySQL数据库
猜你喜欢
转载自www.cnblogs.com/xdl-smile/p/9361210.html
今日推荐
周排行