-
数据库相关术语
1、数据库系统(Database System)包括:数据库,数据库管理系统(DBMS),应用开发工具,管理员及用户;
2、SQL语言(Structured Query Langyage):结构化管理语言,包括DDL(数据定义语言),DML(数据操作语言),DQL(数据查询语言),DCL(数据控制语言);
3、SQL语句语法规范: 常用MySQL的关键字需要大写,库名、表名、字段等使用小写 SQL语句支持折行操作,拆分时不能把完整的单词拆开;数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须使用,需要使用反引号’'将其括起来;
-
数据库基本操作
1、创建数据库:CREATE DATABASE或SCHEMA db_name;(数据库名称最好有意义,名称不要包含特殊字符或MySQL关键字)
2、查看当前服务器下的全部数据库:SHOW DATABASES或SCHEMAS;
3、检测数据库名称是否存在,如果不存在则进行创建:CREATE DATABASE IF NOT EXISTS db_name;
4、创建数据库的同时制定编码方式:CREATE DATABASE IF NOT EXISTS test3 DEFAULT CHARACTER SET ‘UTF-8’;
5、修改指定数据库的编码方式:ALTER DATABASE db_name DEFAULT CHARACTER SET = charset;
6、打开指定数据库:USE db_name;
7、得到当前打开的数据库:SELECT DATABASE();
8、删除指定的数据库:DROP DATABASE db_name;
9、如果数据库存在则删除:DROP DATABASE IF EXISTS db_name;
10、查看指定数据库的详细信息:SHOW CREATE DATABASE db_name;
mysql 注释: #注释 或者 --注释
11、常用SQL语句:
查看上一步的警告信息:SHOW WARNINGS;
通过键盘的上下键,可以快速得到已写的sql语句。
-
数据表相关操作:
数据表是数据库最重要的组成部分之一,数据保存在数据表中。数据表由行(row)和列(column)来组成,每个数据表中至少有一列,行可以有零行或多行来组成,表名要求唯一,不要包含特殊字符,最好含义明确;
创建表:CRETAE TABLE IF NOT EXISTS tbl_name(字段名称 字段类型[完整性约束条件],字段名称 字段类型[完整性约束条件],. . . )ENGINE=存储引擎 CHARSET=编码方式;通过COMMENT来给字段加注释;通过反引号来防止名字和关键字起冲突; -
MySQL中的数据类型:
整数型:
1、TINYINT占1字节: 有符号值(-127~128)和无符号值(0到255)
2、SMALLINT占2字节:有符号值(-32768~32767)和无符号值(0到65535)
3、MEDIUMINT占3字节:有符号值(-8388608~8388607)和无符号值(0到16777215)
4、INT占4字节:有符号值(-2的31次方到2的31次方减一)和无符号值(0到2的32次方-1)
5、BIGINT占8字节:有符号值(-2的63次方到2的63次方减一)和无符号值(0到2的64次方-1)
6、BOOL,BOOLEAN占1字节:等价于TINYINT(1),0位false,其余为true
浮点数:
1、FLOAT[(M(该浮点数总长度),D(小数点后面的长度))]占4字节、DOUBLE[(M,D)]占8字节、DECIMAL[(M,D)]。精度要求高的话使用decimal类型,decimal默认保留整数部分,不设置数字长度和小数,decimal默认保存的是整数(四舍五入为整数)。
2、定点数,内部以字符串的形式存储
字符串类型 :
1、 CHAR类型的检索速度比VARCHAR块,但VARCHAR比CHAR节省空间,保存字符串长度固定式用CHAR,长度不固定或者长度大于255时用VARCHAR;
2、SELECT CONCAT(’’,‘a’,’’),CONCAT(’’,‘b’,’’) FROM test_str 连接字符串
3、CHAR默认存储数据的时候,后面会用空格填充到指定长度;而在检索的时候会去掉后面的空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下;
4、TEXT列不能有默认值,检索的时候不存在大小写转换
日期时间类型:
1、TIME:[D HH:MM:SS] 形式,占3字节 D表示天数0-34,但是,输出的格式不会显示天数,而是会把天数乘24加HH。
2、DATE:占3字节 YYYY-MM-DD形式,如果YYYY部分写的是77-99,则自动转换成1970-1999,如果写的是00-69,则自动转换成2000-2069,占3字节
3、DATETIME:YYYY-MM-DD HH:mm:DD形式,占8字节
4、TIMESTAMP:占3字节,插入CURRENT_TIMESTAMP或NULL或什么也不写,都会得到当前日期和时间
5、查询当前时间 可以是
SELECT NOW();
SELECT CURTIME();
SELECT CURRENT_TIME;
SELECT CURTIME_TIME()
-
查看当前数据库下已有数据表:SHOW TABLES;
SHOW FULL TABLES FROMIN imooc;查看数据库imooc下的数据表
查看指定数据表的详细信息:SHOW CREATE TABLE tbl_name;
查看表结构:DESC tbl_name;或DESCRIBE tbl_name;或SHOW COLUMNS FROM tbl_name;
删除指定数据表:DROP TABLE IF EXISTS tbl_name;
-
完整性约束条件:
1、unsigned无符号,没有负数,从0开始
2、zerofill零填充,当显示长度不够的时候可以使用前补0的效果填充至指定长度
3、NOT NULL非空约束,插入值的时候这个字段必须要给值
4、DEFAULT默认值,如果插入值的时候没有给字段赋值,则使用默认值
5、PRIMARY KEY主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空,复合主键:PRIMARY KEY(id,courseId) ,把两个、多个列组合起来,充当主键;自动编号的字段必须定义为主键;
6、UNIQUE KEY唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL除外
7、AUTO_INCREMENT自动增长,只能用于数值列,而且配合索引所有
8、FOREIGN KEY外键约束
9、向列表中插入值:
INSERT tb_name(id,username,…) VALUES(1,‘KING’,…);
查询表中所有记录:SELECT * FROM tb_name;
-
存储引擎
MyISAM存储引擎:
1、默认MyISAM的表会在磁盘中产生3个文件:.frm表结构文件、.MYD数据文件、.MYI索引文件,
2、可以在建表的时候指定数据文件和索引文件的存储位置,只有MyISAM支持,方法:
DATA DIRECORY[=]数据保存的绝对路径,或INDEX DIRECORY[=]索引文件保存的绝对路径
3、MyISAM单表最大支持的数据量2的64次方条记录,每个表最多可以建立64个索引
4、如果是复合索引,每个复合索引最多包含16个列,索引值最大长度是1000B
5、MyISAM引擎的存储格式:
①定长(FIXED静态)是指字段中不包含VARCHAR/TEXT/BLOB等
②动态(DYNAMIC)只要字段中包含了VARCHAR/TEXT/BLOB等
③压缩(COMPRESSED)myisampack创建
在创建数据表时,可以在ENGINE参数后添加 ROW_FORMAT=FIXED/DYNAMIC进行格式化
InnoDB存储引擎:
1、设计遵循ACID模型,支持事务,具有从服务崩溃中恢复的能力,能够最大限度保护用户的数据
原子性(Atomiocity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability);
2、支持行级锁,可以提升多用户并发时的读写性能;
3、支持外键,保证数据的一致性和完整性;
4、拥有自己独立的缓冲池,常用的数据和索引都存在缓存中;
5、对于INSERT、UPDATE、DELETE操作,使用一种change buffering的机制来自动优化,还可以提供一致性的读,并且还能够缓存变更的数据,减少磁盘I/O,提高性能
6、创建InnoDB表之后会产生两个文件:①.frm表结构文件②.ibd,数据和索引存储空间中
7、所有的表都需要创建主键,最好配合上AUTO_INCRAMENT,也可以放到经常查询的列作为主键
数据库——MYSQL基础知识
最新推荐文章于 2024-07-11 10:18:59 发布