数据库类型:
1.关系型数据库:MySQL,Oracle,SQL Server,SQLite,DB2
2.非关系型数据库:Redis,MongoDB

数据库管理系统:Database Management System(DBMS):
    主要用于科学组织和存储数据,高效获取和维护数据(如Navicat)

结构化查询语言:
    1.结构化查询语句,Structured Query Language,简称SQL,分为如下四大类:
    (1)数据定义语言(DDL):数据库,数据表的创建,修改和删除
        CREATE,ALTER,DROP
    (2)数据操作语言(DML):数据的增加,修改和删除
        INSERT,UPDATE,DELETE
    (3)数据查询语言(DQL):数据的查询
        SELECT
    (4)数据控制语言(DCL):用户授权,事物的提交和回滚
        GRANT,COMMIT,ROLLBACK


-- 创建数据库
CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;
-- 修改数据库
ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
-- 删除数据库
DROP DATABASE IF EXISTS lesson;
-- 查看数据库
SHOW DATABASES;
-- 使用数据库
USE lesson;
-- 列类型
decimal(m,d) //字符串类型浮点数
m为数据总位数,d为小数点后位数,m-d为整数最大位数(可以小于)
(1)数值类型
tinyint
smallint
mediumint
int
bigint
float
double
decimal
(2)日期时间类型
DATE YYYY-MM-dd ,日期格式 1000-01-01 ~ 9999-12-31
TIME HH:mm:ss ,时间格式 -838:59:59.000000 ~ 838:59:59.000000
DATETIME YY-MM-dd HH:mm:ss 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
TIMESTAMP YYYY-MM-dd HH:mm:ss 格式表示的时间戳 1970-01-01 00:00:01.000000 ~ 2038-01-1903:14:07.999999
YEAR YYYY 格式的年份值 1901~2155
(3)字符串类型
char[(M)] 固定长字符串,检索快但浪费空间
varchar[(M)] 变长字符串
text 文本串
(4)列类型修饰属性
UNSIGNED 无符号
ZEROFILL 不足位数补零
NOT NULL 该列类型值不能为空
DEFAULT 设置默认值
AUTO_INCREMENT 表示自增长,只能应用于数值列类型,该列类型必须为键,且不能为空

-- 数据表类型
MyISAM,InnoDB,HEAP,BOB,CSV,最常用的为MyISAM,InnoDB

二者区别:
(1)事务处理:前者不支持,后者支持
(2)数据行锁定:前者不支持,后者支持
(3)外键约束:前者不支持,后者支持
(4)全文索引:前者支持,后者不支持
(5)表空间大小:前者较小,后者较大,为前者两倍
//事务:涉及的所有操作是一个整体,要么都执行,要么都不执行
//数据行锁定:一行数据,当一个用户在修改该数据时,可以直接将该条数据锁定
注: 当涉及的业务操作以查询居多,修改和删除较少时,可以使用MyISAM。
    当设计的业务操作经常会有修改和删除操作时,使用InnoDB。

-- 创建数据表
CREATE TABLE IF NOT EXISTS 数据表名称(
    字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
    ......
    字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
)[ENGINE = 数据表类型] [CHARSET = 字符集编码] [COMMENT = 注释]

CREATE TABLE IF NOT EXISTS student(
    `number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键',
    name VARCHAR(30) NOT NULL COMMENT '姓名',
    sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他',
    age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
    score DOUBLE(5,2) UNSIGNED COMMENT '成绩'
) ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';
-- 修改数据表
ALTER TABLE 表名 RENAME AS 新表名;
ALTER TABLE student RENAME AS stu;
-- 增加字段
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
ALTER TABLE stu ADD phone VARCHAR(11) NOT NULL COMMENT '联系电话';
-- 查看表结构
DESC 表名;
DESC stu;
-- 修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男 女 其他';
--
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];
ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';
-- MODIFY 可修改字段名以外属性,CHANGE 可修改所有属性

--删除字段
ALTER TABLE 表名 DROP 字段名;
ALTER TABLE stu DROP mobile;

--删除数据表
DROP TABLE IF EXISTS 表名;
DROP TABLE IF EXISTS stu;