MySql数据库介绍
MySQL是一个[关系型数据库管理系统],由瑞典 [MySQL AB]公司开发,属于 [Oracle]旗下产品。MySQL是最流行的[关系型数据库管理系统]之一,在 [WEB]应用方面,MySQL是最好的[RDBMS]应用软件之一。
MySQL是一种关系型数据库管理系统,[关系数据库]将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和[商业版]由于其体积小、速度快、总体拥有成本低,尤其是[开放源码]这一特点,一般中小型和大型网站的开发都选择 MySQL作为[网站数据库] 更多
一、安装和配置
直接安装
下载地址 : www.mysql.com/downloads/
集成安装
XAMPP
安装后mac 配置 mySql
- 1、进入文件:vi ~/.bash_profile
- 添加语句:PATH=$PATH:/usr/local/mysql/bin
- 执行bash_profile 让文件生效 : source ~/.bash_profile
- 查看配置是否成功 mysql -uroot -p
- 输入密码
安装好后查看表
- 查看数据库 :show databases;
- 创建数据库: create database name;
- 切换数据库: use sys;
- 查看表: show tables;
- 链接mysql: mysql -u用户名 -p
- 退出:exit;quit;
- 修改root密码:
方法1:用 SET PASSWORD 命令
- 首先登录 MySQL。
- 格式:mysql> set password=password('新密码');
- 命令:mysql> set password=password('123456'); 方法2: 用 UPDATE 直接编辑 user 表
- 首先登录 MySQL。
- mysql> use mysql;
- mysql> update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;
- mysql> flush privileges; 7、增加新用户
- 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
- 增加一个用户user1,密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
- mysql> grant select,insert,update,delete on . to user1@localhost Identified by "password1";
- 若希望该用户能在任何服务器上登陆mysql,则将localhost改为"%"。
- 若不想user1有密码,则可以用下面的命令将密码去掉:
- mysql> grant select,insert,update,delete on mydb.* to user1@localhost identified by "";
8、删除SQL用户
mysql> delete from user where User="用户名" and Host="服务器IP地址"
一、启动与退出
1、启动 MySQL 服务
net start mysql 或 service mysql start
2、关闭 MySQL 服务
net stop mysql 或 service mysql stop
二、数据库操作
1、显示所有的数据库(注意:最后有个 s)
mysql> show databases;
2、切换数据库
mysql> use 数据库名;
3、查看当前数据库中包含的表信息(注意:最后有个 s)
mysql> show tables;
4、查看数据表的结构(表的列)
mysql> desc 表名; 或 describe 表名;
5、查看当前使用的数据库
mysql> select database();
6、创建数据库
mysql> create database 数据库名;
7、删除数据库
mysql> drop database 数据库名;
8、执行 sql 脚本文件(.sql 文件)
mysql> source 脚本文件名;
9、建表与删表
mysql> use 库名;
mysql> create table 表名(字段列表);
// 创建表
//DEFAULT CHARSET 'UTF8'; 设置表编码为utf8
create table `students`(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex SMALLINT NOT NULL,
in_time DATETIME NULL ) DEFAULT CHARSET 'UTF8';
//插入数据
insert into students values(1,'zhangsan',1,'2024-01-14 14:00:00')
// 可以不指定主键
insert into students(name,sex,in_time) value('zhangwa',0,now())
//插入多条语句
insert into students(name,sex,in_time) values
('zhangwa1',0,now()),
('zhangwa2',0,now()),
('zhangwa3',0,now()),
('zhangwa4',0,now());
mysql> drop table 表名;
10、清空表中记录
mysql> delete from 表名;
11、显示表中的记录
mysql> select * from 表名;
// 查询整个表
select * from students;
//查询字段
select id,name,sex from students where sex=1;
// order by 排序默认正序 desc 倒叙
select id,name,sex from students where sex=1 order by id desc;
//limit 分页
select id,name,sex from students where sex=1 order by id desc limit 0,2;
12、往表中加入记录
mysql> insert into 表名 values ("hyq","M");
13、更新表中数据
mysql> update 表名 set 字段1="f" where 字段2='hyq';
update students set sex=2 where sex=0
// 删除一行
delete from students where name='gjf2' and in_time=null;
14、备份数据库
mysql> mysqldump -u root 库名>xxx.data
15、显示数据库版本
mysql> select version();
16、显示当前的时间
mysql> select now();
17、消除重复行—distinct
mysql> select distinct 字段 from 表名;
18、起别名再用别名调用字段—as
mysql> select s.字段1, s.字段2 from 表名 as s;
19、条件查询—比较运算符> < !=
mysql> select * from 表名 where 字段>19;
20、条件查询—逻辑运算符and or not
mysql> select * from 表名 where 字段>=17 and 字段<=27;
21、模糊查询—like
mysql> select * from 表名 where 字段 like "李%";
22、空判断—is null
mysql> select * from 表名 where 字段 is null;
23、查询改字段内的排序—order by 单个字段(asc从小到大排序,默认从小到大,desc 从大到小排序)
mysql> select * from 表名 where (字段1 between 18 and 26)and 字段2=2 order by 字段2 asc;
24、查询改字段内的排序—order by 多个字段(按字段1降序,字段2升序)
mysql> select * from 表名 where(字段2 between 17 and 37) and 字段3=2 order by 字段1 desc ,字段2 asc;
25、聚合函数—count(*)统计列数,count(字段)一样
mysql> select count(*) from 表名 where 字段=2;
26、最大值,最小值,求和,平均
mysql> select max(字段), min(字段),sum(字段),avg(字段) from 表名;
27、group by 字段
mysql> select 字段 from 表名 group by 字段;
28、用来分组查询后指定一些条件的查询结果—group by + having
mysql> select 字段,count() from 表名 group by 字段 having count()>2;
29、先建立两个表—表名1和表名2
内连接查询表名1和表名2
mysql> select * from 表名2 inner join 表名1 on 表名2.字段2=表名1.字段1;
左连接查询表名1和表名2
mysql> select * from 表名2 as s left join 表名1 as c on s.字段2=c.字段1;
右连接查询表名1和表名2
mysql> select * from 表名2 as s right join 表名1 as c on s.字段2=c.字段1;
30、查看索引
mysql> show index from 表名;
31、创建索引
mysql> create index 索引名称 on 表名(字符段名称(长度))
32、删除索引
mysql> drop index 索引名称 on 表名;
33、开启运行时间
mysql> set profiling=1;
34、查看执行时间
mysql> show profiles;
三、导出和导入数据(数据的备份与恢复)
1、导出数据(数据的备份)
mysql> mysqldump --opt test > mysql.test
将test数据库导出到mysql.test文件,后者是一个文本文件,就是把数据库dbname导出到文件mysql.dbname中。
命令:mysql> mysqldump -u root -p123456 --databases dbname > mysql.dbname
或
mysqldump -h 主机地址 -u 用户名 -p 数据库名 > dbname_backup.sql
2、导入数据(数据的恢复)
命令:mysql> mysqlimport -u root -p123456 < mysql.dbname
或
mysqladmin -h 主机地址 -u 用户名 -p create 新数据库名
mysqldump -h 主机地址 -u 用户名 -p 新数据库名 < dbname_backup.sql
3、将文本数据导入数据库
文本数据的字段数据之间用tab键隔开。
mysql> use test;
mysql> load data local infile "文件名" into table 表名;