MySQL

测试

  • 计算机管理-服务-MySQL服务正在启动,MySQL安装成功
  • cmd(以管理员的身份运行)- net start mysql(开启)net stop mysql(关闭)
  • 快捷进入服务:servicres.msc

配置环境变量cmd窗口启动MySQL

path配置到bin目录

cmd连接命令 mysql -u账号 -p密码

更新用户信息

use mysql;

update user set password = password('新密码')where user='root';

flush privileges;

创建用户

#创建用户
create user `用户名`@`主机名` identified by '密码'
#创建用户同时赋予权限
#all
grant all on 表 to `用户`@`主机名` identified by '密码'

结构化查询语句分类

  • DDL 数据定义语言(CREATE、DROP、ALTER)
  • DML 数据操作语言(INSERT、UPDATE、DELETE)
  • DQL 数据查询语言(SELECT)
  • DCL 数据控制语言(GRANT、COMMIT、ROOLBACK)

语句

USE 库名;---切换数据库

SET sql_mode='strict_trans_tables';---------设置严格检查模式

SET @@ AUTO_INCREMENT_INCREMENT=步长值

SHOW ENGINES;-------查看MySQL支持的引擎类型(表类型)

SHOW VARIABLES LIKE 'storage_engine';-------查看默认的引擎

SELECT VERSION();------查看数据库的版本

SELECT USER()------查看当前用户

增加语句

  • CREATE DATABASE 库名;----------新建数据库
  • CREATE TABLE 表名();----------新建表
  • ALTER TABLE 表名 ADD 列名 数据类型;----------添加一列
  • INSERT INTO 表名 (列名,列名...) VALUE(数据);----------未指定列添加数据
  • INSERT INTO 表名 VALUE(数据),(数据)...;----------为所有列添加单条或多条数据

删除语句

  • DROP TABLE IF EXISTS 表名;----------删除指定表
  • DROP DATABASE 库名;----------删除指定库
  • ALTER TABLE 表名 DROP 列名;----------删除一列
  • DELETE FROM 表名;-----删除所有数据
  • DETELE FROM 表名 WHERE 条件;-----删除指定条件的行数据
  • TRUNCATE TABLE 表名;-----删除数据 (可以把自增恢复到初始值)

修改语句

  • ALTER TABLE 表名 RENAME 新表名;----------修改表名
  • ALTER TABLE 表名 RENAME 新表名;----------修改表名
  • ALTER TABLE 表名 MODIFY 列名 新数据类型;----------修改数据类型
  • UPDATE 表名 SET 列名=新值,列名=新值...WHERE 条件;-----修改指定条件行的指定值

查找语句

  • SHOW CREATE DATABASE 数据库名;-------查看数据库定义的语句
  • SHOW CREATE TABLE 表名;------查看数据表定义的语句
  • DESC 表名;-------查看表结构
  • SHOW DATABASES;-----------查看所有库
  • SHOW TABLES;----------查看所有表
  • SELECT 列名 AS 别名,列名 别名,列名... FROM 表名;-------查看表中所有数据
  • SELECT * FROM 表名 WHERE 条件;------根据指定条件查询
  • SELETC 列名 FROM 表名 GROUP BY 列名;------分组查询

连接查询

  • 内连接([inner] join):查询两个表中的结果集中的交集
  • 外连接(outer join):
    • 左外连接(left [outer] join):以左表做基准,右表来一一匹配,匹配不上的,返回左表记录,右表填充null
    • 右外连接(right [outer] join):以右表做基准,左表来一一匹配,匹配不上的,返回右表记录,左表填充null
  • 自链接:把一张表看作两张表来进行连接
  • 等值连接:类似于内连接
  • 非等值连接
#内连接
SELECT 字段名 FROM 表1 INNER JOIN 表2 ON 连接条件
#左连接
SELECT 字段名 FROM 表1 LEFT JOIN 表2 ON 连接条件
#右链接
SELECT 字段名 FROM 表1 RIGHT JOIN 表2 ON 连接条件
#等值连接
SELECT 字段名 FROM 表1,表2 WHERE 连接条件
#非等值连接
SELECT 字段名 FROM 表1,表2
#自连接(表名一定要起别名)
SELECT 字段名 FROM 表1 ,表1 WHERE 连接条件

变量及属性

数据类型

  • VARCHAR(长度)-----字符串
  • BLOB------存储量较大的字符串类型
  • TEXT---------文本串
  • CHAR(长度)-----没满长度自动添加空格的字符串
  • INT(长度)---整数
  • TINYINT-------容量较小的整数型
  • DOUBLE(长度)-----小数
  • DECIMAL------字符串形式的浮点数(DECIMAL(m,d) m代表浮点数最大长度m位,小数点后面d位)常用于货币
  • DATE-----日期
  • TIMESTAMP-----日期
    • DEFAULT NOW()------默认当前时间
    • ON UPDATE NOW()-------修改时的时间
  • YEAR----年份

约束

  • PRIMARY KEY-----主键约束
  • UNIQUE-----唯一约束
  • NOT NULL---非空标记
  • CONSTRAINT ------ FOREIGN KEY ---- REFERENCES ------ 外键约束

属性

  • ZEROFILL-----补零
  • AUTO_INCREMENT-----自增操作
  • UNSIGNED--------无符号
  • COMMENT----注释
  • DEFAULT------默认值

语句中

  • DISTINCT------查询时去除重复内容(SELECT DISTINCT 列 FROM 表)
  • AND----与:id>10 AND id<12 == id BETWEEN 10 AND 12;
  • OR-----或:id=13 OR id=15 OR id=17 == id IN (13,15,17)
  • <>-------不等于
  • DEFAULT------默认值
  • LIKE-----模糊查询 '赵%'
  • HAVING----分组后的条件
  • ENGINE------表类型=(INNODB/MyISAM)
    • INNODB:支持:事务处理,数据行锁定,外键约束。不支持:全文索引。表空间较大约两倍
    • MyISAM:支持:全文索引。不支持:事务处理,外键约束,数据行锁定。表空间较小
  • ESCAPE------自定义转义字符
  • ORDER BY--------排序默认升序(ASC) 降序(DESC) 可以多条规则
  • EXPLAIN-----解释语句

通配符

*:所有

%:占位符 0-∞

_:占位符代表一个字符

函数

  • 数学函数
    • MAX()------最大值
    • MIN()-------最小值
    • AVG()------平均值
    • SUM()------求和
    • ABS(n)------求n绝对值
    • CEILING(n)-----大于等于n的最小的整数
    • FLOOR(n)------小于等于n的最大的整数
    • RAND()-------返回0-1之间的随机数
    • SIGN(n)------判断n的正负,负数返回-1,整数返回1,0返回0
  • 字符串函数
    • CHAR_LENGTH()--------返回字符串中包含的字符数
    • CONCAT(a,b)----拼接字符串ab
    • INSERT(被替换字符串,开始位置,结束位置,替换的字符串)-----替换字符串
    • LOWER()-------变为小写
    • UPPER()------变为大写
    • LEFT(被操作字符串,n)-----从左边截取n个长度的字符
    • RIGHT(被操作字符串,n)-----从右边截取n个长度的字符
    • REPLACE(被操作的字符串,被替换字符,替换的字符)------替换字符
    • SUBSTR(被截取字符串,起始位置,结束位置)--------截取字符串
    • REVERSE()------反转字符串
  • 日期时间函数
    • CURRENT_DATE()-------获取当前的日期(年月日)
    • CURDATE()-------获取当前的日期(年月日)
    • NOW()----- 获取当前日期时间
    • LOCALTIME()-------获取本地时间
    • SYSDATE()-------获取系统时间
    • YEAR(date)------获取date的年
    • MONTH(date)--------获取date的月
    • DAY(date)-------获取date的日
    • HOUR(date)--------获取date的时
    • MINUTE(date)-------获取date的分
    • SECOND(date)-------获取date的秒
    • WEEK(date, mode);--------date是要获取周数的日期,mode是确定一周从周几开始默认0

COUNT()---有几条数据

IF(条件,true,false)-------判断

事务

事物的特性:原子性,一致性,隔离性,持久性 ACID

使用SET语句来更改提交模式把自动提交改成手动提交

#关闭自动提交
SET AUTOCOMMIT=0;
#开启自动提交
SET AUTOCOMMIT=1;
#回滚操作
ROLLBACK;
#提交
COMMIT;

索引

索引的准则

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表建议不要加索引
  • 索引一般应加在查找条件的字段

索引的添加和删除

#添加索引
ALTER TABLE 表名 ADD INDEX 索引名称(字段名);
#删除索引
DROP INDEX 索引名称 ON 表名;
ALTER TABLE 表名 DROP INDEX 索引名称;
#删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
#查看索引
SHOW INDEX FROM 表名;
#全文索引,只能用于MyISAM类型的数据库
ALTER TABLE 表名 ADD FULLTEXT 索引名称(字段名)
#使用全文索引
SELECT * FROM 表名 WHERE MATCH(索引名称) AGAINNST(找的字段);

视图

#创建视图
CREATE VIEW 视图名称 AS SELECT * FROM 表名;
#删除视图
DROP VIEW 视图名称;

数据库备份

数据库备份的必要性

  • 保证数据不会丢失
  • 便于数据的转移

数据库备份的方法

  • MySQLdump备份工具,source命令恢复
#cmd窗口
#导出
#[]跳过drop table 不备份 insert语句添加列名
mysqldump -h 主机名 -u (用户名) -p (密码) [--skip-add-drop-table -c] 需要导出的数据库名 需要导出的指定的数据表 > 导出的路径
#mysqldump帮助
mysqldump --help|more
#导入
mysql -u(用户名) -p(密码) 需要导入的数据库名 需要导入的数据表 < 文件的路径
#mysql窗口导入
source 文件的路径
#也可以借助sqlyog工具实现导入导出
  • 数据库管理工具

  • 使用SQL命令来恢复和备份

    #备份特定的字段的数据
    SELECT 字段名 INTO OUTFILE 文件路径 FROM 表名;
    LOAD DATA INFILE 文件路径 INTO TABLE 表名(字段名)
    

数据库设计

设计范式

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

推荐阅读更多精彩内容

  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,661评论 0 8
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,300评论 0 9
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,427评论 1 8
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,035评论 0 19
  • 作者:烨竹 数据库的基本操作 登陆MySQL数据库服务:mysql -h服务器地址 -P端口号 -u用户名 ...
    DragonRat阅读 1,370评论 0 7