一、命令行操作MySQL
-
启动命令行
快捷键:win+R 弹出运行框,在“运行”框中输入
cmd
回车 -
DOS命令
盘符+冒号
切换逻辑盘 如:d:
dir
显示目录和文件列表
cd 目录名
进入目录
cd ../
进入上一级目录
cd ./
进入当前目录
cd /
进入根目录
exit
退出命令行
注意:如果提示符是逻辑盘符,说明正在DOS命令行下,只能使用DOS命令
按上方向键↑
可以把之前写过的命令显示出来 -
连接数据库
语法:mysql -h主机名 -u用户名 -p密码
如:mysql -hlocalhost -uroot -proot
注意:当提示符变成mysql>
说明我们已经进入mysql命令行模式,只能使用sql指令
sql指令都需要以分号;
结束
quit
退出mysql
exit
退出命令行
二、数据库操作
sql指令都需要以分号 ;
结束
注意:反引号 可以加在 数据库名、数据表名、字段名 上面,不能加在值上面。
注意:关于 数据库名、数据表名、字段名 的大小写问题,是否区分取决于当前的文件系统,windows不区分,linux区分,实际使用中请严格区分大小写。
-
创建数据库
create database 数据库名;
-
显示数据库
show databases;
显示服务器上的所有数据库列表show databases like '%a%';
like 子命令,显示所有名字里带a的数据库名
show databases like '___';
like 子命令,显示数据库名是三个字符的所有数据库名
%
匹配0个或者多个任意字符,_
下划线,匹配任意一个字符show create database 数据库名;
查看建立数据库的语句 -
修改数据库
alter database 数据库名 charset=gbk;
修改指定的数据库的字符集,只能修改数据的字符集,数据库名不能修改。 -
删除数据库
drop database 数据库名;
删除指定的数据库 -
设置默认数据库
use 数据库名;
MySQL里面的三个数据库mysql、information_schema、performance_schema是系统默认自带的,不可删除,删了需重装MySQL
三、数据表操作
MySQL安装目录下,存储数据的目录data,数据库存储在对应的文件夹中,db.opt
文件是数据库的设置。表名.frm
是数据表的结构。
如果数据库引擎是MyISAM时,在目录data中数据库名目录里,有表名.MYD
和表名.MYI
文件。表名.MYD
是数据表的数据,表名.MYI
是数据表的索引。
如果数据库引擎是InnoDB时,数据和索引都存在目录data下的ibdata1
。
-
创建数据表
create table 表名( 字段名 字段类型 字段属性, 字段名2 字段类型2 字段属性2, 字段名3 字段类型3 字段属性3, ... );
create table 表名(id int,username varchar(30),password varchar(30));
-
查看表
show tables;
查看所有的数据表
show create table 表名;
查看数据表的建表语句
desc 表名;
查看数据表的结构 -
删除表
drop table 表名;
查看数据表的结构 -
修改表
alter table 表名 engine=innodb;
可以修改默认引擎
alter table 表名 charset=gbk;
可以修改字符集
rename table 表名 to 另一个表名;
可以修改表名
四、字段的操作
- 增加新字段
alter table student add column gender varchar(2);
在student数据表中新增gender字段 - 修改字段类型和属性
alter table student modify column gender varchar(10);
修改student数据表中gender字段数据类型
alter table student modify column gender varchar(10) after 另一个字段;
修改student数据表中gender字段数据类型,并且在数据表中排在 “另一个字段” 后面
alter table student modify column gender varchar(10) first;
修改student数据表中gender字段数据类型,并且在数据表中排在第一位 - 修改字段的名字和定义
alter table student change column gender sex varchar(2);
把student数据表中gender字段名字改为sex,数据类型改为varchar(2) - 删除字段
alter table student drop column gender;
删除student数据表中的gender字段
五、记录的操作 (重点)
-
新增记录
insert into 表名(字段列表) values (值的列表);
例子:
insert into student(username) values('中文');
insert into student(id,username,age) values(3,'中文',20);
批量新增
insert into student(id,username,age) values (3,'张三',18),(4,'李四',20),(5,'刘五',22);
值的个数与数据表中的字段个数一样时,可以省略字段列表
insert into student values(4,'中文',20);
-
查询记录
完整语句:
select [字段列表] [from子句] [inner join子句] [where子句] [group by子句] [baving子句] [order by子句] [limit子句];
一般使用:
select [字段列表] [from子句] [where子句] [order by子句] [limit子句];
[字段列表] : 字段1,字段2,字段3…
*
: 通配符,匹配所有字段
例子:
select username from student;
从student表中查询所有的username
select username,age from student;
从student表中查询所有的username和age
select * from student;
从student表中查询所有记录的字段
[from子句] 用于为select 语句提供数据源
1 个表 : 将这个表设置为数据的来源表
多个表 : 联表查询
还可以为表格指定别名
例子:
select * from student;
从student表中查询出所有数据
select * from student s;
指定别名为 s
select * from student,classes;
从student表和classes表中获取数据
[where子句] 用于过滤数据,只取出满足条件的记录
select * from student where age >= 20;
查询出 age >= 20的记录
[order by子句] 用于对查询出的数据进行排序
select * from student where age >= 20 order by age asc;
年龄升序排列
asc升序排列 (从小到大)、desc 降序排序 (从大到小)
[limit子句] 用于限制输出数据的条数
limit n;
提取前 n 条数据
limit m,n;
从 m 条开始提取 n 条数据**(m 从 0 开始)**
select * from student where age >= 20 order by age asc limit 2;
查询出 age >= 20的记录年龄,升序排列,提取前 2 条
- 修改记录
update 表名 set 字段名1=新的值1,字段名2=新的值2,字段名n=新的值n where 子句;
例子:
update student set age=25 where id=8;
- 删除记录
delete from 表名 where 子句;
例子:
delete from student where id=8;
六、MySQL 数据类型
在 MySQL 中,有三种主要的类型:数字、文本和日期/时间类型。
mysql中常用数据类型
数据类型 | 描述 |
---|---|
INT(size) | 4字节整数类型,-2147483648 到 2147483647 常规。0 到 4294967295 无符号* 。在括号中规定最大位数,默认是11。 |
BIGINT(size) | 8字节整数类型,-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号* 。在括号中规定最大位数。默认是20。 |
FLOAT(size,d) | 4字节浮点数,带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
CHAR(size) | 保存固定长度 的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度 的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
DATE() | 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’ |
DATETIME() | * 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
TIMESTAMP() | * 时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
*
这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。
*
即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
参考自:w3school SQL 数据类型
http://www.w3school.com.cn/sql/sql_datatypes.asp
字段属性用于对字段进行修饰(允许字段设置附加属性)
null属性
null (默认)允许字段为空
not null 不允许字段写为空值
create table 表名(username varchar(30) not null);
default属性
设置字段的默认值,当插入新数据时,如果没有为该字段赋值,自动使用默认值。
create table 表名(username varchar(30) default '匿名');
在插入数据时使用,将强制使用默认值
insert into 表名 values(default);
特殊的默认值
timestamp 时间戳类型,默认值是: current_timestamp on update current_timestamp
时间戳的常用写法:
create table 表名(date timestamp default current_timestamp);
primary key属性
主键也叫主索引,通常用于修饰数据标识(ID字段)
特性:1、一个表中只允许有一个主键;2、主键修饰的字段的值不能重复;3、值不能为null。
create table 表名(id int primary key auto_increment,username varchar(20));
insert into 表名 values(null,'名字');
auto_increment属性 自动增长
通常和主键一起使用,让 ID 实现自动增长,添加数据时不管ID值
unique属性 约束唯一(字段的值不能重复)
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
七、其他项
导出数据库
1、在DOS命令行下
2、执行mysqldump.exe
mysqldump -u用户名 -p密码 数据库名 > 导出的地址和文件名
mysqldump -uroot -proot student > e:\student.sql
导入数据库
1、进入mysql命令行模式
2、use student;
3、source sql文件路径
source e:/student.sql;