- 多写写多看看
1.如何创建和删除数据库
创建:cerate database
删除:drop database
2.char与varchar的区别
char:固定长度的字符串类型
varchar():可变长度的字符串类型
3.建表语句中varchar(50)的意思
字段最多放置50个字符
4..int(10)的意思
INT[(M)][UNSIGNED][ZEROFILL] M的默认为11,指最大显示宽度,最大值为255
int(10),字段存的值是10,显示会自动补8个0,即0000000010
int类型在数据库里面存储占4个字节
- 有符号的整型范围:-2147483648 ~ 2147483647
- 无符号:0 ~ 4294967295
5.MYSQL如何获取当前日期
select current_date();
6.获取MYSQL版本
select version();
7.什么是触发器?MYSQL都有哪些触发器?
触发器是指一段代码,当触发某个事件时,自动执行这些代码
MYSQL数据库的六种触发器
1.Before Insert
2.After Insert
3.Before Update
4.After Update
5.Befre Delete
6.After Delete
使用场景:
- 可以通过数据库中的相关表实现级联更改
- 实时监控表中字段的更改做出相应处理
8.MYSQL显示表前50行
select * from tablename limit 0,50;
9.如何连接MySQL服务端、关闭连接?
连接:使用指令mysql -u -p -h -P(-u:指定用户名 -p:指定密码 -h:主机 -P:端口)连接MYSQL服务端
关闭:使用指令exit或quit
10.说一说MYSQL中的事务
事务四大特性:
1.原子性:一个事务中所有操作,要么全部完成,要么全部不完成
2.一致性:事务开始前和结束后,数据库的完整性没有破坏
3.隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行而导致数据不一致
4:持久性:事务处理结束后,对数据的修改是永久的
事务处理方法: 1.用begin,rollback,commit来实现
- begin开始事务
- rollback事务回滚
- commit事务确认
2.直接用set来改变提交模式
- set autocommit=0禁用自动提交
- set autocommit=1开启自动提交
11.MYSQL中text数据类型的最大长度
- tinytext:256 bytes
- text:64kb
- mediumtext:16Mb
- longtext:4GB
12.Mysql中有哪些时间字段
好多
占用空间
- datetime:8bytes
- timestamp:4bytes
- date:4bytes
- time: 3bytes
- year:1bytes
日期格式
- datetime:yyyy-mm-dd hh:mm:ss
- timestamp:yyyy-mm-dd hh:mm:ss
- date:yyyy-mm-dd
- year:yyyy
- time:hh:mm:ss
最小值
- DATETIME:1000-01-01 00:00:00
- TIMESTAMP:1970-01-01 00:00:01 UTC
- DATE:1000-01-01
- TIME:-838:59:59
- YEAR:1901
最大值
- DATETIME:9999-12-31 23:59:59
- TIMESTAMP:2038-01-19 03:14:07 UTC
- DATE:9999-12-31
- TIME:838:59:59
- YEAR:2125
零值
- DATETIME:0000-00-00 00:00:00
- TIMESTAMP:1970-01-01 00:00:01 UTC
- DATE:0000-00-00
- TIME:00:00:00
- YEAR:0000
13.MYSQL中datetime和timestamp的区别
存储精度都为秒
区别:
- datetime 日期范围1001-9999年,timestamp的时间范围1970-2038
- datetime存储时间与时区无关;timestamp存储时间与时区有关,显示值也依赖于时区
- datetime的存储空间为8bytes;timestamp存储为4bytes
- datetime默认值为null;timestamp默认不为空,默认值是当前时间
14.Innodb引擎有什么特性?
- 插入缓冲
- 二次写
- 自适应哈希索引
- 预读
15.什么是索引?什么场景使用?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
使用场景
- 中到大数据表适合
- 小数据表,大部分情况全表扫描效率更高
- 特大数据表。建立和使用索引的代价随之增大,适合分区或分库
16.索引的种类
- 普通索引:最基本的索引,没有任何限制
- 唯一搜索:和普通搜索类似,但具有唯一性约束,可以有null
- 主键索引:特殊的唯一索引,不允许有null,一张表最多有一个主键索引
- 组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并
- 全文索引:对文本的内容进行分词、搜索
- 覆盖索引:查询列要被所建的索引覆盖,不必读取数据
17.索引如何创建于删除?
- 创建单个字段索引:create index 索引名 on 表名(字段名)
- 创建联合索引: create index 索引名 on 表明(字段名1,字段名2)
- 索引命名格式:idx_表名_字段名。有长度限制
- 删除索引:drop index 索引名 on 表名
18.索引对性能有哪些影响
优点
- 减少数据库服务器需要扫描的数据量
- 帮助数据库服务器避免排序和临时表
- 将随机I/O变顺序I/O
- 提高查询速度
- 唯一索引,能保证数据唯一性
缺点
- 索引的创建和维护好事随着数据量增加而增加
- 对表中数据进行增删改时,索引也要动态维护,降低了数据的维护速度
- 增大磁盘占用
19.MYSQL创建和使用索引注意事项
- 适合创建索引的列是出现在where和欧尼自居中的列,而不是出现在select关键字后的列
- 索引列的基数越大,数据区分度越高,索引效果越好
- 对字符串列进行索引,可制定一个前缀长度,节省索引空间
- 避免创建过多的索引,索引会额外占用磁盘空间,降低写操作效率
- 主键尽可能选择较短的数据类型,可减少索引的磁盘空间,提高查询效率
- 联合索引遵循前缀原则
- line查询,%在前不到索引(这句看不懂),可考虑使用ElasticSearch、Lucene等引擎
- MYSQL在数据量较少的情况下可能回不使用索引,因为全表扫描比使用索引速度快
- 关键词or前面的条件中的列有索引,后面的没有,所有列的索引都不会被用到
- 列类型是字符串,查询时一定要给值加引导,否则索引失败
- 联合索引要遵从最左前缀原则,否则不会用到索引
20.创建MYSQL联合索引应该注意什么?
- 联合索引要遵循最左前缀原则,否则不会用到索引
- MYSQL从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但是只能最左侧
- 如索引index(a,b,c),可以支持a或a,b或a,b,c 3中组合查询,但不支持b,c进行查找