一、MySQL登录与退出

登录

1
mysql -uroot -proot       -u代表用户  -p代表密码

image-20211028205015608

退出

1
2
3
mysql> exit
mysql> quit
mysql> \q

二、MySQL数据库的一些解释

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

1
2
3
4
5
6
7
MySQL 是开源的,目前隶属于 Oracle 旗下产品。
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL 使用标准的 SQL 数据语言形式。
MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的MySQL 系统。

三、MySQL注释符

1
2
3
1、# ...
2、-- ...
3、/*...*/

image-20211026142701500

四、数据库的一些基本操作

1、数据库的增删改查

1
2
3
4
5
增:create database db1;
删:drop database db1;
改:alter database db1 charset utf8
查:show databases; 查看所有数据库
show create database db1; 查看指定数据库

image-20211026141556965

image-20211026141710007

image-20211026142158352

image-20211026140808070

1
2
3
use mysql      use--->选择数据库
show tables 查看当前库里面所有的表
select * password from user where user='root' 查看当前教据库里面的表user 用户为root的密码
1
select database(); 查看你当前在那个数据库

image-20211026143409318

1
show status; --显示一些系统特定资源的信息,例如,正在运行的线程数量。

image-20211026143451558

1
desc tabl_name;显示表结构,字段类型,主键,是否为空等属性,但不显示外键。

image-20211026143645506

五、表的操作

1、查看表结构

1
desc table_name;

2、查看表的内容

1
select * from table_name;

3、建立表

创建一个表

1
create table users(id int);

image-20211026145115167

删除表

1
drop table users;

创建一个完整的表

1
2
3
4
5
6
CREATETABLE表名(
属性名(字段名) 数据类型[完整约束条件]
属性名 数据类型[完整约束条件]
......
属性名 数据类型[完整约束条件]
) ;
1
2
3
4
5
6
完整的建立表的语句
create table user (id int (7) AUTO_INCREMENT,
username varchar (100) not null,
password varchar (100) not null,
PRIMARY KEY(id) 设置主键
)ENGINE=InnoDB DEFAULT CHARSET=utf8; 设置数据引擎,字符编码

image-20211026150156058

4、修改表的操作

4.1修改表名
1
ALTER TABLE 旧表名 RENAME 新表名
1
alter table user rename new_user;

image-20211026150603737

4.2修改字段的数据类型
1
ALTER TABLE 表名 MODIFY 属性名 数据类型
1
alter table users modify username char(255);

image-20211026150949486

4.3修改字段
1
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型
1
alter table users change username name varchar(255) not null;

image-20211026151300481

4.4增加字段名
1
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整约束条件] [FIRST | AFTER 属性名2];
1
alter table users add email varchar(100) not null;

image-20211026151652019

4.5删除字段
1
ALTER  TABLE 表名 DROP 属性名
1
alter table users drop email;

image-20211026151830514

六、数据的增删改查

1、增——添加数据

1
INSERT INTO 表名 (字段名1,字段名2,....) VALUES(值1,值2,...);
1
insert into users(id,username,password)values(1,'cobra','123456');

image-20211027092650514

1
INSERT INTO 表名 VALUES(值1,值2,....);      不指定字段名
1
insert into users values(null,'test','123456');

image-20211027092951863

1.1、为表的指定字段添加数据
1
INSERT INTO 表名 (字段名) VALUES(值);
1
insert into users(username)values('cobra');

image-20211027093400169

1.2、同时添加多条数据
1
INSERT INTO 表名 (字段名1,字段名2,....) VALUES(值1,值2,...),(值1,值2,...);
1
insert into users (id,username,password)values(null,'cobra','123456'),(null,'alert',123123);

image-20211027093745219

2、删——删除数据

2.1、删除部分数据
1
2
DELETE FROM 表名 WHERE 条件表达式 
若 DELETE 语句中没有使用WHERE语句,则会将表中所有记录都删除。
1
delete from users where id=1; 

image-20211027094247947

2.2、删除全部数据的另一种方法——TRUNCATE
1
TRUNCATE TABLE  表名;
1
使用TRUNCATE语句删除记录后,新添加的记录时,自动增长字段(users表中的id字段)会默认从1开始,而使用DELETE删除记录后,新添加记录时,自动增长字段会从删除时该字段的的最大值加1开始计算(即原来的id最大为5,则会从6开始计算)。所以如果是想彻底删除一个表的记录而且不会影响到重新添加记录,最好使用TRUNCATE来删除整个表的记录。

3、改——更新数据

3.1、更改部分数据
1
UPDATE 表名 SET 字段名1=值1,[字段名2=值2...] where 条件表达式
1
update users set password='aaaa' where id =1;

image-20211027095208426

3.2、修改全部数据
1
在UPDATE语句中若不使用WHERE,则会将表中所有记录的指定字段都进行更新。
1
update users set password=111111;

image-20211027095444585

4、查——查询数据

1
select * from users;   *代表所有字段
4.1、查询指定字段
1
select username,password from users;

image-20211027095758916

4.2、条件查询
1
select * from users where id=1;

image-20211027100038431

4.3按关系运算符来查询
1
SELECT 字段名1,字段名2,... FROM 表名 WHERE 条件表达式
1
select * from users where id<4;

image-20211027100359673

4.4、带IN关键字的查询
1
2
select * from users where id in(1,2,3);
select * from users where id not in(1,2,3);

image-20211027100709314

image-20211027100825104

注意:NOTIN 与IN相反,查询的是不在指定范围

4.5、带DISTINCT关键字的查询

很多表中某些字段的数据存在重复的值,可以使用DISTINCT关键字来过滤重复的值,只保留一个值。

1
SELECT DISTINCT 字段名 FROM 表名; 
1
select distinct username from users;

image-20211027101220138

4.6、带BETWEEN AND 关键字的查询

BETWEEN AND 用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会。

1
SELECT *|{字段名1,字段名2,...} FROM 表名 WHERE 字段名[NOT] BETWEEN 值1 AND 值2;
1
select id, username from users where id between 1 and 4;

image-20211027101746481

4.7、带LIKE 关键字的查询
1
SELECT * | 字段名1,字段名2,... FROM 表名 WHERE 字段名[NOT] LIKE '匹配字符';
1
2
select * from users where username like '%c%';
% 为通配符

image-20211027102525990

七、高级查询

1、聚合函数

函数名称 作用
COUNT() 返回某列的行数
SUM() 返回某列值的和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值
1.1、COUNT()函数
1
SELECT COUNT(*) FROM users;
1
select count(*) from users;

image-20211027192951922

2、分组查询

2.1、使用GROUP BY 关键字查询
1
SELECT * FROM USERS GROUP BY USERNAME;

image-20211027193914862

2.2、使用LIMIT限制查询结果的数量
1
SELECT 字段名1,字段名2,... FROM 表名 LIMIT[OFFSET]记录数
1
select * from users limit 3;

image-20211027194426151

1
select * from users limit 1,4;

image-20211027194510146

3、为表和字段取别名

在进行查询操作时,如果表名很长使用起来不方便,可以为表取一个别名来代替表的名称。

3.1、为表取别名
1
SELECT * FROM 表名[AS] 别名;
1
select * from users as u where u.id;

image-20211027194821305

3.2、为字段取别名
1
SELECT 字段名 [AS] 别名 FROM 表名;
1
select username as u from users;

image-20211027195055096

八、联合查询(两个表的查询)

注释:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL当ALL随UNION一起使用时(即UNION ALL),不消除重复行

1
select * from users union select * from news;

image-20211027202740306

union的用法及注意事项:两次查询的列数必须一致

九、INFORMATION_SCHEMA

1、information_schema库

在MySQL>5.0中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在information_schema中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

image-20211028200208843

2、通过information_schema库里面的表来查询其他库表的数据

查询库

1
select SCHEMA_NAME from information_schema.SCHEMATA limit 1,1

image-20211028200700993

查询表

1
select TABLE_NAME from information_schema.`TABLES` where TABLE_SCHEMA='cobra_db'

image-20211028201913831

查询列

1
2
3
select COLUMN_NAME from information_schema.`COLUMNS` where TABLE_SCHEMA='cobra_db' and TABLE_NAME='users'

select COLUMN_NAME from information_schema.`COLUMNS` where TABLE_NAME='users'

image-20211028201849684

查询数据

1
select id,username,password from cobra_db.users

image-20211028202041525