目录
mysql的service服务管理与登录管理
查看mysql服务进程:ps -ef | grep mysql
service服务管理:cp -a mysql.server /etc/rc.d/init.d/mysql
启动命令:service mysql start
关闭命令:service mysql stop
重新启动命令:service mysql restart
查看状态命令:service mysql status
登录管理: ln -s /usr/local/mysql/bin/* /bin (转连接)
登录命令:mysql -uroot -p
默认端口号:3306 配置文件:/etc/my.cnf
mysql的配置文件
的操作语句分类
1. DDL 数据定义语言 (Data Definition Language) 例如:建库,建表
2. DML 数据操纵语言(Data Manipulation Language) 例如:对表中的数据进行增删改操作
3. DQL 数据查询语言(Data Query Language) 例如:对数据进行查询
4. DCL 数据控制语言(Data Control Language) 例如:对用户的权限进行设置
数据库的创建使用
直接创建数据库 db1
create database db1;
查看当前在哪个库里边
select database();
进入库的操作
use 库名;
判断是否存在,如果不存在则创建数据库 db2
create database if not exists 库名;
创建数据库并指明字符集
create database 库名 default character set gbk;
查看某个库是什么字符集
show create database 库名;
查看当前mysql使用的字符集
show variables like 'character%';
2>浮点型 FLOAT(m,d) | 4 字节 | 单精度浮点型 | 备注:m代表总个数,d代表小数位个数 |
DOUBLE(m,d) 8 字节 | 双精度浮点型 | 备注:m代表总个数,d代表小数位个数 | |
<3>定点型 DECIMAL(m,d) | 依赖于M和D的值 | 备注:m代表总个数,d代表小数位个数 |
浮点数,会4舍5入所以项目中常用的不是Float/double
常用到的是定点型
char的优缺点:存取速度比varchar更快,但是比varchar更占用空间
varchar的优缺点:比char省空间。但是存取速度没有char快
<5>时间型 数据类型 | 字节数 | 格式 备注 |
date | 3 | yyyy-MM-dd 存储日期值 |
time | 3 | HH:mm:ss 存储时分秒 |
year | 1 | yyyy 存储年存储年 |
datetime | 8 | yyyy-MM-dd HH:mm:ss 存储日期+时间 |
timestamp | 4 | yyyy-MM-dd HH:mm:ss 存储日期+时间,可作时间戳 |
CREATE TABLE student (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id)
)engine=innodb charset=utf8;
把student表中的所有的数据复制到teacher (自增不复制)
只复制结构数据不进行复制
复制表
查看表结构信息:
查看表结构:desc 表名;
查看创建表的sql语句:show create table 表名;
\G :有结束sql语句的作用,还有把显示的数据纵向旋转90度
\g :有结束sql语句的作用
注意:一般yao加上comment做说明
修改表结构:
重命名:
rename table 旧表名 to 新表名;
rename table student to user;
添加列:
给表添加一列:alter table 表名 add 列名 类型;
alter table user add addr varchar(50);
alter table add 列名 类型 comment '说明';
alter table user add famliy varchar(50) comment '学生父母';
给表最前面添加一列:alter table 表名 add 列名 类型 first;
alter table user add job varchar(10) first;
给表某个字段后添加一列:alter table 表名 add 列名 类型 after 字段名;
alter table user add servnumber int(11) after id;
注意:没有给表某个字段前添加一列的说法。
修改列类型:
alter table 表名 modify 列名 新类型;
alter table user modify servnumber varchar(20);
修改列名
alter table 表名 change 旧列名 新列名 类型;
alter table user change servnumber telephone varchar(20);
删除列:
alter table 表名 drop 列名;
alter table user drop famliy;
修改字符集:
alter table 表名 character set 字符集;
alter table user character set GBK;
删除表:
drop table 表名;
drop table user;
看表是否存在,若存在则删除表:drop table if exists 表名;
drop table if exists teacher;
DML:
insert into 表名(字段名) values(字段对应值);
insert into employee (empno,ename,job,mgr,hiredate,sal,deptnu) values ('1000','小明','经
理','10001','2019-03-03','12345.23','10');
对应就行
insert into 表名 values(所有字段对应值);
insert into employee values ('1001','小明','经理','10001','2019-03-03','12345.23','10');
不能省略
蠕虫复制(将一张表的数据复制到另一张表中)
insert into 表名1 select * from 表名2;
insert into 表名1(字段名1,字段名2) select 字段名1,字段名2 from 表名2;
insert into emp (empno,ename) select empno,ename from employee;
建表复制:
create table 表名1 as select 字段名1,字段名2 from 表名2;
create table emp as select empno ,ename from employee;
(复制什么表中就有什么字段,)
insert into 表名 (字段名) values (对应值1),(对应值2),(对应值3);
注意:在删除或者修改之前我们要对数据进行备份操作
truncate table 表名;
delete from 表名;
drop table 表名;
面试时:面试官问在删改数据之前,你会怎么做?
答案:会对数据进行备份操作,以防万一,可以进行数据回退
面试时:面试官会问,delete与truncate与drop 这三种删除数据的共同点都是删除数据,他们的不同点是什么?
delele 会把删除的操作记录给记录起来,以便数据回退,不会释放空间,而且不会删除定义。 (不会重新排 之前的记录存在)
truncate不会记录删除操作,会把表占用的空间恢复到最初,不会删除定义(从0001重新排)
drop会删除整张表,释放表占用的空间
drop > truncate > delete
中文乱码问题:
CRT是客户端 和cmd一次只能支持一种字符集编码,其中CRT支持多种CMD只支持GBK
服务端不同的字段可以支持不同的编码
character_set_client:客户端请求数据的字符集(通过CRT/cmd向服务端请求的字符集)
character_set_connection:客户端与服务器连接的字符集
character_set_database:数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将默认使用配置
上的字符集
character_set_results:返回给客户端的字符集(从数据库读取到的数据是什么编码的)
character_set_server:为服务器安装时指定的默认字符集设定。
character_set_system:系统字符集(修改不了的,就是utf8)
character_sets_dir:mysql字符集文件的保存路径
CRT是GBK编码
临时的方法;
(原来的 )
上面3个(改成GBK的)改变的只作用于外部
vim /etc/my.cnf
[client]
default-character-set=gbk
作用于外部的显示
[mysqld]
character_set_server=gbk
作用于内部,会作用于创建库表时默认字符集