数据库
概念
数据的集合
目前流行的数据库存储形式为:关系型数据库
流行数据库软件有MySql,SqlServer,Oracle,DB2
注意
现如今大部分数据库都属于关系数据库,其关系架构理论是1970年由IBM研究员提出,他将数据以大家所熟知的表格方式进行存储与呈现,在以数学的集合论为基础,将表格与表格之间建立关系,以处理复杂的数据关系。
MySQL概述
Mysql基础
MySQL由瑞典MySQL AB公司开发,目前输入Oracle公司。
MySQL是一个开源的关系型数据库管理系统。
MySQL分为社区版和企业版。
MySQL支持各种平台,例如:windows,linux,MacOS,HP-UX,IBMAIX等。
MySQL目录结构
bin目录,存储可执行文件
data目录,存储数据文件
include目录,存储包含的头文件
lib目录,存储库文件
share目录,错误消息和字符集文件
启动MySQL服务
运行cmd
输入命令:net start mysql
停止MySQL服务:net stop mysql
登录MySQL
命令:“mysql -v”
输出版本信息
从控制台进入mysql
Mysql –uroot -p
MySQL常用命令
显示当前服务器版本
SELECT VERSION();
显示当前用户
SELECT USER();
MySQL语句的规范
关键字与函数名称全部大写。
数据库名称,表名称,字段名称全部小写
SQL语句必须以分号结尾
数据库相关操作
创建
创建数据库
Create database db01;
查看所有数据库
Show databases;
查看已创建的数据库
Show create database db01;
修改
修改数据库编码方式
ALTER DATABASE db01 CHARACTER SET gbk/utf8 ;
删除
删除数据库
DROP DATABASE db01;
数据类型和数据表
数据类型是指列,存储过程参数表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
数据表
数据表是数据库中最重要的组成部分之一,是其他对象的基础。
USE
打开数据库 USE 数据库名称。
创建数据表
CREATE TABLE table_name(
….
…
)
例如:
CREATE TABLE t01(
username VARCHAR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) );
SHOW TABLES
查看数据中的表
SHOW COLUMNS FROM t01
查看t01的表结构
记录的插入与查找
插入记录
INSERT [INTO] tbl_name [(col_name, ...)] VALUES (val,...);
例如:
完整写法
INSERT t01 (username, age, salary)VALUES('Jack', 28, 7110.12);
简写
INSERT t01 VALUES ('Tom', 25, 7321.65);
注意:
如果采用简写,所有的字段必须赋值。
记录查找
SELECT expr,...FROMtbl_name
查找所有记录
SELECT * FROM t01;
后面讲解复杂的查找方式
空值与非空
NULL,字段值可以为空
NOT NULL,字段值不能为空
例如:
CREATE TABLE t02(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NULL
);
插入记录时,字段username不能为空,而字段age可以为空。
AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次的增加量为1
这样做,可以保证记录的唯一性
例如:
CREATE TABLE t03(
id SMALLINT UNSIGNED AUTO_INCREMENT,
username VARCHAR(20) NOT NULL
);
创建失败,需要声明主键
PRIMARY KEY
主键约束
每张数据表只能存在一个主键
主键保证记录的唯一性
主键自动为NOT NULL
例如:
CREATE TABLE t03(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
注意:
AUTO_INCREMENT 字段不一定定义为主键,但是主键一定要和AUTO_INCREMENT一起使用。
主键允许赋值,但是不允许赋相同的值。
UNIQUE KEY
唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个唯一约束
例如:
CREATE TABLE t04( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARYKEY,
username VARCHAR(20) NOT NULL UNIQUE KEY
age TINYINT UNSIGNED
);
测试:
插入两条名字一样的记录会报错
DEFAULT
默认值
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
例如:
CREATE TABLE t05( id SMALLINTAUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL,
sex ENUM('1', '2', '3') DEFAULT '3'
);
如果在插入记录时,不填写sex字段的值,那么系统自动赋默认值'3'
约束
保证数据的完整性和一致性
约束分为表级约束和列级约束
如果针对一个字段进行约束,称为列级约束
如果针对两个或两个以上的字段进行约束,称为表级约束
约束包含主键约束,唯一约束,默认约束,非空约束,外键约束
PRIMARY KEY UNIQUE KEY DEFAULT NOT NULL FOREIGN KEY
· 外键约束
保持数据一致性,完整性。
实现一对一或一对多关系。
外键约束的要求
父表和子表必须使用相同的存储引擎。
数据表的存储引擎只能为InnoDB。
外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
外键列和参考列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
FOREIGN KEY (pid) REFERENCES province (id) );
修改数据表
添加列
ALTER TABLE user ADD age TINYINT UNSIGNED;
ALTER TABLE user ADD password VARCHAR(20) AFTERname;
删除列
ALTER TABLE user DROP password;
添加主键约束
ALTER TABLE tbl_name ADD
PRIMARY KEY (index_col_name,...)
例如:
先创建一张表user02
CREATE TABLE user02( id TINYINT UNSIGNED,
name VARCHAR(20) NOT NULL);
然后指定id为主键
ALTER TABLE user02 ADD PRIMARY KEY (id);
添加外键约束
ALTER TABLE tbl_name ADD FOREIGN KEY (index_col_name)
reference_definition
例如:
ALTER TABLE user02 ADD FOREIGN KEY (pid) REFERENCES
province (id);
删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY
修改字段数据类型
ALTER TABLE tbl_name MODIFY COLUMN name TEXT
记录操作(增删改查)
插入记录
INSERT[INTO] tbl_name [(col_name,...)] {VALUES|VALUE}
({expr | DEFAULT},...),(...),...
例如:
创建一张表格
CREATETABLE student (
id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20),
age TINYINT );
插入一条记录
INSERTstudent (name, score)VALUES('Jack', 100);
INSERT student VALUES(NULL, 'Rico', 90);
更新记录
所有记录的分数更新为60
UPDATE student SET score = 60;
--
将id=1的字段更新为90
UPDATE student SET score = 90 WHERE id = 1;
删除记录(单表删除)
DELETE FROM student WHERE id = 2;