MySQL

欢迎访问本网页

你好! 这是结合别人的观点加我自己的理解的文章,如有错误的地方欢迎大家指正

1.MySQL 相关概念介绍

MySQL 为关系型数据库(Relational Database Management System),“关系型”可以理解为“表格”的概念,一个关系型数据库由一个或数个表格组成。

在这里插入图片描述

表头(header): 每一列的名称;
列(row): 具有相同数据类型的数据的集合;
行(col): 每一行用来描述某个人/物的具体信息;
值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
键(key): 表中用来识别某个特定的人/物的方法, 键的值在当前列中具有唯一性。

2.MySQL 脚本的基本组成

MySQL 通过执行 SQL 脚本来完成对数据库的操作, 该脚本由一条或多条 MySQL 语句(SQL 语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为 .sql。在控制台下, MySQL 客户端也可以对语句进行单句的执行而不用保存为.sql 文件。

标识符:标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其他地方引用。 MySQL 标识符使用万能命名规则:标识符由字母、数字或下划线(_) 组成, 且第一个字符必须是字母或下划线。对于标识符是否区分大小写取决于当前的操作系统, Windows 下是不敏感的,但对于大多数 linux\textbackslash unix 系统来说, 这些标识符大小写是敏感的。
关键字:关键字有自己特定的含义, 尽量避免作为标识符。
语句:MySQL 语句是组成 MySQL 脚本的基本单位, 每条语句能完成特定的操作, 他是由 SQL 标准语句 + MySQL 扩展语句组成。
函数:MySQL 函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。

数字类型:
整数: tinyint、 smallint、 mediumint、 int、 bigint;
浮点数: float、 double、 real、 decimal;

日期和时间:
date、 time、 datetime、 timestamp、 year;

字符串类型:
字符串: char、 varchar;
文本: tinytext、 text、 mediumtext、 longtext;
二进制(可用来存储图片、音乐等): tinyblob、 blob、mediumblob、 longblob.

4.使用 MySQL 数据库

4.1 登录 MySQL

  以管理员身份启动命令提示符,通过net start mysql或者net start mysql57(后面数字为版本号)来启动MySQL 服务。安装的时候可以选择服务名,我在安装的时候服务名是MySQL57,在Windows下启动服务名是不区分大小写的,在命令提示符里运行后者就可以了。

启动:net start mysql
停止:net stop mysql
卸载:net delete mysql
启动服务后,输入以下格式的命令登录数据库:mysql -h 主机名 -u 用户名 -p;

-h : 该命令用于指定客户端所要登录的 MySQL 主机名, 登录当前机器该参数可以省略;
-u : 所要登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项.
以登录刚刚安装在本机的 MySQL 数据库为例, 在命令行下输入mysql -u root -p按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

      Enter password:

  若密码存在, 输入密码登录, 不存在则直接按回车登录,默认 root 账号是无密码的。登录成功后你将会看到 Welecome to the MySQL monitor... 的提示语。然后命令提示符会一直以 mysql>加一个闪烁的光标等待命令的输入, 输入 exit或quit退出登录。

4.2 创建一个数据库

  创建数据库命令格式:create database 数据库名 [其他选项];

  为了便于在命令提示符下显示中文,在创建时通过character set gbk将数据库字符编码指定为gbk。创建成功时会得到 Query OK, 1 row affected(0.02sec) 的响应。

  注意: MySQL 语句以分号(;)作为语句的结束, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, 但加分号是一定不会错的);

  提示: 可以使用 show databases; 命令查看已经创建了哪些数据库。

4.3 选择所要操作的数据库

  4.3.1 查看当前数据库的方式

通过函数database()实现
mysql> SELECT database();

通过show tables实现
mysql> show tables;
注:注意查看列头形式, 格式为:Tables_in_[db_name]

通过status实现
mysql> status;
注:注意结果中的"Current database"信息

4.3.2 修改当前数据库

  要对一个数据库进行操作, 必须先选择该数据库, 否则会提示错误:ERROR 1046(3D000): No database selected

  两种方式对数据库进行使用的选择:
       一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p;
       二: 在登录后使用 use 语句指定, 命令:use 数据库名。use 语句可以不加分号,加上也不会出错, 执行 “use + 已创建数据库名” 来选择创建的数据库, 选择成功后会提示: Database changed.



  4.3.3 查看已存在的数据库和数据表

    使用show databases;语句可以查看所有的数据库,然后使用use 数据库名;选择数据库,使用show tables;可以查看当前数据库(刚选择的数据库)中的所有数据表了。如果查看某个数据表中的数据,使用select * from 数据表名;就可以了。

4.4 创建数据库表

创建数据库表:create table 表名称(列声明);
查看已经创建的表名称:show tables;
查看已创建的表的详细信息:describe 表名;
如下创建一个数据库表:
create table students

id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default “_”
);

  指定多列形成复合主键,即不在单个变量后使用关键字primary key,而是在创建变量完成后,采用primary key(变量1, 变量2, ...)的形式,方式如下:

create table students

id int unsigned not null auto_increment,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default “_”,
primary key(id, name)
);

  可以通过任何文本编辑器将语句输入好后保存为 createtable.sql 的文件中, 通过命令提示符下的文件重定向执行执行该脚本。打开命令提示符, 输入:mysql -D samp_db -u root -p < createtable.sql.(提示: 1.如果连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作目录下需指定文件的完整路径。 )

  create table tablename (columns);为创建数据库表的命令,列的名称以及该列的数据类型将在括号内完成。
  “id int unsigned not null auto_increment primary key”解释:

“id”:为列名称;
“int”:指定该列的数据类型为int,后面用"unsigned" 加以修饰,表示该类型是无符号型;
“not null”:说明该列不能为空;
“auto_incremen”:在整数列中使用,作用是插入数据时若该列为null,将自动产生一个比现存值更大的唯一标识符。在每张表中仅能有一个这样的值且所在列必须为索引列;
“primary key”:表示该列是表的主键,值唯一。

4.5向表中插入数据

  insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:

      insert [into] 表名 [(列名 1, 列名 2, 列名 3, ...)] values (值 1, 值 2, 值 3, ...);

  有时我们只需要插入部分数据, 或者不按照列的顺序进行插入, 可以使用这样的形式进行插入:
      insert into students (name, sex, age) values(“孙丽”, “女”, 21);

4.6 查询表中的数据

  select语句:select 列名称 from 表名称 [查询条件];可以使用通配符*查询表中所有内容。
  特定条件查询:select 列名称 from 表名称 where 条件;

where 列明 = 值
=、 \textgreater 、 \textless 、 \textless=、 \textgreater=、 !=
is [not] null、 in、 like
or 和 and 组合查询

4.7 更新表中的数据

  update语句可以更新表中数据,命令格式:update 表名称 set 列名称= 新值 where 更新条件;

4.8 删除表中的数据
delete语句用于删除表中的数据,删除满足条件的一行或者多行数据,命令格式:delete from 表名称 \ where 删除条件;

4.9 创建后表的修改
alter table 语句用于创建后对表的修改。

添加列:alter table 表名\ add 列名 \ 列数据类型\ [after 插入位置];
修改列:alter table 表名\ change 列名称 \ 列新名称\ 新数据类型;
删除列:alter table 表名\ drop 列名称;
重命名表:alter table 表名 \ rename 新表名;
删除整张表:drop table 表名;
删除整个数据库:drop database 数据库名;

  1. 查看所有表

show tables;
1
我在前面就提过,一个MySQL里面有多个数据库,所以,一个数据库里面也可以有多个表,当然,一个表里面也可以有多个数据

这里因为我只在“test”数据库里创建了一个数据表“stu”,所以显示了一个

  1. 显示创建表

show create table XX(表名);
show create table XX(表名) \G;
1
2
上面两段代码都是显示创建表,只不过显示的样式不同,读者随意选择一种即可

  1. 显示表结构

describe(或desc) XX(表名);
1
显示表结构就会展示表中有哪些字段,分别是什么类型,有没有默认值,为不为空,哪个是主键

  1. 删除表(删除多个表)

drop table XX(表名);
drop table XX,XX,XX…;
1
2
上面的一句代码是删除一个表,下面的代码是一次性删除多个表

5.数据的基本操作

数据的操作算是整个MySQL中最复杂的部分,虽然概括起来无非就是“增删查改”,但每一项底下包含的内容非常之多,作者在这里只能尽量为大家解释比较重要的操作

  1. 插入数据(增加)

insert into XX(表名) (字段1,字段2,字段3…) values (值1,值2,值3…);
1

这里,我插入两组数据,分别是学号为“2016101”,姓名为“李白”,成绩是“83”和学号为“2016102”,姓名为“杜甫”,成绩是“91”的两位同学的信息

这里还需要给大家做一点补充,如果大家还记得之前我们创建数据表的时候,“id”和“name”都是varchar型,也就是字符串型,字符串型的数据,插入的时候就要加上””
字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致
插入字段是可以省略的,这时插入的值和数据表的字段顺序和个数必须一致

  1. 查询数据(查)

这里本来应该按照顺序给大家讲删除数据的,但是因为想给的大家看一下插入数据之后,表内变成什么样了,让大家加深印象,所以这里讲查询数据,首先给大家介绍一个知识点——运算符

比较运算符 >、>=、<、<=、=(比较和赋值都是”=”)、<>(不等于)
逻辑运算符 and(与)、or(或)、非(not)

查询该表内的所有数据
select * from XX(表名);

1
举个例子,我们查询stu表下的所有数据,因为我等会讲的例子涉及到“性别”,所以我提前新增了一个字段名叫“sex”

查询该表内某字段的所有数据
select 字段1,字段2,字段3…(或用"*"代替所有字段) from XX(表名);
1
举个例子,我们查询“id”字段底下所有的数据,那么”id“下有哪些数据,就会展现出来

查询某条件的所有数据
select * from XX(表名)where 字段1 = 值1 and 字段2 = 值2 and …;
1
这段代码的意思是,从某个表中找出满足条件一且满足条件二的数据,例如,我们想要寻找成绩等于91分,且性别为女的学生信息

这里也可以改成,我们想寻找成绩大于90分或者成绩小于60分的学生信息,那么代码就应该是

select * from stu where score > 90 or score < 60;
1
由低到高排序
select * from XX(表名) order by 字段x asc;(默认就是升序)
1
由高到低排序
select * from XX(表名) order by 字段x desc;
1
按某条件排序
select * from XX(表名) where 字段x = 值x oreder by 字段x asc(desc);
1
取前n条数据
select * from XX(表名) limit n;
1
从第n条开始(起始位置是0)取m条
select * from XX(表名) limit n,m;
1
查询某排序下的前n条数据
select * from XX(表名) order by 字段x asc(desc) limit n;
1
这几条语句之所以不附上例子,是因为考虑到读者如果有耐心看到了这里,那么你应该基本掌握了MySQL的语法,不再需要例子去模仿,只需要告诉你使用什么语句,所以下面的代码也是一样,不再附上例子

  1. 删除数据(删)

delete from XX(表名) where 字段x = 值x;
1
4. 修改数据(改)

update XX(表名) set 字段1 = 值1,字段2 = 值2 where 条件;
update XX(表名) set 字段1 = 值1;

1
2
下面一条的作用是修改某一字段的所有值,所以不需要加条件

5.聚合函数

sum(); 求和 select sum(字段x) from XX(表名);
avg(); 求平均值 select avg(字段x) from XX(表名);
max(); 求最大值 select max(字段x) from XX(表名);
min(); 求最小值 select min(字段x) from XX(表名);
count(); 记录数 select count(字段x) from XX(表名);/select max(*) from XX(表名);
在某字段条件下使用函数 select 函数名() from XX(表名) where 字段x = 值x;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值