MySQL基础
数据库基础
- 数据库 保存有组织的数据的容器(通常是一个文件或一组文件)。
-
表 某种特定类型数据的结构化清单。
- 同一个数据库中的表名唯一。
-
列 表中的一个字段。所有的表都是由一个或多个列组成。
- 正确的将数据分解为多个列很重要,合理的分解有助于对数据进行排序和过滤。
- 数据类型 所容许的数据的类型。每个表列都有相应的数据类型,他限制(或容许)该列中存储的数据。
-
行 表中的一个记录。
- 很大程度上,行和数据库记录时等价的。
-
主键 一列(或一组列),其值能够唯一区分表中每个行。
- 任意两行都不具有相同的主键值;
- 每个行都必须具有一个主键值(主键列不允许null值);
- 主键不总是必须的,但大多数数据库设计人员都应保证他们创建的每个表都具有一个主键,以便于以后的数据操纵和管理。
MySQL基础
1、登录
为了连接到MySQL,需要一下信息:
- 主机名(计算机名)——如果连接门第MySQL服务器,为localhost‘;
- 端口(如果使用默认端口3306之外的端口);
- 一个合法的用户名;
- 用户口令密码
在命令行界面可以使用mysql -u username -h hostname -p -P port
命令进行登录
2、选择数据库
在最初连接到MySql时,没有任何数据库打开供你使用。在你能执行任意数据库操作之前,需要选择一个数据库。为此,可以使用USE关键字。
关键字:作为MySQL语言组成部分的一个保留字。绝不要用关键字明明一个表或者列
为了使用crashcourse数据库,应该输入以下内容:
3、了解数据库和表
数据库、表、列、用户、权限等的信息被存储在数据库和表中,不过,内部的表一般不直接访问,可以使用MySQL的SHOW
命令来显示这些信息。
例如,查询数据库信息,使用show databases
命令:
再例如,显示一个数据库下的表的列表,使用shoe tables
命令:
show关键字也可以用来显示表列show columns from tablename
:
这样的命令还有:
-
show status;
用于显示广泛的服务器状态信息; -
show create database
和show create table
分别用来显示创建特定数据库或表的MySQL语句; -
show grants
用来显示授权用户(所有用户或特定用户)的安全权限; -
shoe errors
和show warnings
用来显示服务器错误或警告信息。
4、数据检索
关键字select
用于数据检索。
为了使用select检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
4.1 检索单个列
检索单个列使用的语句为select column_name from table_name
注意:SQL语句结束必须以分号(;)分隔。而且SQL语句不区分大小写
4.2 检索多个列
检索多个列与检索单个列基本一样,列名之间使用“,”隔开即可
如果是要查表中所有的列,可以使用“*”代替列名。
4.3 检索不同的行
select返回所有匹配的行,如果不想要每个值每次都出现,例如
类型值会重复出现,如果想要只出现一次,可以在列名之前使用distinct
关键字
不能部分使用distinct distinct关键字应用与所有列而不仅是前置它的列。如果查询两个或两个以上的列,除非所有的列都不同,否则所有行都将被检索出来。
4.4 限制结果
select语句返回所有匹配的行,他们可能是指定表中的每个行。为了返回第一行或者前加行,可以使用limit子句。
限制只返回三行数据,默认是返回前三行,如果想要得出下一个三行,可以指定药检所的开始行和行数,如下所示:
4.5 排序数据
子句 SQL语句由子句构成,有些子句是必须的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。自居的例子有select语句的from子句等。
为了明确的排序用select语句检索出的数据,可以使用order by
子句。order by子句取一个或多个列的名字,据此对输出进行排序。
首先是无排序的查询:
然后是排序后的查询:
也可以按照多个列进行排序,多列排序的规则是——首先按照指定的第一列进行排序,然后再按照指定的顺序进行排序。
排序可以指定方向,默认是升序排列(A-Z),还可以使用order by子句进行降序排列。为了降序排列,必须指定desc
关键字。
上面的例子进行降序排列之后的结果如下:
可以看出与正序排列相反。
4.6 过滤数据
使用where子句进行指定条件的搜索。
检索条件可以是单个值,也可以是一个范围:小于(<),大于(>),不等于(<>),范围值(between 5 and 10),空值(is null)
数据过滤可以有多个条件,多个条件之间使用and
或者or
操作符进行链接
过滤条件还可以是一个列表,使用in
或not in
操作符来匹配括号中的值