mysql学习

Posted 代码当酒喝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql学习相关的知识,希望对你有一定的参考价值。

1.简单介绍

主流数据

MS SQL Server, Oracle,DB2,Informix, Sybase等

他们都是被称为“关系数据库”的一种遵循sql标准的软件产品。

mysql数据库的基本结构

在这里插入图片描述

几个关键词单词

DBMS: 数据库(管理)系统,是我们“安装”而得到的。
DB,DataBase: 数据库,一个数据库系统中可以存放多个数据库。
通常一个项目(网站)使用一个数据库来存储其中的数据。
table:表,一个数据库中可以存放多个表。
row:行,指一行数据,一个表中可以有很多行。
record:记录,也是指一行数据。
column:列,指一列数据,一个表可以有若干列。
field:字段(列名),指数据表中的一列的名称(类似表头),一个表可以有若干字段。

关系数据库

关系数据库是指基于关系模型而设计的数据库系统。
所谓关系,其实就是指一个二维表(table)(有行有列)。
一行有多个数据,就表示这多个数据是具有内在关系的(同属一个“实体”)。
在这里插入图片描述

2.访问mysql数据库服务器

开启/关闭mysql服务

net start mysql
net stop mysql

客户端连接/退出数据库服务器

1.cmd(也是客户端)

mysql  -h主机地址  -u用户名  -p

用cmd客户端登录后,请立即使用

set  names  gbk;

表示当前连接到数据库的“客户端”的字符编码是gbk(固定的,不可更改)。

退出数据库命令:

quit;exit;\\q;

2.navicat

3. phpmyadmin

略 ,这种方式,需要单独配置一个虚拟站点,进行操作
可以把phpmyadmin理解成一个网站

3.数据库操作

查看所有数据库

show databases;

在这里插入图片描述

创建数据库

create  database  数据库名  [charset  字符集名称]  [collate  校对规则名];

字符集名类似这些: utf8, gbk, gb2312, big5, ascii等。推荐用utf8。
校对规则名:通常都不用写,而是使用所设定字符集的默认校对规则。

校对规则的到底是干嘛用的?

比如:“中”和“国”,有这样的可能排序方式:
按拼音
按笔顺
按编码

想知道有哪些字符集可以用?

show  charset;

在这里插入图片描述
想知道有哪些字符集可以校对规则?

show  collation;

在这里插入图片描述
在这里插入图片描述

查看数据库创建信息

show  create  database  数据库名;

在这里插入图片描述

删除现有数据库

drop  database  数据库名;

在这里插入图片描述

修改数据库

修改数据库,其实只是修改数据库的字符编码或校对规则。
其实一般都不需要修改。

alter  database  数据库名  charset  新的字符集名称  collate 新的校对规则名;

在这里插入图片描述

选择使用那个数据库;

一个项目中,具体进行有关数据操作(增删改查)之前,都需要先“选择/进入”该数据库。

use  数据库名;

4.数据表操作

创建数据表

create  table  数据表名  (字段1,字段2... )[charset=字符集]  [engine=表类型];

字段的形式为: 字段名  字段类型  [字段属性...]
字符集包括:utf,gbk,gb2312,big5等等,默认是数据库的字符集,可以不写。
表类型包括:InnoDB,  MyIsam 等,默认是InnoDB,可以不写。

表类型简单理解就是,不同类型的表性能和功能不同,如上默认是InnoDB表示功能是最全的,MyIsam 性能比较好,但是除了基本的增删改查相对于InnoDB类型的表,还缺失了一些功能,因此有个矛盾,就是你想要功能多,那就要损失一些性能,如果是要性能好,那么会少一些功能。

再举个例子,跑车是不是颜值高很拉风,但是却没有五菱宏光那么实用,载人比较多,还能拉货。

案例:最简化创建表

create table table1 (
id int,
name varchar(10),
sex char(1),
age int
);

在这里插入图片描述

案例:给表指定字符集和类型

create table table2 (
id int,
name varchar(10),
sex char(1),
age int
)charset utf8 engine MyIsam;

查看所有数据表

创建好的表如何查看呢?

show  tables;

在这里插入图片描述

查看表结构

所谓数据表的结构,其实就是一个表的每个字段的具体信息。

desc 表名;

在这里插入图片描述
这里出现了一个ID,默认值为null,你想一下这个id为null是否合理?肯定不合理,应该是一个数字嘛,但是这里是初学,所以先这样。

注意:

Key:这里有个先不看,后面会学
Type:这个类型是数据类型,而不是指如InnoDB..这种建表类型

查看表的创建语句

show  create  table  表名;

在这里插入图片描述

删除数据表

drop  table  表名

在这里插入图片描述

修改数据表

修改数据表主要是
修改表名
添加字段
修改字段
删除字段
修改表的字符集

添加字段

alter  table  表名  add  字段名  字段类型  [字段属性...]  [after 某字段名 或first];

after 某字段名:意思是,新加的字段,放在该现有字段的后面;
first:表示新加的字段放在第一位(最前面)

demo默认添加一个字段在最后一行

alter table table2 add salary float;

字段: salary 薪水
在这里插入图片描述

demo默认添加一个字段在第一行

字段:height 身高

alter table table2 add height float first;

在这里插入图片描述

demo默认添加一个字段在某个字段之后

字段:hobby 爱好

alter table table2 add hobby varchar(10) after name;

在这里插入图片描述

修改字段

alter  table  表名  change  旧字段名  新字段名  字段类型  [字段属性...] [after 某字段名 或first];;

如果不修改字段名,而只修改字段的其他信息,则可以使用:
alter  table  表名  modify  要修改的字段名  字段类型  [字段属性...] [after 某字段名 或first];;

demo:修改字段名称以及字段属性

alter table table2 change salary xinshui int default 0;

在这里插入图片描述

demo:修改字段名称属性以及字段位置

alter table table2 change xinshui salary int default 0 after name;

在这里插入图片描述

demo:使用modify修改字段的其它属性

在这里插入图片描述

删除字段

alter  table  表名  drop  要删除的字段名;

demo

alter table table2 drop height;

在这里插入图片描述

修改表名

alter  table  表名  rename  新的表名;

demo

alter table table2 rename user;

在这里插入图片描述

修改字符集;

alter  table  表名  charset=新的字符集;

demo

alter table user charset=utf8mb4;

在这里插入图片描述

5.数据的操作

插入数据

insert  into  表名 (字段名1, 字段名2, ... )  values  (数据1, 数据2, ... );



说明:
1 字段名和数据是“一一对应”的,包括:数量一致,顺序一致,类型匹配。
2 对于要写入的数据,字符串和时间日期类型,要用单引号引起来。
3 可以省略“字段列表”部分,此时就需要给出跟字段数量一样多的数据,类似这样:
insert  into  表名  values  (数据1, 数据2, ... );

demo 指定特定字段

insert into user (id,name) values (1,'lisi');

在这里插入图片描述

demo 默认不写字段要一一对应

直接复制到cmd黑窗口客户端

insert into user  values (2,'xiaohong','html','1',20,10000);
insert into user  values (3,'xiaogang','css','0',22,15000);
insert into user  values (4,'xiaomei','js','1',24,16000);

在这里插入图片描述

查询数据

select  字段名1, 字段名2, ...   from  表名  [ where  条件]1,select后的字段列表用于设定要从表中取出的哪些字段的值。
2,select后可以只使用一个“*”号表示取出该表中所有字段的值。
3,where条件表示取出的数据所应满足的条件,比如:
①	where  id < 10 表示取出那些字段id的值小于10的行。 
②	where  age > 60 表示取出那些字段age的值大于60的行
4,where条件可以不写,就取出所有行的数据。



demo 查询指定字段(开发中一般都是指定)

select name,id,sex from user;

在这里插入图片描述

demo 查询所有字段

select id,name,sex from user where age < 24 and salary > 10000;

and :可以理解为编程语言中的 与 运算符
在这里插入图片描述

demo 限制查询条件

select * from user;

在这里插入图片描述

删除数据

delete  from  表名  [where 条件]1, 删除数据指的是删除表的某些行,比如原来有10行,可以将其中的3行删除,则剩下7行。
2, where条件表示删除数据所应满足的条件,含义跟select中的一样。
3, where 条件可以不写,如果不写,则会删除所有数据——通常都不会这么用。

在这里插入图片描述

修改数据

update  表名  set  字段名1 = 新值1, 字段名2=新值2, ...  [where条件]1, 修改数据指的是修改表的某些行的某些字段。
2, where条件表示修改数据所应满足的条件,含义跟select中的一样。
3, where 条件可以不写,如果不写,则会修改所有数据——通常都不会这么用。

demo 给用户表中的xiaohong张新

update user set salary = 15000 where name = 'xiaohong';

在这里插入图片描述

以上是关于mysql学习的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

从mysql的片段中加载ListView

学习笔记:python3,代码片段(2017)

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段