mysql 概述


1、MySQL概述
1、什么是数据库
数据库是一个存储数据的仓库
2、都有哪些公司在用数据库
金融机构、游戏网站、购物网站、论坛网站... ...
3、提供数据库服务的软件
MySQL、SQL_Server、Oracle、DB2、MariaDB、MongoDB ... ...
在生产环境中,如何去选你要使用哪个数据库软件?
1、是否开源
开源软件:MySQL、MariDB、MongoDB
商业软件:Oracle、DB2、SQL_Server
2、是否跨平台
不跨平台:SQL_Server
跨平台:MySQL、MariDB、MongoDB、Oracle、DB2
3、公司的类型
商业软件:政府部门、金融机构
开源软件:游戏网站、购物网站、论坛网站 ... ..
4、MySQL的特点
1、关系型数据库
1、数据是以行和列的形式去存储的
2、这一系列的行和列称为表
3、表中的每一行叫一条记录
4、表中的每一列叫一个字段
5、表和表之间的逻辑关联叫关系
6、关系型数据库的核心内容是关系即二维表
示例:
关系型数据存储:
表1、学生信息表
姓名 年龄 班级
张三 20 AID1711
李四 25 AID1710

表2、班级信息表
班级  班主任
AID1711 孙大大
AID1710 侯大大
*非关系型数据库中存储:
{"姓名":"张三","年龄":20,"班级":"AID1711","班主任":"孙大大"}
{"姓名":"李四","年龄":25,"班级":"AID1710",班主任":"侯大大"}
2、跨平台
可以在Unix Linux Windows上运行数据库服务
3、支持多种编程语言
python、java、php ... ...
2、启动和连接MySQL服务
1、启动
1、查看MySQL服务的状态
sudo /etc/init.d/mysql status
2、停止MySQL服务
sudo /etc/init.d/mysql stop
3、启动MySQL服务
sudo /etc/init.d/mysql start
4、重启MySQL服务
sudo /etc/init.d/mysql restart
2、连接
mysql -u用户名 -p密码
示例:
mysql -uroot -p123456
3、基本SQL命令
1、SQL命令的使用规则
1、每条命令必须以 ; 结尾
2、SQL命令不区分字母大小写
3、使用 \c 终止命令的执行
2、库的管理
1、库的基本操作
1、查看已有的库
show databses;
2、创建库
create database 库名;
create database mydb;
3、切换库
use 库名;
use mydb;
4、查看当前所在库
select databse();
5、查看库中所有的表
show tables;
6、删除库
drop database 库名;
drop database mydb;
2、库的命名规则
1、可以使用数字、字母、_,但是不能是纯数字
2、库名区分字母大小写
3、库名具有唯一性
4、不能使用特殊字符和mysql关键字

3、表的管理
1、表的基本操作
1、创建表
create table 表名(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型
);
create table stuinfo(
name char(20),
age int,
score int
);
2、查看表结构
desc 表名;
3、在表中插入记录
insert into 表名 values(值1),(值2);
insert into stuinfo values("Jim",20,100);
4、查看表记录
select * from 表名;
select * from stuinfo;
5、删除表
drop table 表名;
drop table stuinfo;
2、表的命名规则(同库的命名规则)
1、查看所有的库
show databases;
2、创建一个新库studb
create database studb;
3、创建一张表t1,字段有 id name age
create table t1(
id int,
name char(20),
age int
);
4、查看t1的表结构
desc t1;
5、在t1中随便插入两条记录
insert into t1 values(1,"Zhangsan",30);
6、查看t1表中的所有记录
select * from t1;
7、删除表t1
drop table t1;
8、删除数据库studb
drop database studb;
4、客户端把数据存储到数据库服务器上的过程
1、连接到数据库服务器 mysql -uroot -p123456
2、选择一个库 use 库名
3、创建表或者修改表 create table ... 
4、断开与数据库服务器的连接 exit | quit | \q
4、名词介绍
1、DB(Database)
DB就是数据库,是存储数据的仓库
2、DBMS(Database Management System)
数据库管理系统
管理数据库的软件,MySQL、Oracle ......
3、DBS(Database System)
数据库系统
DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统,人事管理系统) + 用户
4、ER模型(重要)
实体关系模型  -- > 学生选课系统的案例

注意:
1、所有的数据都是以文件的形式存储在数据库目录下
2、数据库目录:/var/lib/mysql
5、数据类型
1、数值类型
1、整型
1、int大整型(4个字节) 
存储范围:0 ~ 2*32 - 1(42亿多)
2、tinyint 微小整型(1个字节)
1、有符号 signed(默认) -128~127
2、无符号 unsigned 0~255
示例:
create table t4(
name char(20),
age tinyint unsigned
);
3、smallint 小整型(2个字节)
存储范围:0 ~ 65532
4、bigint 极大整型(8个字节)
存储范围:0 ~ 2**64 - 1
2、浮点型
1、float (4个字节)
用法:字段名 float(m,n) 
-->m表示总位数
-->n表示小数位位数
示例:
float(5,2) 取值范围?
999.99
-999.99
注意:
1、浮点型插入整数时mysql会自动补全小数点位数
2、浮点型插入数据时,如果小数位数多于指定位数,会对指定位数的下一位进行四舍五入
2、double (8个字节)
1、用法
字段名 double(m,n)
2、与float的区别
1、存储数值的范围不同
2、精度不同
3、decimal
1、用法
字段名 decimal(M,D)
2、存储空间
M > D: M + 2个字节的存储空间
M < D: D + 2个字节的存储空间
decimal(30,2) 占用32个字节
decimal(5,28) 占用30个字节
2、字符类型
1、char (定长) 
1、取值范围:1~255个字符
注意:
不给定宽度默认为1
2、varchar(变长)
1、取值范围:1~65532


注意:
1、varchar没有宽度默认值,必须指定宽度
2、在使用的时候char和varchar都要给定一个宽度,但不能超过各自的范围
3、char 和 varchar 的特点
1、char
浪费存储空间,但是性能高(生产环境中常用)
2、varchar
节省存储空间,但是性能低
4、字符类型的宽度和数值类型的宽度的区别
1、数值类型的宽度为显示宽度,只用于select查询时显示,和占用存储空间大小无关,用zerofill可以展示效果
2、字符类型的宽度超过则无法存储
练习:
创建一个表t15,字段要求如下
学生的学号:id  要求显示宽度为2,用0填充
学生的姓名:name 定长,宽度为20
学生的年龄:age 微小整型,不能输入负数
学生的身高:height 浮点型,小数位为两位
create table t15(
id int(2) zerofill,
name char(20),
age tinyint unsigned,
height float(5,2)
);
创建完成之后在表中插入两条记录
insert into t15 values(1,"Bob",30,175.22),(2,"Lucy",25,160);
查询所有的记录
select * from t15;
查看表结构
desc t15;
3、枚举类型
定义:字段值只能在列举范围内选择
1、enum 单选
语法:字段名 enum(值1,值2,值3,......)
示例:
create table t16(
id int,
name varchar(20),
age tinyint unsigned,
sex enum("boy","girl","secret")
);
2、set 多选
语法:字段名 set(值1,值2,值3,... ...)
示例:
create table t17(
id int,
name char(15),
age tinyint unsigned,
sex enum("boy","girl"),
likes set("girl","boy","study","MySQL")
);
4、日期时间类型
1、year :年 YYYY
2、date :日期 YYYYMMDD
3、time :时间 HHMMSS
4、datetime :日期时间 YYYYMMDDHHMMSS
示例:
create table t18(
name varchar(20),
age tinyint unsigned,
birth_year year,
birthday date,
class time,
meeting datetime
);
insert into t18 values("Xiaozhao",25,1993,19930520,090000,20180105000000);
6、如何设置表的字符编码
1、查看表的字符编码
show create table 表名;
# default charset = ???
2、创建表时指定字符编码
create table 表名(字段名 数据类型)default charset = utf8;
3、指定库的字符编码
create database 库名 default charset = utf8;
示例:
create database db2 default charset = utf8;
注意:
指定了库的字符编码,库中所有表的默认字符编码和库的字符编码相同
7、表字段的操作
语法:alter table 表名 执行动作;
1、添加一个字段
1、添加到末尾:
alter table 表名 add 字段名 数据类型;
alter table t20 add address varchar(30);
2、添加到第一列
alter table 表名 add 字段名 数据类型 first;
3、添加到指定位置
alter table 表名 add 字段名 数据类型 after 字段名;
2、删除字段
alter table 表名 drop 字段名;
alter table t20 drop score;
3、修改字段的数据类型
alter table 表名 modify 字段名 新的数据类型;
alter table t20 modify score tinyint unsigned;
























你可能感兴趣的:(mysql,基础)