数据库:数据库就是一个文件系统,提供了一套标准的SQL操作数据.
**常见的数据库:**
Oracle:就是甲骨文(Oracle)公司的产品.一个收费的大型的数据库.
DB2:是IBM公司的产品.一个收费的大型的数据库.
SQL Server:微软公司产品.一个收费的中型的数据库.(.NET)
MySQL:开源的数据库.(免费的) 现在已经被Oracle公司收购了.但是MySQL6.0也开始收费了.
SYBASE:中型的数据库.留下了一个Powerdeginer工具.(专业数据建模工具.)
SQLite:小型的嵌入式的数据库(Android系统)
DBMS、SQL、DDL、DML、DCL的全称:
DBMS:database management system (数据库管理系统)
SQL:structured query language (结构化查询语言)
S:创建表/删除表/修改表/备份表
数据完整性:not null/unique/default/check/pk
DDL:data definition language (数据定义语言)
DML:data manipulation language (数据操纵语言)
DBS:database system (数据库系统)
DCL:data control language (数据控制语言)>
SQL语法:Structured Query Language, 结构化查询语言
特点:
* 非过程性语言 (过程性语言:一条语句的执行 需要依赖另一条语句.)
一条语句就有一个执行的结果 。
分类:
DDL:数据定义语言
** 创建数据库 表 视图 删除数据库 表… create 、 drop 、alter…
DML(database manipulation language):数据操纵语言
* 针对的是表中的数据记录: update(修改) insert delete…
DCL:数据控制语言
* 对执行的流程进行控制: if grant while 事务…
DQL:数据查询语言(官方分类)
* select :针对表 进行 查询的.
*SQL:每句结束写一个; SQL语句不区分大小写.
数据库:对数据库进行CRUD的操作.
创建数据库:
语法:
* create database 数据库名称; (默认采用数据库服务器设置的字符集.)
* create database 数据库名称 character set 字符集;
* create database 数据库名称 character set 字符集 collate 字符集的校对规则;
查看数据库:
show databases; ---- 查看数据库服务器中有那些数据库.
SHOW CREATE DATABASE 数据库名称; ---- 查看数据库服务器中某个数据库的定义信息.
删除数据库:
drop database 数据库名称;
修改数据库:
语法:
alter database 数据库名称 character set 字符集;
alter database 数据库名称 character set 字符集 collate 校对规则;
选择数据库:
语法:
use 数据库名;
查看当前正在使用的数据库:
语法:
select database();
表:对表进行CRUD的操作.
创建表:
语法:
create table 表名(
字段名 字段类型(长度),
字段名 字段类型(长度)
);
VARCHAR、CHAR
MYSQL中 char 和 varchar的区别?
* char类型 :代表的是一个固定长度的字符串.
* 如果定义的一个 char(8) 存入数据的时候 存了一个hello 剩余的空间 用空格补全. 在hello后面放置3个空格补全.
* varchar类型:代表的是一个可变长度的字符串.
* 如果定义的一个 varchar(8) 存入数据的时候 存了一个hello 直接存了一个hello 后面3个去掉了.
查看一下表的结构:
语法: desc 表名;
显示数据库中所有的表: show tables;
* 为了保证数据的完整性:学习几个约束.
单表约束:(对单个表的约束.)
* 1.主键约束: 主键就是这一条记录的唯一标识. primary key (主键) 设置了主键 (默认 唯一而且非空.)
* 2.唯一约束: 唯一约束.表中的记录是唯一. unique
* 3.非空约束: 字段不能存入空值. not null
* 创建表的时候 可以给字段加约束:
create table 表名(
字段名 字段类型(长度) 约束,
字段名 字段类型(长度) 约束
);
***** 如果这个主键是整形的. 可以将整形的主键 设置为自动增长.
create table employee2(
id int primary key auto_increment,
name varchar(20) unique not null,
gender varchar(5) not null,
birthday date not null,
entry_date date not null,
job varchar(20) not null,
salary double not null,
resume text not null
);
***** 发现 有的类型 写了长度 而有的类型没写长度.
字符串类型 需要写长度 数值类型 日期类型可以不写长度.(他们有默认的长度) int默认值是11
* 修改表结构:
语法:
修改表添加列: alter table 表名 add 列名 类型(长度) 约束;
修改表修改列的类型 长度以及约束: alter table 表名 modify 列名 类型(长度) 约束;
修改表删除列: alter table 表名 drop 列名;
修改表名: rename table 旧表名 to 新表名;
修改列名: alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改表的字符集: alter table 表名 character set utf8;
* 删除表:
语法:drop table 表名;