MYSQL笔记(入门基础【查看进程,切换用户、切换表、查看信息】、ddl【创建库、查看表信息,表结构维护】、dml【表数据新增、修改、删除】、中文乱码)

mysql的简介介绍

什么是mysql?

mysql是一个开源的关系型数据库管理系统,现在是oracle公司旗下的一款产品,由C和C++语言编写,可移植性高。支持 在多种操作系统上安装,最常见有AIX,linux,window。mysql因为开源免费,所以受到了目前互联网行业的欢迎。 以mysql作为数据库,linux系统作为操作系统,apache或者nginx作为web服务器,perl/php/python作为服务端的脚 本解释器,就可以搭建起一个免费的网站。被业界称为LNMP或者LAMP

mysql数据库面试必备入门基础知识

mysql的核心知识之服务管理

查看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的库表深入解析

什么是库?

顾名思义就是数据仓库的意思,存储着一定数据结构的数据,一个数据库中可能包含着若干个表,我们可以 通过数据库提供的多种方法来管理数据库里边的数据。本质上mysql数据库是一个关系型数据服务管理系统

什么是表?

是数据表,每一张表是由行和列组成,每记录一条数据,数据表就增加一行。列是由字段名 与字段数据属性组成,我们称之列为字段,每一个字段有着多个属性。例如是否允许为空、长度、类型等等

数据库:database
数据表:table
字段(列):column
行:row

mysql的sql各类语句

mysql的操作语句分类

操作语句分为四类:

1. DDL 数据定义语言 (Data Definition Language) 例如:建库,建表

2. DML 数据操纵语言(Data Manipulation Language) 例如:对表中的数据进行增删改操作

3. DQL 数据查询语言(Data Query Language) 例如:对数据进行查询

4. DCL 数据控制语言(Data Control Language) 例如:对用户的权限进行设置

DDL数据定义语言

mysql数据库必备知识之创建、查看以及使用/切换

数据库的创建使用

直接创建数据库 db1

create database db1;

查看当前在哪个库里边

select database();

进入库的操作

use 库名;

判断是否存在,如果不存在则创建数据库 db2

create database if not exists db2;

创建数据库并指定字符集为 gbk

create database db3 default character set gbk;

查看某个库是什么字符集;

show create database XD;

查看当前mysql使用的字符集

show variables like 'character%';

常用数据类型

数据类型是什么?

数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。 有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等...

mysql常见数据类型

<1>整数型
类型         大小     范围(有符号)     范围(无符号unsigned)         用途
TINYINT     1 字节     (-128,127)     (0,255)                      小整数值
SMALLINT    2 字节     (-32768,32767) (0,65535)                大整数值
MEDIUMINT   3 字节     (-8388608,8388607) (0,16777215)         大整数值
INT         4 字节     (-2147483648,2147483647) (0,4294967295) 大整数值
BIGINT      8 字节     ()     (0,2的64次方减1)                 极大整数值

<2>浮点型
FLOAT(m,d) 4 字节     单精度浮点型 备注:m代表总个数,d代表小数位个数
DOUBLE(m,d) 8 字节     双精度浮点型 备注:m代表总个数,d代表小数位个数

<3>定点型
DECIMAL(m,d) 依赖于M和D的值 备注:m代表总个数,d代表小数位个数

<4>字符串类型
类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535字节 变长字符串
TINYTEXT 0-255字节 短文本字符串
TEXT 0-65535字节 长文本数据
MEDIUMTEXT 0-16777215字节 中等长度文本数据
LONGTEXT 0-4294967295字节 极大文本数据

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 test_time (
date_value date,
time_value time,
year_value year,
datetime_value datetime,
timestamp_value timestamp
) engine=innodb charset=utf8;


insert into test_time values(now(), now(), now(), now(), now());

创建表

语法:

CREATE TABLE 表名 (
字段名1 字段类型1 约束条件1 说明1,
字段名2 字段类型2 约束条件2 说明2,
字段名3 字段类型3 约束条件3 说明3
);
create table 新表名 as select * from 旧表名 where 1=2;(注意:建议这种创建表的方式用于日常测试,
因 为可能索引什么的会复制不过来)
create table 新表名 like 旧表名;

约束条件:

comment ----说明解释

not null ----不为空

default ----默认值

unsigned ----无符号(即正数)

auto_increment ----自增

zerofill ----自动填充

unique key ----唯一值

创建sql

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;;


CREATE TABLE student (
id tinyint(5) auto_increment default 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;;

查看表信息

简介:如何查看表的基本结构信息

查看数据库中的所有表:show tables;

查看表结构:desc 表名;

查看创建表的sql语句:show create table 表名;

\G :有结束sql语句的作用,还有把显示的数据纵向旋转90度

\g :有结束sql语句的作用

表结构维护与删除

修改表名

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;

mysql表的删除

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);

创建sql

某个公司的员工表
CREATE TABLE employee(
empno INT PRIMARY KEY comment '雇员编号',
ename VARCHAR(20) comment '雇员姓名',
job VARCHAR(20) comment '雇员职位',
mgr INT comment '雇员上级编号',
hiredate DATE comment '雇佣日期',
sal DECIMAL(7,2) comment '薪资',
deptnu INT comment '部门编号'
);

表数据的修改以及删除

修改(更新)

update 表名 set 字段名1=值1 where 字段名=值;

update 表名 set 字段名1=值1,字段名2=值2 where 字段名=值;

删除

delete from 表名 where 字段名=值;


truncate table 表名;

delete from 表名;

drop table 表名;



注意事项:
面试时:面试官问在删改数据之前,你会怎么做?
答案:会对数据进行备份操作,以防万一,可以进行数据回退
面试时:面试官会问,delete与truncate与drop 这三种删除数据的共同点都是删除数据,他们的不同点是什么?
delele 会把删除的操作记录给记录起来,以便数据回退,不会释放空间,而且不会删除定义。
truncate不会记录删除操作,会把表占用的空间恢复到最初,不会删除定义
drop会删除整张表,释放表占用的空间。


删除速度:
drop > truncate > delete

中文乱码问题

查看当前mysql使用的字符集

show variables like 'character%';

character_set_client:客户端请求数据的字符集
character_set_connection:客户端与服务器连接的字符集
character_set_database:数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将默认使用配置
上的字符集
character_set_results:返回给客户端的字符集(从数据库读取到的数据是什么编码的)
character_set_server:为服务器安装时指定的默认字符集设定。
character_set_system:系统字符集(修改不了的,就是utf8)
character_sets_dir:mysql字符集文件的保存路径

临时:set names gbk;

永久:修改配置文件my.cnf里边的

[client]
default-character-set=gbk
作用于外部的显示


[mysqld]
character_set_server=gbk
作用于内部,会作用于创建库表时默认字符集

修改库的字符集编码

alter database xiaoxiao default character set gbk;

修改表的字符集编码

alter table employee default character set utf8;

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值