《MySQL数据库入门实战精讲》学习笔记(一)
SQL是Structured Query Language的缩写,即结构化查询语言。SQL是一门标准的计算机语言,用于访问和操作数据库,其主能包括数据定义、数据操纵、数据查询和数据控制。
按照功能用途,可以将SQL语言分为4类:DDL、DML、DQL和DCL。
- DDL (Data Definition Language)数据定义语言
用于数据库、表、视图等的建立、删除。例如CREATE、ALTER、DROP等。 - DML (Data Manipulation Language)数据操作语言 用于添加、删除和修改数据表中的记录 例如INSERT、DELETE、UPDATE等。
- DCL ( Data Control Language)数据控制语言 用于数据库对象的权限管理和事务管理 例如COMMIT、ROLLBACK、GRANT等。
- DQL ( Data Query Language)数据查询语言 用于数据查询,是基本功能 例如SELECT
MySQL数据类型:
类型 | 字节数 | 说明 |
---|---|---|
tinyint | 1 | 比smallint小 |
smallint | 2 | 比mediumint小 |
mediumint | 3 | 比int小 |
int | 4 | 整数值 |
bigint | 8 | 大整数值 |
float | 4 | 单精度浮点数值 |
double | 8 | 单精度浮点数值 |
decimal | Max(D+,M+) | 适合于财务和货币计算 |
date | 3 | YYYY-MM-DD |
time | 3 | HH:MM:SS |
year | 1 | YYYY |
datetime | 8 | YYYY-MM-DD HH:MM:SS |
timestamp | 8 | YYYYMMDDHHMMSS |
char | 0-255 | 定长字段串 |
varchar | 0-2^16-1 | 变长字符串 |
text | 0-2^16-1 | 文本数据 |
mediumtext | 0-2^24-1 | 中长文本数据 |
longtext | 0-2^32-1 | 长文本数据 |
blob | 二进制形式的文本数据 |
数据库基本操作语句(不区分大小写):
查看数据库
SHOW DATABASES
使用数据库
USE 数据库名
创建数据库
CREATE DATABASE 数据库名
删除数据库
DROP DATABASE 数据库名
创建数据表([]内容可省略)
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
[(create_definition,…)]
[table_options][select_statement]
说明:
TEMPORARY:创建临时表,在当前会话结束后将自动消失
IF NOT EXISTS:只有该表不存在时才创建
create_definition:用于定义表中各列的属性
table_options:表的配置选项,例如:表的默认存储引擎、字符集
select_statement:通过select语句建表
CREATE TABLE users(
id INT UNSIGNED AUTO_INCREMENT KEY,
login_name VARCHAR(64) NULL UNIQUE,
pwd TEXT NOT NULL
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
数据约束
- 唯一性约束
在MySQL中,可以使用关键字 UNIQUE 实现字段的唯一性约束,从而保证实体的完整性。
UNIQUE 意味着任何两条数据的同一个字段不能有相同值。
#在创建表时添加唯一性约束
create table person(
id int not null auto_increment primary key comment '主键id',
name varchar(30) comment '姓名',
id_number varchar(18) unique comment '身份证号'
);
- 外键约束 外键(FOREIGN KEY)约束定义了表之间的一致性关系,用于强制参照完整性。
外键约束定义了对同一个表或其他表的列的引用,这些列具有PRIMARY KEY或UNIQUE约束。
#学生表
create table stu(
stu_no int not null primary key comment '学号',
stu_name varchar(30) comment '姓名'
);
#成绩表
create table sc(
id int not null auto_increment primary key comment '主键id',
stu_no int not null comment '学号',
course varchar(30) comment '课程',
grade int comment '成绩',
foreign key(stu_no) references stu(stu_no)
);
查看数据表
DESC TABLE;
修改数据表
添加字段sex,类型为tinyint
ALTER TABLE users ADD sex tinyint;
修改字段sex的类型为varchar(1)
ALTER TABLE users MODIFY sex varchar(1);
删除字段sex
ALTER TABLE users DROP COLUMN sex;
删除contacts表
DROP TABLE users;
插入数据
INSERT 插入一条数据:
INSERT INTO table_name (field1, field2, ..., fieldN)
VALUES (value1, value2, ..., valueN);
INSERT 插入多条数据:
INSERT INTO table_name (field1, field2, ..., fieldN)
VALUES
(valueA1, valueA2, ..., valueAN),
(valueB1, valueB2, ..., valueBN),
…,
(valueN1, valueN2, ..., valueNN);
说明:
- 如果字段是字符型,值必须使用单引号或者双引号,如”value”;
- 如果值本身带单引号或双引号,需要转义。
如’moneky\‘s banana’
修改数据
UPDATE table_name SET
field1=newValue1, field2=newValue2 [WHERE Clause]
说明:
- 可以通过where子句来指定更新的范围,如果不带where,则更新数据表中的所有记录
删除数据
DELETE FROM table_name [WHERE Clause]//会写入日志
TRUNCATE TABLE 表格名;//不写入日志