MySQL中的DDL

MySQL中的DDL

数据库

数据库(Database),简称DB。是长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。用来保存、管理数据。用数据库保存数据的优点在于它能够确保数据的准确性(一致性和完整性),并且能降低数据的冗余。

数据库可以分为:

1.关系型数据库(SQL)。把数据存在各个表中,表之间建立关系,可以操作不同表的数据(只能放在一个服务器上)。

包括MySQL、Oracle、SQL Server、SQLite、DB2

2.非关系型数据库(NOSQL)。表之间独立,数据可分散在不同的数据库中,大量数据写入可以分散压力。

包括Redis、MongeDB

其中MySQL和Redis都是用的比较多的。

DBMS

数据库管理系统(Database Management System)

数据管理软件,科学组织和存储数据、高效地获取和维护数据。每一个数据库软件,都有一套数据库管理系统。

在这里插入图片描述

MySQL

是现流行的开源、免费的关系型数据库

特点:
1.免费、开源数据库
2.小巧、功能齐全
3.使用便捷
4.可运行于Windows或Linux操作系统
5.可适用于中小型甚至大型网站应用

MySQL的运行机制

在这里插入图片描述

各种语言的接口通过连接池与MySQL的接口连接。

DOS命令连接及使用数据库

1.开启/关闭mysql服务
net start mysql/ net stop mysql
2.登录命令:
mysql -h 服务器主机地址 -u用户名 -p用户密码
3.显示数据库:
show databases;
4.显示版本信息:
select version();
5.切换到指定数据库:
use **;
6.显示数据库中的表:
show tables;
7.查询指定表中的信息
select * from user \G;
8.更改root用户的密码:
update user set password=password(‘XXXX’) where user =‘root’;
9.刷新:
flush privileges;
10.退出:
exit;
11.寻求帮助:
?

在这里插入图片描述

SQLyog管理工具

除了DOS命令外,还可以使用SQLyog管理工具,是可手动操作、管理MySQL数据库的软件工具。
特点:
1.易用
2.简洁
3.图形化

结构化查询语句SQL

在这里插入图片描述

数据库中用到的命令语句可以分为4类,分别为DDL、DML、DQL、DCL。

命令行操作数据库

1.创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
2.删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
3.查看数据库
SHOW DATABASES;
4.使用数据库
USE 数据库名;
5.查看数据库的定义
SHOW CREATE DATABASE 数据库名;

创建数据表

1.显示表结构
DESC 表名;
2.查看数据表的定义
SHOW CREATE TABLE 表名;
3.设置严格检查模式
SET sql_mode =strict_trans_tables;

4.创建数据表

CREATE TABLE [IF NOT EXISTS] `表名`(
   `字段名1` 列类型 [属性] [索引] [注释],
   `字段名2` 列类型 [属性] [索引] [注释]
)[表类型] [表字符集] [注释];

其中表名和字段名用的是反引号,用以区别MySQL关键字和普通字符而引入。

5.删除数据表
DROP TABLE [IF EXISTS] 表名;

6.修改数据表
修改表名
ALTER TABLE 旧表名 RENAME AS 新表名;

列类型

规定了数据表中该列存放的数据类型。

分为:

1、数值类型

2、字符串类型

3、日期和时间型数值类型

4、NULL值

1.数值类型

在这里插入图片描述

通常用的比较多的为tinyint、int和double。如果需要存放年龄之类的比较小的数据,用tinyint即可,其他通常用的比较多的为int类型。decimal类型通常用于表示货币。

2.字符串类型

在这里插入图片描述

字符串类型如果储存的数据内容较少,用的比较多的是char和varchar两种类型,这两种类型的区别在于如果字符数没达到最大长度,char依然是占用了最大长度的字符,而varchar是可以变化长度的,会自动去掉空余的长度。而text为长文本类型,可以用来储存合同内容等数据。另外还有blob类型,可以用来存声音图像、网页、文档。

3.日期和时间型数值类型

在这里插入图片描述

日期和时间型数值类型通常DATETIME类型就能够契合我们的要求。

4.NULL值

可以理解为”没有值“或者”未知值“。

不要用NULL进行算数运算,结果仍为NULL。

数据字段属性

常用的数据字段属性列举5种:

1.UNSIGNED

无符号的。声明该数据列不允许负数。

2.ZEROFILL

0填充的。不足位数的用0来填充,如int(3),输入5则显示为005。

3.AUTO_INCREMENT

自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长(默认初始值为1,步长为1)

改变自增列的初始值和步长

CREATE TABLE tab1(
  ID INT(4) PRIMARY KEY AUTO_INCREMENT
)AUTO_INCREMENT=100;   #设置起始值为100,只影响当前表的初始值
SET @@ auto_increment_increment=5;  #设置步长为5,影响所有使用自增列的表
4.NULL和NOT NULL

默认为NULL,即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值

5.DEFAULT

默认的。用于设置默认值。
如性别字段,默认为"男",否则为"女";若无指定该列的值,则默认为"男"的值。

数据字段注释
CREATE TABLE IF NOT EXISTS `test`(
	`id` int(11) UNSIGNED COMMENT '编码号'
)COMMENT='测试表';

如果是字段列属性后面加注释,用COMMENT后面加’注释内容‘即可,若在表后加表注释,语法格式为COMMENT=‘注释内容’;

COMMENT关键字修饰的注释是可以随数据存进数据库被读取到的。而如果使用#的单行注释,以及/**/多行注释,只能在代码文件里看到,不能随数据存进数据库。

表类型

MySQL的数据表的类型主要包括:MyISAM、InnoDB、HEAP、BOB、CSV等。其中比较常用的有MyISAM、InnoDB两种。

MyISAM和InnoDB的主要区别如下图:
在这里插入图片描述

MyISAM主要用于节约空间及相应速度,而InnoDB主要用于安全性,事务处理及多用户操作数据表。即MyISAM适合查询快捷,而InnoDB适合增删改查数据。

CREATE TABLE `表名`(
	#省略一些代码
)ENGINE=InnoDB;
设置数据表字符集

可为数据库、数据表、数据列设定不同的字符集。在创建时通过命令来设置,如:

CREATE TABLE `表名`(
	#省略一些代码
)CHARSET = utf8;

如无设定,则根据MySQL数据库配置文件my.ini中的参数设定。

修改数据表

需要用到ALTER关键字

1.修改表名

ALTER TABLE 旧表名 RENAME AS 新表名;

2.添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [属性];
3.修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [属性];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [属性];
4.删除字段
ALTER TABLE 表名 DROP 字段名;

主键

唯一区分数据与别的数据不一样的列数据.主键字段必须非空,不重复,一个表里只能有一个主键,也可以没有主键
如学号,身份证号等字段可以作为主键
主键字段用PRIMARY KEY表示

外键

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
一个表里的外键可以有一个,也可以有多个
主-外键关系的表之间,有主键的表叫主表,有外键的表叫子表(从表)
外键引用的数据一定在主键范围内,确保了数据的安全性

外键字段用FOREIGN KEY表示

外键有两种创建方式:

(1)建表时指定外键约束

CREATE TABLE student(
   #省略内容
   CONSTRAINT FK_外键名 FOREIGN KEY (外键字段名) REFERENCES 主表名(主键字段名)
);

(2)建表后修改字段

ALTER TABLE student ADD CONSTRAINT FK_外键名 FOREIGN KEY (外键字段名) REFERENCES 主表名(主键字段名)
删除外键

语法:

ALTER TABLE student DROP FOREIGN KEY FK_外键名
ALTER TABLE student DROP INDEX FK_外键名  (删除索引)

删除具有主外键关系的表时,要先删子表,后删主表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值