做软件开发,不会点数据库操作是不行的,这篇文章主要是介绍MySql的基本使用。
基本概念
什么是SQL
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言
SQL能做什么
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的记录
- SQL 可更新数据库中的数据
- SQL 可从数据库删除记录
- SQL 可创建新数据库
- SQL 可在数据库中创建新表
- SQL 可在数据库中创建存储过程
- SQL 可在数据库中创建视图
- SQL 可以设置表、存储过程和视图的权限
数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
SQL语句
您需要在数据库上执行的大部分工作都由 SQL 语句完成,本教程主要介绍SQL语句,SQL 对大小写不敏感!
SQL 之DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
- DML(对数据库进行更删改查)
- SELECT – 从数据库表中获取数据
- UPDATE – 更新数据库表中的数据
- DELETE – 从数据库表中删除数据
- INSERT INTO – 向数据库表中插入数据
- DDL(创建、删除表格、定义索引、添加约束等)
- CREATE DATABASE – 创建新数据库
- ALTER DATABASE – 修改数据库
- CREATE TABLE – 创建新表
- ALTER TABLE – 变更(改变)数据库表
- DROP TABLE – 删除表
- CREATE INDEX – 创建索引(搜索键)
- DROP INDEX – 删除索引
数据类型
在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。
Text 类型:
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |
ENUM(x,y,z,etc.) | 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 |
SET | 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。 |
Number 类型:
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
SMALLINT(size) | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
Date 类型:
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD |
DATETIME() | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS |
TIMESTAMP() | *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS |
TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
YEAR() | 2 位或 4 位格式的年。注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。 |
即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
数据库操作
//创建数据库
CREATE DATABASE [数据库名称]; //CREATE DATABASE db_test;
//使用数据库
USE [数据库名称]; //USE db_test;
//删除数据库
DROP DATABASE [数据库名称];//DROP DATABASE db_test;
//显示所有的数据库
SHOW DATABASES;
表操作
创建表
//语法
CREATE TABLE 表名称
(
列名称1 数据类型 [完整性约束条件],
列名称2 数据类型 [完整性约束条件],
列名称3 数据类型 [完整性约束条件],
....
)
//举个例子:
CREATE TABLE t_book(
id INT PRIMARY KEY AUTO_INCREMENT, //primary key表示主键、auto_increment表示自动+1
NAME VARCHAR(20),
describe VARCHAR(40),
price decimal(5,2),
bookTypeId int
);
约束条件 | 说明 |
---|---|
primary key | 该属性为主键 |
foreign key | 该属性为外键,与某表的主键关联 |
not null | 该属性不能为空 |
unique | 该属性的值是唯一的 |
auto_increment | 该属性的值自动增加 |
default | 该属性设置默认值 |
查看表结构
desc 表名; //desc Person;
添加外键
假设有个表t_bookType,用来存储书籍类型,然后t_book的bookTypeId与t_bookType的id进行关联,那么就需要给t_book添加外键。具体如下:
//举个例子:
CREATE TABLE t_bookType(
id INT PRIMARY KEY AUTO_INCREMENT,
typeName VARCHAR(20)
);
CREATE TABLE t_book(
id INT PRIMARY KEY AUTO_INCREMENT,
bookName VARCHAR(20),
author VARCHAR(20),
bookTypeId INT,
CONSTRAINT `fk` FOREIGN KEY (`bookTypeId`) REFERENCES `t_bookType` (`id`)
);
修改表
- 修改表名
ALTER TABLE 原表名 RENAME 新表名; //ALTER TABLE t_book RENAME t_book2;
- 修改属性
ALTER TABLE t_book CHANGE 旧属性名 新属性名 数据类型;//ALTER TABLE t_book CHANGE bookName bookName1 VARCHAR(30);
- 添加属性
ALTER TABLE t_book ADD 属性名 数据类型 [完整性约束][first|after 属性名];//ALTER TABLE t_book ADD bookDate DATE;
- 删除属性
ALTER TABLE t_book DROP 属性名;//ALTER TABLE t_book DROP bookDate;
- 删除表
DROP TABLE 表名;//DROP TABLE t_book;
//注意删除的表之间有关联的时候,只能够删除子表,不能够删除父表;也就是说能够删除t_book,不能删除t_bookType;
因为内容过多,今天的内容就介绍到这里,这篇文章主要对SQL的基本定义、数据类型和数据库及表的创建、删除做了简单的介绍。
接下来我们主要介绍如何对数据表进行更删改查等操作。