数据库
1.SQL语言分类
DML:添加、修改、删除、查询
DCL:用户、权限、事务
DDL:逻辑库,数据表,视图,索引
2.SQL语句的注释
#这是一段注释文字
/*
这是一段注释
文字
*/
3.创建数据库
show databases;#显示所有数据库
create database demo;#创建名为demo的数据库
drop database demo;#删除名为demo的数据库
4.创建数据表
create table 数据表(
列名1 数据类型 [约束] [comment 注释],
列名2 数据类型 [约束] [comment 注释]
)[comment=注释];
create table student(
id int UNSIGNED PRIMARY key,
name VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL,
birthday DATE NOT NULL,
tel CHAR(11) NOT NULL,
remark VARCHAR(200)
);
数据表的其他操作
INSERT INTO student VALUES(1,"李强","男","1995-05-15","17340794738",NULL);
show tables;#查看当前库中所有表
desc student;#查看表结构
drop TABLE student;#删除表
5.数据类型
(1)数字
类型 | 大小 | 说明 |
---|---|---|
TINYINT | 1字节 | 小整数 |
SMALLYINT | 2字节 | 普通整数 |
MENDIUINT | 3字节 | 小整数 |
INT | 4字节 | 较大整数 |
BIGINT | 8字节 | 大整数 |
FLOAT | 4字节 | 单精度浮点数 |
DOUBLE | 8字节 | 双精度浮点数 |
DECIMAL | ------ | DECIMAL |
十进制的浮点数无法在计算机中用二进制精确表达。
(2)字符串
类型 | 大小 | 说明 |
---|---|---|
char | 1-255字符 | 固定长度字符串 |
varchar | 1-65535字符 | 不确定长度字符串 |
text | 1-65535字符 | 不确定长度字符串 |
mediumtext | 1-1千6百万字符 | 不确定长度字符串 |
longtext | 1-42亿字符 | 不确定长度字符串 |
(3)日期类型
类型 | 大小 | 说明 |
---|---|---|
date | 3字节 | 日期 |
time | 3字节 | 时间 |
year | 1字节 | 年份 |
datetime | 8字节 | 日期时间 |
timestamp | 4字节 | 时间戳 |
6.数据表修改
(1)添加字段
alter table 表名称
add 列1 数据类型 [约束] [comment 注释],
add 列2 数据类型 [约束] [comment 注释],
…;
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel char(11) NOT NULL;
(2)修改字段类型和约束
alter table 表名称
modify 列1 数据类型 [约束] [comment 注释],
modify 列2 数据类型 [约束] [comment 注释],
…;
ALTER TABLE student
MODIFY home_tel VARCHAR(20) NOT NULL;
(3)修改字段名称
alter table 表名称
change 列1 新列名1 数据类型 [约束] [comment 注释],
change 列2 新列名2 数据类型 [约束] [comment 注释],
…;
ALTER table student
CHANGE address home_address VARCHAR(200) NOT NULL;
(4)删除列
ALTER table student
DROP home_address,
DROP home_tel;
6.字段约束
mysql中的字段约束共有4种:
约束名称 | 关键字 | 描述 |
---|---|---|
主键约束 | primary key | 字段值唯一,且不能为null |
非空约束 | not null | 字段值不能为null (null意味没有值,而不是""空字符串) |
唯一约束 | unique | 字段值唯一,且可以为null |
外键约束 | foreign key | 保持关联数据的逻辑性(如果形成外键闭环,将无法删除任何一张表的记录) |
7.索引
(1)创建索引
create table 表名称(
…,
index [索引名称] (字段),
…
);
CREATE TABLE t_message(
id INT UNSIGNED PRIMARY key,
content VARCHAR(200) NOT NULL,
type ENUM("公告","通报","个人通知") NOT NULL,
CREATE_time TIMESTAMP NOT NULL,
INDEX idx_type (type)
);
(2)添加与删除索引
create index 索引名称 on 表名(字段);
alter table 表名称 add index [索引名称] (字段);
SHOW INDEX FROM 表名;
drop index 索引名称 on 表名;
DROP INDEX idx_type ON t_message; #删除现有索引
CREATE INDEX idx_type ON t_message(type);
SHOW INDEX FROM t_message;#查询表中所有索引
ALTER TABLE t_message
ADD INDEX idx_type(type);
(3)索引的使用原则
- 数据量很大,且经常被查询的数据表可以设置索引
- 索引只添加在经常别用作检索条件的字段上面
- 不要在大字段上创建索引