mysql数据库的基本操作
程序员文章站
2022-05-31 21:45:23
...
mysql安装
- 安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入
sudo apt-get install mysql-server
- 启动服务
sudo service mysql start
- 停止服务
sudo service mysql stop
- 重启服务
sudo service mysql restart
- 查看进程中是否存在mysql服务
ps ajx|grep mysql
配置
- 配置文件目录为/etc/mysql/mysql.cnf
- 进入conf.d目录,打开mysql.cnf,发现并没有配置
- 进入mysql.conf.d目录,打开mysql.cnf,可以看到配置项
- 主要配置项如下
-
bind-address表示服务器绑定的ip,默认为127.0.0.1
-
port表示端口,默认为3306
-
datadir表示数据库目录,默认为/var/lib/mysql
-
general_log_file表示普通日志,默认为/var/log/mysql/mysql.log
-
log_error表示错误日志,默认为/var/log/mysql/error.log
-
客户端
sudo apt-get install mysql-client
登陆
mysql -u root -pmysql
- root :登陆用户名
- mysql: 登陆密码
退出
quit 或者 exit
查看版本:
select version();
显示当前时间:
select now();
查看所有数据库
show databases;
使用数据库
use 数据库名;
查看当前使用的数据库
select database();
创建数据库
create database 数据库名 charset=utf8;
删除数据库
drop database 数据库名;
数据表
查看当前数据库中所有表
show tables;
查看表结构
desc 表名;
创建表
CREATE TABLE table_name(字段1 约束条件,字段2 约束条件,.......)
修改表-添加字段
alter table 表名 add 字段名 类型;
修改表-修改字段:重命名
alter table 表名 change 原名 新名 类型及约束;
修改表-修改字段:不重命名
alter table 表名 modify 字段名 类型及约束;
修改表-删除字段
alter table 表名 drop 字段名;
删除表
drop table 表名;
查看表的创建语句
show create table 表名;
增删改查
查询所有列
select * from 表名;
查询指定字段
select 字段名1,字段名2,... from 表名 as 别名;
消除重复行
select distinct 字段1,... from 表名;
条件查询
select * from 表名 where 条件;
- 比较运算符
- 等于: =
- 大于: >
- 大于等于: >=
- 小于: <
- 小于等于: <=
- 不等于: != 或 <>
- 逻辑运算符
- and
- or
- not
- 模糊查询
- like
- %表示任意多个任意字符
- _表示一个任意字符
- 范围查询
- in表示在一个非连续的范围内
- between … and …表示在一个连续的范围内
- 空判断
- 判空is null
- 判非空is not null
- 优先级
- 优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
- and比or先运算,如果同时出现并希望先算or,需要结合()使用
增加
- 全部插入
insert into 表名 values(所有字段对应的数据)
- 部分插入
insert into 表名(字段名1,...) values(对应值1,...)
- 全列多行插入
insert into 表名 values(字段1的值1,字段2的值1),(字段1的值2,字段2的值2)...;
insert into 表名(字段1,...) values(值1,...),(值2,...)...;
修改
update 表名 set 字段1=值1,字段2=值2... where 条件
删除
delete from 表名 where 条件
备份
mysqldump –uroot –p 数据库名 > 数据名.sql;
恢复
mysql -uroot –p 新数据库名 < 数据名.sql;
排序
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]
- 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序
- 默认按照列值从小到大排列(asc)
- asc从小到大排列,即升序
- desc从大到小排序,即降序
聚合函数
- 总数
- count(*)表示计算总行数,括号中写星与列名,结果是相同的
select count(*) from 表名;
- 最大值
- max(列)表示求此列的最大值
select max(字段) from 表名 where 条件;
- 最小值
- min(列)表示求此列的最小值
select mix(字段) from 表名 where 条件;
- 求和
- sum(列)表示求此列的和
select sum(字段) from 表名 where 条件;
- 平均值
- avg(列)表示求此列的平均值
select avg(字段) from 表名 where 条件;
分页
- 从start开始,获取count条数据
select * from 表名 where limit start ,count;
连接查询
- 内连接查询:查询的结果为两个表匹配到的数据
select * from 表1 inner join 表2 on 表1.字段 = 表2.字段;
- 右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
select * from 表1 right join 表2 on 表1.字段 = 表2.字段;
- 左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
select * from 表1 left join 表2 on 表1.字段 = 表2.字段;
子查询
- 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句
- 主要查询的对象,第一条 select 语句
select 字段名 from 表名 where 条件 in (select 字段名 from 表名);
mysql创建用户并授权
创建用户
CREATE USER 'username'@'host' IDENTIFIFD BY 'password';
说明
- username ,你将创建的用户名;
- host ,指定该用户在那个主机上可以登陆,如果是本地用户可以用localhost,如果想让用户从任意远程主机登陆,可以用通配符%;
- password ,该用户登陆的密码。可以为空,如果为空表示该用户可以不需要使用密码登陆;
授权
GRANT privileges ON dbname.tablename TO 'username'@'host'
- privileges 用户的权限,如SELECT, INSERT, UPDATE等,如果使用所有权限使用ALL
- dbname 数据库名
- tablename 表名,
- 如果是授予该用户所有的数据库和表和所有权限,可用*表示
列如
GRANT ALL ON *.*TO 'username'@'host'