# 数据库:存储数据的仓库
# 数据库更多的是安全、备份
# 客户端取服务端的数据实际都是从服务端的内存中抓取数据
# 数据库管理系统软件
# 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,
# 用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,
# 以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,
# 数据库管理员也通过dbms进行数据库的维护工作。
# 它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,
# 修改和询问数据库。
# 大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),
# 供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
# 数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,
# 转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,
# 而不必顾及这些数据在计算机中的布局和物理位置。
# 常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,Mysql(开源,免费,跨平台).
# ————————————————————————————————————————#
# 数据库系统数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。
# 其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,
# 数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,
# 使数据能被任何有权使用的人有效使用。
# ————————————————————————————————————————#
# -- 1.创建数据库(在磁盘上创建一个对应的文件夹)
# create database[ if not exists] db_name[charactersetxxx]
# -- 2.查看数据库showdatabases;查看所有数据库
# show create database db_name;
# 查看数据库的创建方式
# -- 3.修改数据库
# alter database db_name[character set xxx]
# -- 4.删除数据库
# drop database[ if exists] db_name;
# -- 5.使用数据库 切换数据库
# use db_name;
# -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
# 查看当前使用的数据库
# select database();
# ————————————————————————————————————————#
# 主键两个特性:非空且唯一>>>not null and unique
# 数据库的数据类型分为三种:1.数字类型;2.字符串类型;3.时间类型
# BLOB:二进制数据
# TEXT:文本数据
# -- 1.创建表(类似于一个excel表)
#
# create table tab_name(
# field1 type[完整性约束条件],
# field2 type,
# ...
# fieldn type
# )[character set xxx];
#
# -- 创建一个员工表employee
#
# create table employee(
# id int primary key auto_increment ,
# name varchar(20),
# gender bit default 1, -- gender char(1) default 1 ----- 或者 TINYINT(1)
# birthday date,
# entry_date date,
# job varchar(20),
# salary double(4,2) unsigned,
# resume text -- 注意,这里作为最后一个字段不加逗号
# );
#
#
# /* 约束:
# primary key (非空且唯一) :能够唯一区分出当前记录的字段称为主键!
# unique
# not null
# auto_increment 主键字段必须是数字类型。
# 外键约束 foreign key */
# -- 2.查看表信息
# desc tab_name 查看表结构
# show columns from tab_name 查看表结构
# show tables 查看当前数据库中的所有的表
# show create table tab_name 查看当前数据库表建表语句
# -- 3.修改表结构
# -- (1)增加列(字段)
# alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
# alter table user add addr varchar(20) not null unique first/after username;
# #添加多个字段
# alter table users2
# add addr varchar(20),
# add age int first,
# add birth varchar(20) after name;
# -- (2)修改一列类型
# alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
# alter table users2 modify age tinyint default 20;
# alter table users2 modify age int after id;
# -- (3)修改列名
# alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
# alter table users2 change age Age int default 28 first;
# -- (4)删除一列
# alter table tab_name drop [column] 列名;
# -- 思考:删除多列呢?删一个填一个呢?
# alter table users2
# add salary float(6,2) unsigned not null after name,
# drop addr;
# -- (5)修改表名
# rename table 表名 to 新表名;
# -- (6)修该表所用的字符集
# alter table student character set utf8;
# -- 4.删除表
# drop table tab_name;
# ---5 添加主键,删除主键
# alter table tab_name add primary key(字段名称,...)
# alter table users drop primary key;
# eg:
# mysql> create table test5(num int auto_increment);
# ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
# create table test(num int primary key auto_increment);
# -- 思考,如何删除主键?
# alter table test modify id int; -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句
# alter table test drop primary key;-- 仅仅用这句也无法直接删除主键
# -- 唯一索引
# alter table tab_name add unique [index|key] [索引名称](字段名称,...)
# alter table users add unique(name)-- 索引值默认为字段名show create table users;
# alter table users add unique key user_name(name);-- 索引值为user_name
# -- 添加联合索引
# alter table users add unique index name_age(name,age);#show create table users;
# -- 删除唯一索引
# alter table tab_name drop {index|key} index_name
# ————————————————————————————————————————#