mysql - lilunze/lilunze.github.io GitHub Wiki

MySQL 命令汇总

[TOC]

admin:root@localhost:3306
password:123456

启动mysql

sudo /usr/local/mysql/support-files/mysql.server start

关闭mysql

sudo /usr/local/mysql/support-files/mysql.server stop   

连接mysql

mysql -h localhost(主机名) -u root(用户名) -p(使用密码) -D test(使用的数据库)

退出mysql

quit
&&
exit

mysql中的数据类型

  • 整型
数据类型 含义
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

  • 浮点型
数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

  • 定点数 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

  • 字符串

数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 固定长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
  • 二进制数据(_Blob)
  • 日期时间类型
数据类型 含义
date 日期 '20017-4-11'
time 时间 '15:28:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间
  • 数据类型的属性
MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

创建数据库

create database test(数据库名) character set gbk(设置数据库字符集) 

查看所有数据库

show databases

选择数据库

use test(数据库名)

创建数据表

create table students
(   
    id int unsigned not null auto_increment primary key,
    name char(8) not null,
    sex char(4) not null,
    age tinyint unsigned not null,
    tel char(13) null default "-"
)

查看已经创建的额所有数据表

show tables

查看数据表的详细信息

describe students(数据表名)

向表中插入数据

// 对每一个字段都插入值
insert into students(数据表名) values (null,'llz',18,'18571543765')
// 只对部分指定的字段插入值
insert into students(数据表名) (name,age,tel) values ('ljw',20,'15439903231')

查询表中的数据

select *(字段,*代表所有字段) from students(数据表名) where age>19(条件)

修改更新数据表中的数据

update students(数据表名) set age=30(修改字段值) where name='llz'(条件)

删除数据表中的数据

delete from students(数据表名) where id=1(条件)

数据表新增字段

alter table students(数据表名) add sex(新增的字段名) char(4)(新增的字段类型) after age(新增的字段的位置)

数据表修改字段

alter table students(数据表名) change tel(旧字段) telephone(新字段) char(13) default '-' (新字段的类型)

数据表删除字段

alter table students(数据表名) drop sex(删除的字段)

重新命名数据表

alter table students(数据表名) rename class(新数据表名)

删除整张数据表

drop table students(数据表名)

删除整个数据库

drop database test(数据库名)

like 语句

select * from students where name like '%l'

排序

select * from students ORDER BY tel desc;

// desc降序排列
// asc 升序排列

分组

select sex,COUNT(*) from students GROUP BY sex

多表关联查询

select a.id,a.name,a.age,b.score from students a inner join score b on a.name=b.name
以上语句等价于
select a.id,a.name,a.age,b.score from students a,score b where a.name=b.name
以上语句是后去两表的交集

select a.id,a.name,a.age,b.score from students a left join score b on a.name=b.name
获取两表交集的同时也获取左表的所有


select a.id,a.name,a.age,b.score from students a right join score b on a.name=b.name
获取两表交集的同时也获取右表的所有

空值处理

select name from students where favorite is null;
等价于
select name from students where favorite<=>null;

select name from studnets where favorite is not null;

正则匹配

select * from students where name regexp '^l';

事务

索引

显示索引信息
show index from students\G

创建一个普通索引
create index key_words on students (tel);

修改表结构添加索引
alter table students add index key_words (tel);

删除索引
drop index key_words on students;

添加主键
alter table shop add primary key;

删除主键
alter table shop drop primary key;

添加全文索引
alter table shop add fulltext key_words (name);

临时表

复制表

insert into score_clone (id,name,score) select id,name,score from score;

元数据

可在命令行在中使用的
select version() //获取服务器版本信息
select database() //获取当前使用的数据库名
select user() //获取当前的用户名
show status  //获取服务器的状态
show variables //服务器配置变量

序列使用(auto_increment)

重复数据的处理

添加主键来保证数据的唯一性

insert ignore into students values (1,'llz','m',18);
添加ignore,如果数据表中主键已存在该值则直接跳过不插入切不报错。

select first_name,count(*) as count from person group by first_name having count>1;

sql注入

导出数据

select * from students into outfile '/users/dada/desktop/students.txt';

导入数据

mysql函数

⚠️ **GitHub.com Fallback** ⚠️