MySQL数据库的介绍
- 发展史:
1996年,MySQL 1.0
2008年 Sun公司收购了MySQL
2009年4月 Oracle收购Sun公司 - 名词解释
数据库:保存有组织的数据的容器(通常是一个文件)。
表 :某种特定类型数据的结构清单。数据库中的表都有一个名字,用来标识自己,此名字是唯一的。
列 :表中的一个字段。所有表都是由一个或多个列组成的。数据库中的每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。
数据类型: 数值、字符串、时间
行 :表中的数据按行存储的,所保存的每个记录存储在自己的行内。
SQL:一种专门用来与数据库通信的语言。设计SQL的目的是更有效的读写数据库。· - 优点:
1、SQL不是某个特定数据库专有的语言。几乎所有重要的数据库都支持SQL。
2、SQL简单易学。。语句全是描述性很强的英文单词组成。 - 范式:
1NF:每个属性都不可再分。
2NF:
3NF: - 数据库的分类:
关系型(最常用):MySQL、oracle、sqlite
非关系型:MongoDB、Redis - 数据库模型
关系型数据库就像一个Excel:
一个Excel相当于一个数据库
sheet相当于数据库中的一张表
行,一行代表一条数据 rows
列,一列数据就代表一个属性。columns列 操作数据库
1、Windows启动mysql
net start mysql57 mysql57为你的mysql名字
2、用命令登录mysql
mysql -uroot -p
mysql -h127.0.0.1 -uroot -p
3、linux启动服务:
service mysql start
4、显示MySQL中所有数据库
show databases;命令输入在mysql>之后:
1、命令用;或者\g结束。仅按enter不执行命令
2、输入help或者\p获取帮助。。比如:help select获取使用select语句的帮助
3、输入exit或quit命令退出
4、创建数据库
create datebase dbname;
创建数据库的时候指定编码方式utf8
create datebase dbname charset=utf8;
5、删除数据库
drop database dbname;
6、切换使用的数据库
use dbname;
7、查看当前所在的数据库
select database();
8、显示库中的所有表
show tables;
9、show也可以用来显示列
show columns from 表名
另一种方式:
describe 表名
describe 是 show columns from 表名 的一种快捷方式表操作
- 创建表:
create table 表名(name char(30),id int primary key auto_increment);
表名后使用 圆括号去写表中的数据结构
每个字段用 , 隔开
字段声明的格式: 字段名 字段类型
每个表中都必须包含一个 主键。主键是唯一的。主键通常是int类型,在被当做主键的字段后面加 primary key
主键通常是自增长的:auto_increment,mysql可以自动地为每个行分配下一个编号,不用在添加的时候手动的去分配这个唯一值(记住最后一次使用的值)。这就是自增。如果需要它,必须在create语句创建表时把它作为表定义的组成部分。 - 数据类型
tinyint 一般用来存年龄之类的小的整数。其他用int
char 和varchar的区别:
使用char传入的数据的长度,小于指定的长度的时候,存储的实际长度,不够的会拿空格来填充
使用varchar传入的数据的长度,小于指定的长度的时候,存储的实际长度 为传进来的数据长度
char的执行效率高于varchar varchar相对于char来说更节省存储空间。
varchar类型在5.0以下的版本中最大长度限制为255.而5.0之上的,varchar数据类型的长度支持到了65525字节.
知道固定长度的用char
超过255字符的时候只能用varchar 或者text,能用varchar的时候就不用text
文本的比较相同的规则:首先比较的是长度,之后才是按位比较。 - 插入操作
insert into 语句用于向表中插入一行数据
语法:
insert into 表名 values (值1,值2.。。。。)
我们也可以指定所要插入的列
insert into 表名(列1,列2。。。。)values (值1,值2,。。。。)
不管使用哪种insert语法,都必须给出values的正确数目。
如果不提供列名,则必须给每个列提供一个默认值。
如果提供列名,则必须对每个列出的列给一个值,否则报错。
省略列:
1、在表定义中给出默认值
2、该列定义为允许NULL值
insert into student VALUES(1,’green’,18,1,1)
insert into grade(g_name,g_student_num) values (‘python1804’,55);
可以在insert 和 into 之间添加一个关键字:low_priority,指示MySQL降低insert的优先级 - 多条插入
单条insert语句有多组值,每组值用一对圆括号括起来。用逗号分隔。以提高数据库性能,因为MySQL用单条insert语句处理多个插入 比 使用多条insert语句快。 - 修改数据
使用 update 修改表中的数据:
1、更新表中的特定行
2、更新表中的所有行
update语句有3部分组成,分别是:
- 要更新的表
- 列名和他们的新值
- 确定要更新的过滤条件
语法:update 表名 set 列名称=新的值 where 列名称=某值
set 命令用来将新值赋给被更新的列
修改多个字段的值
只需要使用单个set命令,每个 “列=值”之间用逗号分隔,最后一列不用逗号。
为了删除某个列的值,可设置它为NULL(允许为null)- 删除数据
使用delete语句,去删除表中的数据
1、从表中删除特定的行
2、删所有行
- 创建表: