MySQL常用的操作命令

Client表示客户端 ,MySQL是客户端的工具

凡是能操作MySQL的地方都叫做客户端,例如shell

客户端的作用是帮助我们与MySQL建立连接

service表示服务端,最终数据储存在service

MySQL数据库服务器、数据库和表的关系:

步骤:登录数据库 => 创建数据库 => 切换到指定数据库 => 创建表 => 使用表
mysql –u用户名 –p密码(DOS窗口作为client)
关系:数据库服务器 => 数据库 => 表,从左到右为一对多的关系。
数据库最小单位:行

mysql客户端程序 mysql客户端命令_数据库

一、常用命令

登录MySQL
mysql -uroot -p

查看有哪些数据库(末尾分号务必加上),默认有4个数据库
show databases;

切换数据库(在使用某个数据库之前必须先切换)
use 数据库名;

查看某个数据库下的所有的表
show tables;

查看某张表中的所有数据(最简单的SQL)
select*from 表名;
如果数据较多的话,使用关键字limit来指定显示多少行
select*from 表名 limit n;
创建数据库
creat database (if not exists) 数据库名;

查看所创建的数据库
show create database 数据库名;

查看当前使用的数据库
select database();
创建表(创建表的时候建议借助其他的编辑器来编辑好,然后复制粘贴到mysql中)
	语法:
		create table 表名(
		列名1 类型
		,列名2 类型
		,列名3 类型
		...
		)
	举例:创建一张学生表(student),包含id、name、age
		create table stu(
		id int
		,name varchar(20)	//在MySQL中字符串类型用varchar(),需要加入参数
		,age int
		);
查看所创建的表
方法一:
	show create table 表名;
方法二:
	desc 表名;//查看的是表的内部结构

mysql客户端程序 mysql客户端命令_表名_02

删除表
drop table 表名;

删除数据库
drop database (if exists) 数据库名;
Ctrl + U
清楚正在输入时光标左侧的所有指令

二、SQL分类

SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能

DDL 
	数据定义语言 - Data Definition Language
	用来定义数据库的对象,如数据表、视图、索引等
DML 
	数据处理语言 - Data Manipulation Language
	在数据库表中更新,增加和删除记录
	如 update, insert, delete
DCL
	数据控制语言 – Data Control Language
	指用于设置用户权限和控制事务语句
	如 grant(授权),revoke,if…else,while,begin transaction
DQL
	数据查询语言 – Data Query Language
	select

1、数据定义语言DDL----操作数据库、表、视图的语句

操作数据库、表、视图的语句,包括创建、修改、删除
create database------创建库
create table---------创建表
alter table----------修改表
drop table-----------删除表
create view----------创建视图
alter view-----------修改视图
drop view------------删除视图
truncate table-------清空表
(1)创建、查看、删除数据库
    创建数据库:
    create database (if not exists) 数据库名;
    查看有哪些数据库(默认有4个数据库):
    show databases;
    查看创建的数据库:
    show create database 数据库名;
    删除数据库:
    drop database (if exists) 数据库名;
    
(2)使用数据库
	切换数据库(在使用某个数据库之前必须先切换):
	use 数据库名;
	查看当前使用的数据库:
	select database();
	
(3)mysql不允许修改数据库名!
	只能删除重建
mysql数据类型

1、mysql基本数据类型

mysql客户端程序 mysql客户端命令_mysql客户端程序_03

2、日期时间类型和字符串类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR

类型(字节)    大小范围       格式                 用途
DATE	      3		  YYYY-MM-DD	          日期值
TIME	      3		  HH:MM:SS	              时间值或持续时间
YEAR	      1		  YYYY	                  年份值
DATETIME	  8	      YYYY-MM-DD HH:MM:SS	  混合日期和时间值
TIMESTAMP	  4	      YYYYMMDD HHMMSS	      混合日期和时间值,时间戳

字符串类型 主要是:varchar和char
在定义字符串的时候需要指定长度,例如:varchar(8),char(8)
varchar是可变的字符串,长度可以修改;
char是固定的字符串,一旦定义后,长度不可修改;

UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
MySQL的基本语句

1、创建表的基本语句

create table if not exists `runoob_tbl1`(
   `runoob_id` int unsigned auto_increment comment '主键id',
   `runoob_title` varchar(100) not null default '' comment '标题',
   `runoob_author` varchar(40) not null,
   `submission_date` date,
   primary key ( `runoob_id` )
)comment 'runoob' engine=innodb default charset=utf8;


unsigned:无符号的
auto_increment定义列为自增的属性,一般用于主键,数值会自动加1

如果不想字段(列)为null,可以设置字段的属性为not null,
设置后,如果操作数据表时如果输入该字段的数据为null,就会报错

default设置字段的默认值

primary key()关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔

engine设置存储引擎,charset设置编码

comment对表或表的字段添加注释

2、修改表以及表中的数据

修改表的前提是已经创建了表

(1)修改表

修改表名:
	rename table 原表名 to 新表名;

删除表:
	truncate table 表名;	//不可逆,谨慎!

(2)修改表中的数据

追加字段(列):
	alter table 表名 add(字段名称 字段类型() not null default '');
举例:
	alter table stu add(gender varchar(1) not null default '男');
修改字段名称:
	alter table 表名 change 原字段名称 新字段名称 新字段类型();

修改字段类型的参数:
	alter table 表名 modify 字段名称 字段类型(填想要修改的数值);
举例:
	alter table stu modify age int(15);
删除字段:
	alter table 表名 drop 字段名称;

3、修改字符集

修改表的编码:
	alter table 表名 character set '新编码';

修改数据库的编码:
	alter database 数据库名 character set '新编码';
举例:
	alter database db1 character set 'utf8';


前面说到,当想要操作数据库中的表,必须先切换到该数据库,实际上不切换到该数据库,仍然有另外一种方式来操作数据库中的表:数据库名.表名

修改字段的编码:
alter table 数据库名.表名 modify column 原字段名 原字段类型() character set '新编码';

2、数据处理语言DML----操作表中的数据(插入、更新、删除)

数据在数据库中的存储方式

所谓创建表,其实我们在声明定义列,也叫字段。定义完成之后直接往表中插入数据即可

(1)插入----将数据插入表
insert into 表名(列名1,列名2,列名3..) values(列名1对应的值,列名2对应的值,列名3对应的值..);

insert into向表里插入字符类型,字符要加上单引号或者双引号
insert into一次只能插入一行数据,当再次插入第二行时,(列名1,列名2,列名3..)可省略不写

举例:
	insert into stu(id,name,age) values(1,'张三',25);
	insert into stu values(2,'李四',28);
	
注意:
	(1)插入的数据应与字段的数据类型相同
	(2)数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
	(3)在values中列出的数据位置必须与被加入的列的排列位置相对应。
	(4)字符和日期型数据应包含在单引号中
	(5)插入空值时:不指定或者直接写insert into table value(null)

例如:

mysql客户端程序 mysql客户端命令_表名_04

(2)更新----更新表中的数据
更新某字段下的的所有值(更新后的值都一样)
update 表名 set 表达式;
举例:
	update stu set age=20;	//更新后,所有的age的值都变成了20

更新指定的字段下的值,需要加个条件
update 表名 set 表达式1 where 表达式2;
举例:
	update stu set age=22 where name='李四';	//将李四的年龄更新为22
	
	update stu set age=age+2 where id<=3;	//将id<=3的年龄都加2

注意:
	(1)update语法可以用新值更新原有表行中的各列
	(2)set子句指示要修改哪些列和要给予哪些值
	(3)where子句指定应更新哪些行;如没有where子句,则更新所有的行
(3)删除----删除表中的数据
delete from 表名 where 表达式;

注意:
	(1)如果不使用where子句,将删除表中所有数据
	(2)delete语句不能删除某一列的值(可使用update)
	(3)使用delete语句仅删除表内的数据,不删除表本身。如要删除表,使用drop table语句
	(4)删除表中的所有数据也可使用truncate table语句

3、数据查询语言DQL

查询的语法:
select column_name,column_name
from table_name
[where clause]
[limit n][offect m]

注意:
    查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件
    SELECT 命令可以读取一条或者多条记录
    可以使用星号(*)SELECT语句会返回表的所有字段数据
    可以使用 WHERE 语句来包含任何条件。
    可以使用 LIMIT 属性来设定返回的记录数。
    可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
查看该表中的所有数据

显示n行:
select*from 表名 limit n;

从第n+1行开始显示,显示m行 (n,m]
select*from 表名 limit n m;

select*from 表名 limit n offset m;
从第m+1行开始显示,显示n行

查询特定的列对应的数据:
select 列名1,列名2.. from 表名  limit n;

想给列名1更换一个名字(取个别名)
select 列名1 as ‘新列名1’,列名2,.. from 表名  limit n;

想给列名1、列名2都更换一个名字(取个别名),第2个as可省略
select 列名1 as ‘新列名1’,列名2 ‘新列名2’,列名3,.. from 表名  limit n;

电脑中有一个sql文件,如何在mysql中使用

方法一步骤:
        ①将电脑已有的sql文件添加到Xftp中
        [root@master ~]# pwd查询sql文件的绝对路径

        ②切换到mysql中,使用一个数据库

        ③执行该sql文件(末尾无分号):
        source /sql文件的绝对路径/sql文件名

        ③执行完sql文件后,相当于将sql文件导入在了数据库中
        这时候可以查看导入的sql文件了
        查看该表中的所有数据(如果数据较多,使用limit控制显示的行数)
        select*from 表名 limit 行数;

方法二步骤:
        ①将电脑已有的sql文件添加到Xftp中

        ②将sql文件导入mysql的数据库
        [root@master ~]# mysql -uroot -p 数据库名 < sql文件名

        ③查看该表中的所有数据(如果数据较多,使用limit)
        select*from 表名 limit 行数;

where子句----用于筛选过滤

比较运算符

> < <= >= = <> !=

大于、小于、小于等于、大于等于、不等于、不等于

between ...and...

显示在某一区间的值(左闭右闭)

in(set)

显示在in列表中的值,例:in(100,200)

like '张_'

模糊查询 使用% 和 _

Is null

判断是否为空

逻辑运算符

and

多个条件同时成立

or

多个条件任一成立

not

不成立,例:where not(expection>10000);

in(set)的用法
查询指定的数据
select*from 表名 where 列名 in(指定该列下的值);

举例:
查看id为112,113,114的所有数据
select*from stu where id in(112,113,114);
like '张_'的用法
查询姓张的所有人的信息
select*from stu where name like '张%';

查询姓张的所有人的信息(名字要是三个字就要用两个下划线'张__')
select*from stu where name like '张_';

Select语句

基本select语句
查询所有
select [distinct] * from table;
查询指定
select [distinct] column1, column2. column3.. from table;

distinct:去重。查询的结果去除重复的
加入distinct,会根据所给的字段进行比较,如果有一个字段下的信息不一样,则不会去重

注意:
	select 指定查询哪些列的数据。
    column指定列名。
    *号代表查询所有列。大数据查询一般不使用。
    from指定查询哪张表。
    DISTINCT可选,指显示结果时,是否剔除重复数据
在select语句中可使用表达式对查询的列进行运算
select *|{column1|expression, column2|expression,..} from table;

select *|{column1|expression, column2|expression,..} from table;


在select语句中可使用as语句:
给字段起的别名
select column as 别名 from 表名;

在表格中加入一列,字段为一百,数据全部为100
select id,name,age,100 '一百' from stu limit 10;

做判断、常量使用
再加入一列,字段为1=0,false为0,true为1
select id,name,age,100 '一百',1=0 from stu limit 10;

mysql客户端程序 mysql客户端命令_表名_05