数据库:DB(DataBase)
概念:数据仓库,软件,安装在操作系统之上
关系型数据库:SQL(Structured Query Language)
MySQL、Oracle、Sql Server、DB2、SQLlite
通过表和表之间,行和列之间的关系进行数据的存储
通过外键关联来建立表与表之间的关系
非关系型数据库:NoSQL(Not Only SQL)
Redis、MongoDB
指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
所有的语句都要以分号结尾
show databases; --查看当前所有的数据库 use 数据库名; --打开指定的数据库 show tables; --查看所有的表 describe/desc 表名; --显示表的信息 create database 数据库名; --创建一个数据库 exit --退出连接
-- --单行注释 # --单行注释 /*...*/ --多行注释
1、创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
2、删除数据库
DROP DATABASE [if EXISTS] 数据库名;
3、使用数据库
--如果表名或者字段名是特殊字符,则需要带`` use 数据库名;
4、查看数据库
SHOW DATABASES;
数值
没有值,未知
不要使用NULL值进行计算
UnSigned 无符号的 声明了该列不能为负数
ZEROFILL 0填充的
不足位数的用0来填充 , 如int(3),5则为005
Auto_InCrement
通常理解为自增,自动在上一条记录的基础上默认+1
通常用来设计唯一的主键,必须是整数类型
可定义起始值和步长
当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)
NULL 和 NOT NULL
默认为NULL , 即没有插入该列的数值
如果设置为NOT NULL , 则该列必须有值
DEFAULT 默认的 ,用于设置默认值
例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值
拓展:每一个表,都必须存在以下五个字段:
CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别', `birthday` DATETIME DEFAULT NULL COMMENT '出生日期', `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8
注意点:
表名和字段尽量使用``括起来
AUTO_INCREMENT 代表自增
所有的语句后面加逗号,最后一个不加
字符串使用单引号括起来
主键的声明一般放在最后,便于查看
不设置字符集编码的话,会使用MySQL默认的字符集编码Latin1,不支持中文,可以在my.ini里修改
格式:
CREATE TABLE IF NOT EXISTS `student`( '字段名' 列类型 [属性] [索引] [注释], '字段名' 列类型 [属性] [索引] [注释], ...... '字段名' 列类型 [属性] [索引] [注释] )[表的类型][字符集设置][注释]
常用命令:
SHOW CREATE DATABASE 数据库名;-- 查看创建数据库的语句 SHOW CREATE TABLE 表名;-- 查看表的定义语句 DESC 表名;-- 显示表的具体结构
INNODB
默认使用,安全性高,支持事务的处理,多表多用户操作
MYISAM
早些年使用,节约空间,速度较快
数据库文件存在的物理空间位置:
MySQL数据表以文件方式存放在磁盘中
包括表文件 , 数据文件 , 以及数据库的选项文件
位置 : Mysql安装目录\Data\
(目录名对应数据库名 , 该目录下文件名对应数据表)
INNODB数据库文件类型就包括.frm、.ibd以及在上一级目录的ibdata1文件
MYISAM存储引擎,数据库文件类型就包括
.frm:表结构定义文件
.MYD:数据文件
.MYI:索引文件
修改表名 : ALTER TABLE 旧表名 RENAME AS 新表名
添加字段 :ALTER TABLE 表名 ADD字段名 列属性[属性]
修改字段 :
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
删除字段: ALTER TABLE 表名 DROP 字段名
-- 修改表名 -- ALTER TABLE 旧表名 RENAME AS 新表名 ALTER TABLE teacher RENAME AS teachers; -- 增加表的字段 -- ALTER TABLE 表名 ADD 字段名 列属性 ALTER TABLE teachers ADD age INT(11); -- 修改表的字段(重命名,修改约束) -- ALTER TABLE 表名 MODIFY 字段名 [列属性]; ALTER TABLE teachers MODIFY age VARCHAR(11);-- 修改约束 -- ALTER TABLE 表名 CHANGE 旧名字 新名字 [列属性]; ALTER TABLE teachers CHANGE age age1 INT(1);-- 字段重命名 -- 删除表的字段 -- ALTER TABLE 表名 DROP 字段名 ALTER TABLE teachers DROP age1;
语法:DROP TABLE [IF EXISTS] 表名
IF EXISTS为可选 , 判断是否存在该数据表
如删除不存在的数据表会抛出错误
-- 删除表(如果存在再删除)
DROP TABLE IF EXISTS teachers;
所有的创建和删除尽量加上判断,以免报错~