MYSQL
什么是MYSQL
MYSQL是按照数据结构来组织、存储和管理数据的仓库。简单来说,数据库相当于文件夹,而数据库中的表相当于文件夹中的文件,表中的数据相当于文件中的具体内容。
数据库的基本操作
登录数据库
先在命令行中切换到mysql中的bin目录下,输入mysql -h 主机 -u 用户名 -p密码(密码可省略)。
退出数据库
输入exit,quit,\p即可退出数据库。
查看数据库
输入show databases;即可查看当前数据库中所有的数据库.
选择数据库
输入use 数据库名;即可选择当前数据库.
创建数据库
输入create database 数据库名;即可创建一个数据库.
删除数据库
输入drop database 数据库名;即可删除一个数据库.
修改数据库
输入alter database 数据库名 character set 字符集;用于修改数据库的默认字符集、排序规则等属性。
数据库表的基本操作
查看表
输入show tables;即可查看当前数据库中所有的表.
创建表
输入create table 表名(字段名 数据类型,字段名 数据类型,...);即可创建一个表.
CREATE TABLE 表名 (列名1 数据类型 [约束条件],列名2 数据类型 [约束条件],...[表级约束]
);
例如:
CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,age INT,gender VARCHAR(10),email VARCHAR(50)
)engine=innodb default charset=utf8;
解释:
id
:列名,数据类型为INT,主键,自动增长。name
:列名,数据类型为VARCHAR(20),长度为20,非空。age
:列名,数据类型为INT。gender
:列名,数据类型为VARCHAR(10)。email
:列名,数据类型为VARCHAR(50)。engine=innodb
:指定表的存储引擎为InnoDB。default charset=utf8
:指定表的默认字符集为UTF-8。
约束条件
约束条件用于限制表中的数据,以保证数据的完整性和一致性。常见的约束条件有:
PRIMARY KEY
:主键,用于唯一标识表中的每一行。NOT NULL
:非空,用于限制字段不能为空。UNIQUE
:唯一,用于限制字段中的值不能重复。FOREIGN KEY
:外键,用于限制字段中的值必须存在于另一个表中。CHECK
:检查,用于限制字段中的值必须满足指定的条件。DEFAULT
:默认值,用于指定字段的默认值。
删除表
输入drop table 表名;即可删除一个表.
修改表
输入alter table 表名 change 旧属性名 新属性名 新数据类型,新约束条件;即可修改表名.
输入alter table 表名 add 字段名 数据类型 约束条件;即可向表中添加一个字段.
输入alter table 表名 modify 字段名 新数据类型;即可修改表中字段的数据类型.
输入alter table 表名 drop 字段名;即可删除表中字段.
输入alter table 表名 ENGINE=存储引擎名;即可更改表的存储引擎。
其他操作
desc 表名;用于查看表的结构,字段类型,主键,是否为空等属性。
show status;用于查看数据库的状态信息。
show created database 数据库名;用于查看数据库的创建信息。
show create table 表名;用于查看表的创建信息。
数据的增删改查
插入数据
输入insert into 表名(字段名1,字段名2,...) values(值1,值2,...);即可向表中插入数据.
查询数据
输入select * from 表名;即可查询表中的所有数据.
输入select 字段名1,字段名2,... from 表名 (where 条件);
输入select 字段名1,字段名2,... from 表名 (where 字段名 between 值1 and 值2);
select disctinct 字段名 from 表名;用于查询表中字段名不重复的数据.
select * form 表名 where 字段名1=‘值1’ and(or) 字段名2=‘值2’;多条件查询。
聚合查询
select count(字段名) from 表名;用于查询表中字段名的个数。
select sum(字段名) from 表名;用于查询表中字段名的总和。
select avg(字段名) from 表名;用于查询表中字段名的平均值。
select max(字段名) from 表名;用于查询表中字段名的最大值。
select min(字段名) from 表名;用于查询表中字段名的最小值。
排序查询
select 字段名 from 表名 order by 字段名 asc/desc;用于查询表中字段名的排序,默认为升序。
分组查询
select 字段名 from 表名 group by 字段名;用于查询表中字段名的分组。
分页查询
select 字段名 from 表名 limit 起始索引,查询条数;用于查询表中字段名的分页查询。
子查询
select 字段名 from 表名 where 字段名 in (select 字段名 from 表名);用于查询表中字段名的子查询。
select 字段名 from (select 字段名 from 表名) as 别名 where 条件;用于查询表中字段名的子查询,并给子查询起一个别名。
select 字段名 from 表名 where EXISTS (select 字段名 from 表名);用于查询表中字段名的子查询,EXISTS表示子查询中有数据就返回true,没有数据就返回false。
联合查询(两表查询)
select 字段名 from 表名1 union/union all select 字段名 from 表名2;用于查询表中字段名的联合查询,union表示去重,union all表示不去重。
连接查询
select 字段名 from 表名1 [inner/left/right] join 表名2 on 表名1.字段名=表名2.字段名;用于查询表中字段名的连接查询,inner表示内连接,left表示左连接,right表示右连接。
区别:
- 内连接:只显示两表中匹配的数据。
- 左连接:显示左表中的所有数据,如果右表中没有匹配的数据,则显示NULL。
- 右连接:显示右表中的所有数据,如果左表中没有匹配的数据,则显示NULL。
修改数据
输入update 表名 set 字段名1=值1,字段名2=值2,... where 条件;即可修改表中的数据.
删除数据
输入delete from 表名 where 条件;即可删除表中的数据.