Mysql 常用命令

1. 数据库启动和连接

1.1 连接

格式1 mysql -u用户名 -p密码

mysql –uroot -proot

格式2 mysql -u用户名 -p (回车键)

密码

格式3 mysql -hip地址 -u用户名 -p密码

mysql –h127.0.0.1 –uroot -proot

1.2 退出

exit

1.3 修改密码

连接权限数据库: use mysql; 
改密码:update user set password=password("123") where user="root";

1.4 导入sql文件

先创建数据库

create test

导入命令

source D:\test01.sql

在MySQL外部导入

mysql -u root -p < test.sql;

2.DDL语句

DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter等

2.1 DDL操作数据库

2.1.1 创建数据库

  1. 直接创建数据库
create database 数据库名;
  1. 判断是否存在并创建数据库
create database if not exists 数据库名;
  1. 创建数据库并指定字符集(编码表)
create database 数据库名 character set 字符集;

2.1.2 查看数据库

  1. 查看所有的数据库
show databases;
  1. 查看一个数据库的定义信息
show create database 数据库名;

2.1.3 修改数据库

修改数据库字符集格式

alter database 数据库名 default character set 字符集;

2.1.4 删除数据库

drop database 数据库名;

2.1.5 使用数据库

  1. 使用数据库
use 数据库;

2.查看正在使用的数据库

select database();

2.2 DDL操作表

2.2.1 创建表

create table 表名 (字段1, 字段类型1, 字段2, 字段类型2 ...);

具体操作

CREATE TABLE student (
      id INT not null auto_increment primary key,
      name VARCHAR(20) not null comment '用户名称',
      birthday DATE
)

2.2.2 查看表

1.查看某个数据库中的所有表

show tables;
  1. 查看结构
desc tables;

3.查看创建表的sql语句

show create table 表名;

4.快速创建一个表结构相同的表

create table 新表名 like 旧表名;

2.2.3 删除表

  1. 直接删除
drop table 表名;

2.判断表是否存在并删除表

drop table if exits 表名;

2.2.4 修改表结构

  1. 添加列
alter table 表名 add 列名 类型;

例如 :为学生表添加一个新的字段remark,类型为varchar(20)

alter table student add remark varchar(20);
  1. 修改列类型
alter table 表名 modify 列名 新类型;
  1. 修改列名
alter table 表名 change 旧列名 新列明 类型;
  1. 删除列
alter table 表名 drop 列名;
  1. 修改表名
rename table 表名 to 新表名;
  1. 修改字符集
alter table 表名 character set 字符集;

3.DML语句

DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update等

3.1 插入记录

3.1.2 插入方式1(写出字段)

insert into 表名 (字段名1, 字段名2, ...) values (1,2, ...);

3.1.2 插入方式2(不写字段)

insert into 表名 values (1,2,3);

例子:

insert into student(id,name,age,sex,address,phone,birthday,math,english)
values(2,'小美',18,'女','上海市','18888888888','2011-12-12',65.5,99.2);

3.2 蠕虫复制

什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中

  • 将student表中的数据添加到student2表中
insert into 表名1 select * from 表名2;

3.3 更新表数据

  1. 修改数据(一个)
update 表名 set 字段名 = 值 where 字段名 =;
  1. 修改数据(多个)
update 表名 set 字段名 =, 字段名 = 值 where 字段名 =;

3.4 删除表记录

delete from 表名 where 字段名 =;
truncate table 表名;

truncate和delete的区别:

  • delete是将表中的数据一条一条删除
  • truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

4.DQL

DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where等

4.1 简单查询

4.1.1 查询表中所有数据

  1. 使用 * 表示所有列
select * from 表名;
  1. 写出查询某列名称
select 字段1, 字段2, 字段3 from 表名;

4.1.2 别名查询

select 字段1 as 别名, 字段2 as 别名 from 表名;

4.1.3 清除重复值

insert distinct 字段1,字段2 from 表名;

4.1.4查询结果参与运算

  1. 某列数据和固定值运算
select 列名1 + 固定值 列别名 from 表名;

查询姓名、年龄,将每个人的年龄增加10岁

select name, age + 10 from student;

4.2 条件查询

4.2.1比较运算符

大于
<小于
<=小于等于
=大于等于
=等于
<>、!=不等于

select * from 表名 字段名 >;

4.2.2 逻辑运算符

and 多个条件同时满足
or 多个条件其中一个满足
not 不满足

例:

select * from 表名 字段1 > 值 and 字段2 <;

4.2.3 范围

BETWEEN 值1 AND 值2 表示从值1到值2范围,包头又包尾

select * from 表名 where 字段 between '2013-01-01' and '2017-01-01';

4.2.4 模糊查询

MySQL通配符有两个:

%: 表示0个或多个字符(任意个字符)
_: 表示一个字符

select * from 表名 where 字段名 like '通配符字符串' 

例如:查询姓名中包含’孙’字的英雄

SELECT * FROM hero WHERE name LIKE '孙%';

4.2.5 排序

ASC: 升序, 默认是升序
DESC: 降序

select 字段名 from 表名 where 字段 = 值 order by 字段名 [asc | desc];

4.2.6 聚合函数

五个聚合函数:
count: 统计指定列记录数,记录为NULL的不统计
sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0

select count(字段名| *) from 表名;

4.2.7 分组

要结合聚合函数才有意义

select sum(字段名) from 表名 group by 字段名

4.2.8 having与where的区别

having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数

SELECT sex,count(*) FROM hero WHERE age < 30 GROUP BY sex HAVING COUNT(*) < 2;

4.2.9 limit语句

LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];
思考:limit子句为什么排在最后?
因为前面所有的限制条件都处理完了,只剩下显示多少条记录的问题了!

-- 每页显示5-- 第一页: LIMIT 0,5;	跳过0条,显示5-- 第二页: LIMIT 5,5;  跳过5条,显示5-- 第三页: LIMIT 10,5; 跳过10条,显示5条
SELECT * FROM hero LIMIT 0,5;
SELECT * FROM hero LIMIT 5,5;
SELECT * FROM hero LIMIT 10,5;

5.数据库约束

PRIMARY KEY: 主键
UNIQUE: 唯一
NOT NULL: 非空
DEFAULT: 默认
FOREIGN KEY: 外键

5.1 主键自增

AUTO_INCREMENT

5.2 默认

DEFAULT

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