MySQL数据库
什么是SQL?
SQL(Structured Query Language)结构化查询语言
数据库的好处
1):储存大量数据,方便检索和访问
2):保持数据信息的一致,完整
3):共享和安全
4):通过组合和分析,产生新的有用信息
数据库的安装配置
1):端口号设置: 使用默认端口号3306
2):摩恩字符集设置: 使用UTF8字符集
3):Root密码设置: 根据自己需求(记住)
4):环境变量配置: 将MySQL安装目录下斌文件夹写入环境变量.
5):通过查看my.ini配置文件,检查是否配置正确,如有误请修改(修改后需重启MySQL)
MySQL中的运算符
算术运算符
+ 加运算,求两个数或表达式相加的和
- 减运算,求两个数或表达式相加的差
* 乘运算,求两个数或表达式相加的积
/ 除运算,求两个数或表达式相除的商, 例如:5/5的值为1, 5.7/3的值为1.900000
% 取模运算,求两个数或表达式相除的余数 例如:5%3的值为2.
赋值运算符
= 把一个数或表达式赋给另一个变量 例如: Name = “XXX”
比较运算符
=等于 > 大于 < 小于 <> 不等于 >=大于等于 <=小于等于
!=不等于(非SQL-92标准)
逻辑运算符
AND 等同于Java的&& 且...和
OR 等同于java的|| 或....
NOT 等同于Java的! 取反...
使用DDL语句操作数据库
创建MySql创建数据库 CREATE DATABASE 数据库名;(可忽略大小写)
Query OK, 表示SQL语句执行成功
1 row affected 表示操作影响行数
0.00 sec 表示操作执行时间
查看数据库列表 show databases;
选择数据库 USE 数据库名; (操作数据库之前必须要选择数据库)
删除数据库 DROP DATABASE 数据库名
使用SQLyog管理工具
创建数据库(也可以通过DDL语句来创建数据库)
SQL的分类:
a.DDL(Data Definition Language)数据定义语言
CREATE
DROP
ALTER
b.DML(Data Manipulation Language)数据操纵语言
INSERT
UPDATE
DELETE
SELECT
c.DCL(Data Control Language)数据控制语言
GRANT
REVOKE
d.TCL(Transaction Control Language)事务控制语言
COMMIT
ROLLBACK
使用SQL创建表的步骤
1:确定表中有哪些列
2:确定表中的列的数据类型
3:给表添加约束
4:建立表与表之间的关系。
创建表的基本语法:
CREATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型[字段属性[约束][索引][注释]]
字段2数据类型[字段属性[约束][索引][注释]]
。。。。。。
字段n 数据类型[字段属性[约束][索引][注释]]
)[表类型][字符集][注释];
表列类型的设置:
列类型:规定数据库中列的值的数据类型
列表类型分类:
1):数值类型
a) 整数型
1字节 TINYINT
2字节 SMALLINT
3字节 MEDIUMINT
4字节 INT 常用
8字节 BIGINT
b) 浮点型
4字节 FLOAT
8字节 DOUBLE
UNSIGNED 设置无符号的数据,该数据列不允许为负数。
ZEROFILL 不足位数,使用0填充 如INT(4) 22则为0022
2):字符串类型
常用:char varchar text
char(M) 定长字符串 M字节;M为0-255的整数
Varchar[(M)] 可变字符串; M为0-65535的整数
定点数:DECIMAL(M,D);
M:最大精度位数即总位数,M的取值范围是1~65,默认值为10;
D:小数位精度位数,D的取值范围是0~30;
3):日期和时间
常用:DATE(日期格式)TIME(时间格式) DATETIME(常用组合格式) TIMESTAMP(时间戳:表示1970-2037年的某个时刻)
4):null
理解为“没有值”或“未知值”
如果使用null进行算术运算,结果为null
在MySQL中,0或null都意味着假,1为真。
5):其他
Clob 大的文章使用
Blob 储存音视频使用
表列的注释:
Comment =’注释内容
表的注释
Comment ’XXX’
MySQL注释:
#... 单行注释
/*......*/ 多行注释
表类型: 设置表类型使用ENGINE=表类型;
1):MyISAM
2):InnoDB 默认的
MyISAM与InnoDB区别
名称 MyISAM InnoDB
事务处理 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约2倍
应用场合:
MyISAM : 节约空间及相应速度
InnoDB : 安全性,事物处理及多用户使用
数据库表存储的位置:安装目录\data
a.数据库表是以文件方式存储在磁盘中的。
b.包括表文件、数据文件和数据库选项文件。
c.目录名对应数据库名,文件名对应表名。
注:innoDB类型的表有一个*.frm文件和上一级目录的ibdata1文件。
Myisam类型的表有三个文件:
a.*.frm表结构定义文件
b.*.myd表数据文件
c.*.myi表索引文件
设置字符集
1,创建时通过命令来设置,如:
CREATE TABLE 表名(
#省略代码
)CHARSET = UTF8;
2.如无设定,则根据MySQL数据库配置文件my.ini中的参数设定
如:character-set-sever=utf8
使用DDL语句修改表:
1):修改表明
ALTER TABLE 旧表名 RENAME 新表名
2):添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [属性]
3):修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]修改列类型
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型(属性) 修改类名
4):删除字段
ALITE TABLE 表名 DROP 要删除的字段名
表操作(选择好数据库之后):
查看表是否存在
Show 表名;
查看表定义:
Describe 表名 或desc 表名
删除表:
Drop table[IF EXISTS]表名 if exists是判断数据库是否存在.
查询
Help 查询内容.或 ? 查询内容
数据完整性分类
1):数据实体完整性:
约束方法:唯一约束,主键约束,标识列(SQL server)
2):字段完整性
约束方法:限制数据类型,检查约束,外键约束,默认值,非空约束.
3):引用完整性
约束方法:外键约束.
4):自定义完整性
约束方法:规则,储存过程,触发器
表列的属性约束
auto_increment 自动增长,每添加一条记录,会在上一条数据基础上加1.一般设置主键且为整数类型。可定义初始值和步长。
Null和not null
Null默认为null,没有插入数值,值为null 可以赋空.
Not null 则该列必须有值。
Default 默认的,用于设置默认值。
Unique key(UK) 设置字段的值是唯一的,但只能有一个空值.
Primary key(pk) 主键约束 设置该字段为表的主键,可唯一标识该表记录
Foreign key(fk) 外键约束 用于在两表之间建立关系,需要制定引用主表的哪个字段
添加主键约束
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段)
添加外键约束
ALTER TABLE 外键表名 ADD COMSTRAINT约束名 FOREIGN KEY(外键字段) REFERNCES 主键表名(主键表的主键名)
约束名常规设计格式:FK_外键表名_主键表名
选择主键的原则:
最少性
尽量选择单个键作为主键
稳定性
尽量选择数值更新少的列作为主键