1、启动、退出数据库
启动mysql服务:net start mysql;
关闭mysql服务:net stop mysql;
2、登录与退出
mysql -u(用户名) -p(密码) -h(服务器名称) -P(端口号);
3、创建数据库
CREATE DATABASE IF NOT EXISTS t1 CHARACTER SET utf8; //创建一个t1的数据库,编码方式为utf-8;
4、删除数据库
DROP DATABASE IF EXISTS t1;//删除t1数据库
5、数据类型;
(1)整形:
TINYINT 1个字节;
SMALLINT 2个字节;
MEDIUMINT 3个字节;
INT 4个字节;;
BIGINT 8个字节;
(2)浮点型
FLOAT 小数点后七位;
DOUBLE 是float的十倍;
(3)时间
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/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
(4)字符型
类型 | 大小 | 用途 |
---|---|---|
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字节 | 极大文本数据 |
6、什么是外键?
外键是加在从表中的,一个从表中可以有多个外键;
作用:是为了不让一张表中有冗余信息,例如学生信息以及成绩,会放在俩个表中通过外键约束;
https://www.cnblogs.com/bhlsheji/p/5332910.html
7、外键约束的设置;
RESTRICT:拒绝父表的删除或更新;
NO ACTION:标准的SQL关键字,在MYSQL中与RESTRICT一致;
CASCADE:父表更新且自动更新字表;
SET NULL:附表中更新行,并设置字表中的外键列为NULL;
8、删除主表数据报错该如何解决?
俩种方式:
(1)先删除从表中的数据,再删除主表中的数据
(2)设置外键的参照操作为CASCADE;
9、操作记录
(1)插入
INSERT INTO tbl_name(col_name,...) VALUES(a);
INSERT ... SET ;
INSERT ... SELECT;
(2)更新
UPDATE table SET ...
(3)删除
DELETE FROM table where 条件;
(4)查询;
SELECT * from table where;
10、关键字;
GROUP BY/ HAVING col_name/age > 20;按照对应的列分组;
ORDER BY age/name DESC/asc; 按照年龄或者名称降序/升序排列;
LIMIT 起始位,结果个数;限制返回个数,如果只有结果个数则从第0个开始;
11、in与between的区别
in (val1,val2,val3,...)
between min and max;
in是相当于数组,between则是相当于min与max的集合闭区间;
12、exists 与in
SELECT * from tbl where exists(条件);先执行父查询,在执行子查询,返回值为true或者false;
in 则是先执行子查询,后执行父查询,返回子查询中匹配的值;
13、distinct 去重;
14、union 和 union all
union的作用是联合俩个查询语句的结果,会去掉重复结果;
union all的作用是直接将俩个查询语句的结果返回;
15、char与varchar的区别?
char是固定长度的,varchar是可变长度的;
16、视图
视图就是虚拟的表,其就是一个select语句返回的结果集,对视图也可以进行一般的数据库操作,但是操作也会影响对应的表;
缺点:如果是复杂的多表查询,那么无法更改数据;
17、like 使用通配符模糊查询;
select * from tbl where name like '%asd_'; %多个字符,_单个字符
18、函数
Round() 四舍五入;
AVG()平均值;
COUNT()统计个数;
CONCAT() :将其中的内容连接成同一个字符串;
19、连接
table_a inner/left/right join table_b on table_a.id = table_b.id
20、数据的三范式
第一范式:列不可再分;第二范式:行可以唯一确定(只要有重复就把表拆开);第三范式:表的非主属性不能依赖于其他表的非主属性;
21、InnoDB日志的种类
错误日志:记录出错的日志,警告以及一些正确信息;
查询日志:记录所有对数据库请求的信息;
慢查询日志:记录一个阈值,超过这个阈值的sql语句都会被记录到慢查询日志中;
二进制日志:记录对数据库进行的所有的更改的操作;
中继日志:事务日志;
22、如果mysql的cpu飙升该如何?
(1)、show processlist 列出所有的进程,查看其状态;
(2)、观察日志;
23、如何主从复制?
(1)开启日志;
(2)配置server-id;
(3)创建一个用来通信的账户;
(4) 在从数据库启动 start slave;