MySql命令行

来源:互联网 发布:mac 照片 导出 编辑:程序博客网 时间:2024/06/05 18:47

服务器端安装

  • 安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入

sudo apt-get install mysql-server

  • 启动服务

sudo service mysql start

  • 停止服务

sudo service mysql stop

  • 重启服务

sudo service mysql restart

配置

  • 配置文件目录为/etc/mysql/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

客户端

图形化界面客户端navicat

  • 进入解压的目录,运行如下命令

./start_navicat

  • 问题一:中文乱码

  • 解决:打开start_navicat文件

将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8"

  • 问题二:试用期
  • 解决:删除用户目录下的.navicat64目录

    cd ~


rm -r .navicat64
  • 详细连接的命令可以查看帮助文档

命令行连接

  • 在工作中主要使用命令操作方式,要求熟练编写

  • 打开终端,运行命令

mysql -uroot -p
回车后输入密码

或后面直接加您的密码

  • 登录成功后,输入如下命令查看效果

查看版本:select version();

显示当前时间:select now();

数据库

  • 查看所有数据库

show databases;

  • 使用数据库

use 数据库名;

  • 查看当前使用的数据库

select database();

  • 创建数据库

create database 数据库名 charset=utf8;

  • 删除数据库

drop database python;

数据表

  • 查看当前数据库中所有表

show tables;

  • 查看表结构

desc 表名;

  • 创建表
  • auto_increment表示自动增长
CREATE TABLE table_name(    column1 datatype contrai,    column2 datatype,    column3 datatype,    .....    columnN datatype,    PRIMARY KEY(one or more columns));

`– 例:创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(10)
);

例:创建学生表
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','人妖','保密'),
cls_id int unsigned default 0
)

  • 修改表-添加字段

alter table students add birthday datetime;

  • 修改表-修改字段:重命名版

alter table 表名 change 原名 新名 类型及约束;
例:
alter table students change birthday birth datetime not null;

  • 修改表-修改字段:不重命名版

alter table 表名 modify 列名 类型及约束;

例:
alter table students modify birth date not null;

  • 修改表-删除字段

alter table 表名 drop 列名;

例:
alter table students drop birthday;

  • 查看表的创建语句

show create table 表名;

例:
show create table classes;

增删改查(curd)

查询基本使用

  • 查询所有列

select * from 表名;

例:
select * from classes;

  • 查询指定列
  • 可以使用as为列或表指定别名

select 列1,列2,… from 表名;

例:
select id,name from classes;

增加

insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');

insert into classes values(0,’python1’),(0,’python2’);

insert into students(name) values(‘杨康’),(‘杨过’),(‘小龙女’);

修改

update students set gender=0,hometown=’古墓’ where id=5;

删除

delete from students where id=5;

备份

mysqldump –uroot –p 数据库名 > python.sql;

恢复

mysql -uroot –p 新数据库名 < python.sql

聚合函数

  • 例1:查询学生总数

    select count(*) from students;

  • 例2:查询女生的编号最大值

    select max(id) from students where gender=0;

  • 例3:查询未删除的学生最小编号

    select min(id) from students where isdelete=0;

  • 例4:查询男生的编号之和

    select sum(id) from students where gender=1;

  • 例5:查询未删除女生的编号平均值

    select avg(id) from students where isdelete=0 and gender=0;

分组

  • 例1:查询男女生总数
    select gender as 性别,count(*)
    from students
    group by gender;

对比where与having

  • where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
  • having是对group by的结果进行筛选

分页

  • 语法

    select * from 表名
    limit start,count


select * from students
where gender=1
limit 0,3;

子查询(sub query)

标量子查询

  • 查询班级学生的平均身高
    select * from students where age > (select avg(age) from students);

列级子查询

  • 查询还有学生在班的所有班级名字
    select name from pythons where id in (select cls_id from students);

行级子查询

  • 需求: 查找班级年龄最大,身高最高的学生
    select * from students where (height,age) = (select max(height),max(age) from students);

表级子查询

  • 查询学生与班级对应的信息
    select * from
    (select stu.*,pys.name as clsname from students as stu inner join pythons as pys on stu.cls_id = pys.id)
    as t1;

子查询中特定关键字使用

  • in

  • any|some

SELECT * FROM classes WHERE id = any(SELECT DISTINCT cls_id FROM students);

  • all

SELECT * from classes WHERE id != ALL (SELECT DISTINCT cls_id FROM students WHERE cls_id BETWEEN 2 and 4);

完整sql语句

SELECT select_expr [,select_expr,...] [
FROM tb_name
[WHERE 条件判断]
[GROUP BY {col_name | postion} [ASC | DESC], ...]
[HAVING WHERE 条件判断]
[ORDER BY {col_name|expr|postion} [ASC | DESC], ...]
[ LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]

select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit start,count

原创粉丝点击