MySQL教程学习笔记

目录

前言

一.用户管理

二.DDL语法和DML操作

1.数据库的创建,删除,表的创建

2.插入,查询,更新

3.like子句,order by

4.UNION

5.排序order by

6.分组GROUP BY

7.连接

8.正则表达

9.alter命令

10.临时表

11.复制表

12.过滤重复数据

13.导出数据

14.导入数据

参考文献


前言

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。本文MySQL使用版本为8.0.11,安装在window10下。

一.用户管理

-----window10下本地登入mysql
mysql -u root -p

------远程登入mysql,需要mysql修改远程登入权限设置,192.168.1.*为MySQL安装的ip地址
mysql -h 192.168.1.* -u root -p

添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。 MySQL 8.0.11 版本之后创建用户方法如下:

/*创建用户,'lu'为要创建的用户名,'123456'为密码*/
create user 'lu'@'localhost' identified by '123456';
/*用户的授权,*.*表示对所有数据库均授予这些权力*/
grant select,insert,update,delete,create,drop on *.* to 'lu'@'localhost';
/*用户的授权,demo.*表示对demo数据库授予这些权力*/
grant select,insert,update,delete,create,drop on demo.* to 'lu'@'localhost';
/*授予所有权限*/
grant all privileges on *.* to 'lu'@'localhost';
/*查看用户权限*/
show grants for 'lu'@'localhost';

二.DDL语法和DML操作

1.数据库的创建,删除,表的创建

/*创建数据库,mydb为创建的数据库名*/
create database if not exists mydb;
/*删除数据库,mydb为删除的数据库名*/
drop database if exists mydb;
/*选择数据库*/
use mydb;
/*创建表*/
create table if not exists Student(
	`id` int UNSIGNED AUTO_INCREMENT, #AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
	`s_name` varchar(20) not null default '',
	`s_brith` varchar(20) not null default '',
	`s_sex` varchar(20) not null default '',
	primary key(`id`) #PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。 
)ENGINE=InnoDB DEFAULT CHARSET=utf8;#ENGINE 设置存储引擎,CHARSET 设置编码。

2.插入,查询,更新

#插入数据
insert into Student(id,s_name,s_brith,s_sex) values(01,'赵雷','1990-01-01','男');
insert into Student values(02,'钱电','1990-12-21','男');
insert into Student values(03,'孙风','1990-05-20','男');
insert into Student values(04,'李云','1990-08-06','男');
insert into Student values(05,'周梅','1990-12-01','女');
insert into Student values(06,'吴兰','1990-03-01','女');
insert into Student values(07,'郑竹','1990-07-01','女');
insert into Student values(08,'王菊','1990-01-20','女');

#查询数据
#select * from Student where s_sex='男';

#update修改和更新mysq数据
#更新表中某字段值UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
update Student set s_sex='男女' where id=3;
#修改表中某字段值
update Student set s_sex=replace(s_sex,'女','女女') where id=7;

#delete删除数据
#DELETE FROM table_name [WHERE Clause]
delete from Student where id=1;#不指定where将删除所有记录

MySQL教程学习笔记_第1张图片

3.like子句,order by

#like子句,order by:通过某个列进行排序,asc:升序,desc:降序
select * from Student where s_sex like '%女' order by s_sex desc;#%字符来表示任意字符,类似于UNIX或正则表达式中的星号 *

MySQL教程学习笔记_第2张图片

4.UNION

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

select s_name as name_score_80 from student where s_name like '赵%'
union
select s_score from score where s_score > 80;

 

MySQL教程学习笔记_第3张图片

5.排序order by

--先根据c_id进行排序,再跟s_score排序
select * from score order by c_id,s_score;

MySQL教程学习笔记_第4张图片

6.分组GROUP BY

select c_id,sum(s_score) as sum_score from score group by c_id;

MySQL教程学习笔记_第5张图片

7.连接

INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取score表中所有id字段在student表对应的id字段值。

select * from score a
    inner join
    student b on a.s_id=b.s_id;

MySQL教程学习笔记_第6张图片

left join:读取左边数据表的全部数据,即便右边边表无对应数据。

MySQL教程学习笔记_第7张图片

right join:读取右边数据表的全部数据,即便左边边表无对应数据。

MySQL教程学习笔记_第8张图片

8.正则表达

MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

MySQL教程学习笔记_第9张图片

-- 查找s_brith字段中以'1990-01'为开头的所有数据:
select s_brith from student where s_brith regexp '^1990-01';
-- 查找s_brith字段中以'01'为结尾的所有数据:
select s_brith from student where s_brith regexp '01$';
-- 查找s_brith字段中'12'的所有数据:
select s_brith from student where s_brith regexp '12';

 

9.alter命令

--删除表中name字段,如果数据表中只剩余一个字段则无法使用DROP来删除字段。
alter table student drop s_name;

--ADD 子句来向数据表中添加列
alter table student add s_name char;

--指定新增字段的位置
alter table student add s_name string first; --第一个字段
alter table student add s_name string after id; --id字段后

--修改字段类型及名称
alter table student modify s_name CHAR(10);
--或
alter table student change old_name new_name CHAR(10);

--修改表名
alter table student rename to new_student;

 

10.临时表

临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

--创建临时表
create temporary table temp_table(name varchar not null);
--删除临死表
drop table temp_table;

11.复制表

--只复制表结构到新表
create table new_table like old_table;
--复制表结构及数据到新表
create table new_table select * from old_table;

12.过滤重复数据

select distinct name from student;
--或者
select name from student group by name;

13.导出数据

select * from student into outfile'/tmp/table.txt'
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n';

14.导入数据

load data local infile 'tmp.txt' into table mytable;

参考文献

https://www.runoob.com/mysql/mysql-operator.html

你可能感兴趣的:(mysql,数据库)