MySQL基础操作

MySQL基础操作

使用方法:

​ 方式一: 通过图型界面工具,如 Navicat 等( 高级课使用 )

​ 方式二: 通过在命令行敲命令来操作 ( 基础阶段使用 )

SQL ( Structure query language ) 结构化查询语言

SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)

SQL语句中的快捷键

\G 格式化输出(文本式,竖立显示)

\s 查看服务器端信息

\c 结束命令输入操作

\q 退出当前sql命令行模式

\h 查看帮助

操作数据库的步骤

连接, 打开库, 操作, 关闭退出

1.通过命令行连接MySQL

import.png

数据库语法的特点

1) SQL 语句可以换行, 要以分号结尾

import1.png

2) 命令不区分大小写. 关键字和函数建议用大写

import2.png

3) 如果提示符为 '> 那么需要输入一个'回车

import3.png

4) 命令打错了换行后不能修改, 可以用 \c 取消

import4.png

2. 数据库操作

查看数据库 show databases;

创建数据库 create database 库名 default charset=utf8;

删除数据库 drop database 库名;

打开数据库 use 库名;

3. 数据表操作

数据库管理系统中, 可以有很多''库'', 每个数据库中可以包括多张数据''表''

import5.png

import6.png

​ 查看表: show tables;

​ 创建表: create table 表名(字段名1 类型,字段名2 类型)engine=innodb default charset=utf8;

​ 创建表: 如果表不存在,则创建, 如果存在就不执行这条命令

create table if not exists 表名(

字段1 类型,

字段2 类型

);

​ 删除表: drop table 表名;

​ 表结构: desc 表名;

记录操作 增删改查

​ 插入 insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);

insert into 表名(字段1,字段2,字段3) values(a值1,a值2,a值3),(b值1,b值2,b值3);

​ 查询 select * from 表名;

select 字段1,字段2,字段3 from 表名;

select * from 表名 where 字段=某个值;

​ 修改 update 表名 set 字段=某个值 where 条件;

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

update 表名 set 字段=字段+值 where 条件;

​ 删除 delete from 表名 where 字段=某个值;

4. 退出MySQL

exit; 或者 quit;



数据导出

-- 将users库导出
-u root -p users >users.sql
-- 将users库中的stu表导出
 -u root -p users stu >users_stu.sql

数据导入

-- 将users库导入
 -u root -p users<users.sql
-- 将users库中stu表导入
 -u root -p users<users_stu.sql

授权

格式:grant 允许操作 on 库名.表名 to 账号@来源 identified by '密码';

-- 创建zhangsan账号,密码123,授权users库下所有表的增/删/改/查数据,来源地不限
grant select,insert,update,delete on users.* to zhangsan@'%' identified by '123';

grant all on *.* to zhangsan@'%' identified by '123';

-- 添加用户, 并授予在users的数据库中可以对user表进行 查询和添加数据操作
grant select,insert on users.user TO 'xxoo'@'%' identified by 'abcd'

 -- 删除用户
 drop user 'xxoo'@'%'

MySQL忘记root密码

windows

 1.结束正在运行的数据库服务器进程 mysqld.exe
 2.在DOS命令行执行 mysqld --skip-grant-tables
 3.再打开一个DOS窗口, 可直接输入 mysql 以管理员的身份强行进入.
 4. use mysql
 5. update user set authentication_string=password('新密码') where user='root';
 6. 刷新权限 flush privileges;

Ubuntu 16.04 LTS

-- ubuntu 下, mysql忘记密码后重置mysql密码

-- 修改配置文件
 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

 在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vim。

-- 重启mysqld
sudo /etc/init.d/mysqld restart


-- 登录并修改MySQL的root密码
mysql
mysql> USE mysql ; 
mysql> update mysql.user set authentication_string=password('abc123') where user='root' and Host = 'localhost';
mysql> flush privileges ; 
mysql> quit


-- 重新修改配置文件 把刚才添加的一句注释或者删除
 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

-- 重新启动服务
 sudo /etc/init.d/mysqld restart

 -- 使用新密码重新登录mysql
 mysql -u root -pabc123
 mysql>


MySQL 数据类型


数值类型

**tinyint **1字节 可以表示 0-255 (无符号) 可以表示 -128 ~ 127 (有符号)

int 4字节 无符号(0,4 294 967 295) 有符号 (-2 147 483 648,2 147 483 647)

**decimal **以字符串形式存储的浮点数 decimal(5, 2) 表示数值总共5位, 小数占2位

日期和时间类型

datetime 8字节 1000-01-01 00:00:00 -- 9999-12-31 23:59:59

字符串类型

char 定长字符串 char(7) 不管实际插入多少字符, 它都会占用7个字符位置(中文一个汉字也是一个位置)

varchar 变长字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置

text 这种类型用来存放超大文本

enum 枚举类型( 多选一 ) sex enum('w','m','x') 代表sex这个字段, 可以取 'w', 'm', 'x' 中的一个值

表的字段约束

unsigned 无符号

int(4) 显示宽度

zerofill 零填充, 位数不够的时候用前导零填充

not null 不能为空 在操作数据库时如果输入该字段的数据为NULL ,就会报错

default 设置默认值

primary key 主键 不能为空 且唯一

auto_increment 定义列为自增的属性,一般用于主键,数值会自动加1。

unique 唯一

MySQL的运算符:

算术运算符:+ - * / %

比较运算符:= > < >= <= <> !=

数据库特有的比较:in,not in, is null,is not null,like, between and

逻辑运算符:and or not

like: 支持特殊符号%和_ ; 其中 %表示任意数量的任意字符,_表示任意一位字符。

数值类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

日期和时间类型

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

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型 大小(字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

索引

添加索引可以提升查询速度 ,但是会降低插入数据和更新数据的速度
主键索引 primary key 一个表中默认最少要有一个主键索引
唯一不能为空
唯一索引 unique 唯一
普通索引 index 可重复
全文索引 不支持中文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容