MySQL数据库(命令行操作)

登录数据库

1.在MySQL安装目录下的的bin目录打开命令行界面(可按住shift再鼠标左击)。
2.输入mysql -u数据库用户名 -p命令。
3.输入密码登录数据库。


常用命令

SHOW DATABASES //显示所有已创建的数据库
USE db_name //进入某个数据库
CREATE DATABASE db_name //创建一个数据库
DROP DATABASE db_name //删除某个数据库
SHOW TABLES //显示当前数据库下所有的表
DESC tb_name //查看某个表各个字段的描述信息
SHOW CREATE TABLE tb_name //查看创建某个表时的信息
\T 某个文件  //将命令行下所有的信息输出到指定文件中
\t  //关闭输出日志功能

建表语句

CREATE TABLE [IF NOT EXISTS] tb_name(字段 描述)[ENGINE=INNODB(默认)|MyISAM] [CHARSET=utf-8(默认)];

CREATE TABLE IF NOT EXISTS user(
id int primary key auto_increment,
username varchar(20) not null unique,
passward varchar(20) not null,
addr varchar(10),
age tinyint,
sex enum('男','女','保密')
);
图片.png

插值操作

INSERT INTO user VALUES(1,'张三','1000','北京',16,'男');
INSERT INTO user(username,passward,age,sex) VALUES('张三丰','12345',22,'男');
图片.png

修改操作

对某个字段的属性进行操作
语句格式
ALTER TABLE tb_name [MODIFY] [ADD] [DROP] [ALTER] [CHANGE]

DROP:删除某个字段、索引等
ADD:添加某个字段、索引等
MODIFY:修改某个字段的数据类型
CHANGE:重命名列(要求数据类型一致)或修改某个字段的类型
ALTER:用于设置或删除默认值(DROP DEFAULT|SET DEFAULT '')

MODIFY与CHANGE的区别
CHANGE修改列名:


图片.png

CHANGE修改数据类型:


图片.png

MODIFY修改数据类型
图片.png

更新操作

对表中数据进行更新操作
语句格式
UPDATE tb_name SET 字段名=值 [WHERE] [ORDER BY] [LIMIT]
LIMIT后只能有一个参数,表示更新前几条记录。

UPDATE user SET age=13;

图片.png

注意不能添加TABLE字段,否则报错


删除操作

语句格式:DELETE FROM tb_name [WHERE 条件] [ORDER BY 字段] [LIMIT 限制条数]
LIMIT后只能有一个参数,表示删除前几条记录

DELETE FROM user WHERE id=11;

图片.png

彻底清空数据表(自增长值也会恢复初始值):TRUNCATE [TABLE] tb_name


查询操作

单表查询

语句格式:
SELECT 字段名称 FROM tb_name [WHERE] [GROUP BY [WITH ROLLUP]] [HAVING] [ORDER BY] [LIMIT]

WHERE:条件查询
IN(10,20),BETWEEN .. AND ..:区间筛选
LIKE,NOT LIKE :模糊查询,%表示有一个或多个字符,_表示有一个字符
AND OR > < = != <=>(可以筛选出NULL值):逻辑运算

原始数据


图片.png

区间筛选:


图片.png

模糊查询:
图片.png
GROUP BY:对查询结果进行分组,但只会显示每个分组中的第一条数据内容;
通过GROUP_CONCAT(字段名称) 可以得到每个分组中具体的数据信息
COUNT(字段名)可以统计总数;
MAX(字段名)可以筛选出最大值;
MIN(字段名)可以筛选出最小值;
AVG(字段名)可以计算出平均值;
SUM(字段名)可以计算出总和;
配合AS 别名 使结果更加直观;
WITH ROLLUP 语句可以在结果末尾增加一行对所有数据进行统计。

分组查询:
SELECT sex,GROUP_CONCAT(username) AS username,COUNT(*) AS user,
MAX(age) AS max_age,MIN(age) AS min_age,AVG(age) AS avg_age,SUM(age) AS sum_age FROM user WHERE id<5 GROUP BY sex WITH ROLLUP;


图片.png
HAVING:对分组后的结果进行二次筛选,用法与WHERE用法基本相同。

SELECT id,GROUP_CONCAT(username) AS username,addr FROM user WHERE id<5 GROUP BY sex HAVING addr='上海' OR addr='北京';


图片.png
ORDER BY:对查询结果结果进行排序
DESC:降序     ASC:升序(默认)  NULL值最小  RAND()可以提取随机记录
可以使用多个字段的升降序组合在一起,当第一个字段值排序后出现相同值时按第二个字段的排序方法排序。
图片.png
LIMIT:限制显示条数
LIMIT 显示条数
LIMIT 偏移量,显示条数(可实现分页功能,第一条记录的偏移量为0)
图片.png

多表查询

原始数据


图片.png

图片.png

通过不同表中具有相同意义的字段将不同表连接起来

内连接查询

(显示两个表中符合连接条件的记录):INNER JOIN
通过ON连接条件

外连接查询

左外连接:LEFT [OUTER] JOIN 显示左表的全部记录及右表中符合连接条件的记录。
右外连接:RIGHT [OUTER] JOIN 显示右表的全部记录及左表中符合连接条件的记录。

内连接查询

SELECT user.id,username,proname FROM user [INNER|CROSS] JOIN province ON user.proID=province.id;
图片.png

外连接查询

SELECT user.id,username,proname FROM user LEFT JOIN province ON user.proID=province.id;
图片.png

联合查询

把多个表中的记录统计输出
用法:SELECT 字段名 FROM 表名 UNION [ALL] SELECT 字段名 FROM 表名;
UNION ALL:输出所有记录
UNION:去除重复的记录

子查询

使用[NOT] IN()实现子查询
使用各种比较运算符实现子查询>、<、>=、<=、<>、!=、<=>
使用[NOT] EXISTS()实现子查询
例:SELECT id,username FROM employee WHERE EXISTS (SELECT id FROM department);
使用ANY|SOME或者ALL实现子查询
与比较运算符的结合使用


图片.png

可以使用INSERT INTO tb_name(字段名称) SELECT 字段 FROM tb_name将查询出来的数据直接插入表中,也可以在建表语句后加上SELECT 语句将查询结果写入表中。

正则表达式查询

通过REGEXP '匹配规则' 来使用

常用规则
^:匹配字符串开始的部分(^a)
$:匹配字符串结束的部分(a$)
.:代表字符串中的任意一个字符,包括回车和换行
[字符集合]:匹配字符集合中的任意一个字符([abc]、[a-z])
[^字符集合]:匹配除字符集合外中的任意一个字符
a|b|c:匹配a、b、c中的任意一个字符串
*:匹配0个1个或多个其前面的字符(a*)
+:匹配1个或多个其前面的字符(a+)
String{N}:字符串出现N次
字符串{M,N}:字符串最少出现M次,最多N次
图片.png

外键(FOREIGN KEY)

主表与子表的存储引擎必须为INNODB,外键列和参照列必须具有相同的数据类型,并且必须创建索引
外键创建
ALTER TABLE tb_name ADD [CONSTRAINT 外键名] FOREIGN KEY(外键列) REFERENCES department(参照列)
外键删除
ALTER TABLE tb_name DROP FOREIGN KEY 外键名

CREATE TABLE IF NOT EXISTS department(
id smallint unsigned primary key auto_increment,
depName varchar(30) unique
);

INSERT INTO department(depName) VALUES('学风部'),
('社践部'),
('外联部'),
('体育部'),
('网宣部');

CREATE TABLE IF NOT EXISTS employee(
id smallint unsigned auto_increment primary key,
username varchar(30) not null unique,
depId smallint unsigned,
[CONSTRAINT 外键名]FOREIGN KEY(depId) REFERENCES department(id)
);

INSERT INTO employee(username,depId) VALUES('小明',1),
('小红',2),
('小王',3),
('张三',4),
('李四',5),
('王五',1);
图片.png

图片.png

图片.png

外键约束的参照操作

NOT ACTION、RESTRICT:默认形式,拒绝对父表的删除和更新操作;
CASCADE:从父表更新或删除时自动删除或更新子表中匹配的行;
FOREIGN KEY(depId) REFERENCES department(id) ON DELETE CASCADE ON UPDATE CASCADE


图片.png

图片.png

SET NULL:从父表更新或删除时将子表的外键列设为NULL(外键列没有指定为NOT NULL);
FOREIGN KEY(depId) REFERENCES department(id) ON DELETE SET NULL ON UPDATE SET NULL


图片.png

MySQL函数库

数学函数库

图片.png

字符串函数库

图片.png

图片.png

日期时间函数

图片.png

图片.png

图片.png

条件判断函数和系统函数

图片.png

图片.png

其他常用函数

图片.png

图片.png

索引

建表时创建索引:
[UNIQUE|FULLTEXT|SPATIAL] KEY|INDEX 索引名(字段名)
在已存在的表上创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON tb_name {字段名称[(长度)] }
ALTER TABLE tb_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称(字段名称[(长度)]);
删除索引
DROP INDEX 索引名称 ON tb_name

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342