数据库: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\
(目录名对应数据库名 , 该目录下文件名对应数据表)
MySQL在文件引擎上区别:
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;
所有的创建和删除尽量加上判断,以免报错~