一.数据库基础
1.数据库的操作
1.1显示当前的数据库
show databases;
1.2创建数据库
create database [if not exists] db_name;
1.3使用数据库
use db_name;
1.4删除数据库
drop database [if exists] db_name;
数据库删除后,内部看不到对应的数据库,里面的表和数据全被删除
2.常用数据类型
2.1
数据类型 | 大小 |
---|---|
BIT[(M)] | M指定位数,默认为1 |
TINYINT | 1字节 |
SMALLINT | 2字节 |
INT | 4字节 |
BIGINT | 8字节 |
FLOAT(M,D) | 4字节,单精度,M指定长度,D指定小数位数。会发生精度丢失 |
DOUBLE(M,D) | 8字节 |
DECIMAL(M,D) | M/D最大值+2,双精度,M指定长度,D指定小数位数。精确数值 |
NUMERIC(M,D) | M/D最大值+2,和DECIMAL一样 |
数值类型可以指定为无符号(unsigned),表示不取负数。(尽量不适用unsigned)
1字节(bytes)=8bit
2.2字符串类型
数据类型 | 说明 |
---|---|
varchar(size) | 可变长度字符串 |
text | 长文本数据 |
mediumtext | 中等长度文本数据 |
BOLB | 二进制形式的长文本数据 |
2.3日期类型
数据类型 | 说明 |
---|---|
datetime | 8字节,1000-9999年,不会进行时区的检索及转换 |
timestamp | (时间戳)4字节,1970-2038,自动检索当前时区并进行转换 |
3.表的操作
需要操作数据库中的表时,先要使用该数据库
use db_name;
3.1查看表
desc tb_name; //查看表名
show create table tb_name; //查看表结构+表编码
show tables;//查看当前数据库一共有多少表
3.2创建表
create table tb_name (
field1 datatype,
field2 datatype,
..........
);
可以使用comment增加字段说明
示例:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13,2),
resume text
);
3.3删除表
drop table [if exists] tb_name;
3.4修改表内容
alter table tb_name add+新列名称+类型;//新增一列
alter table tb_name change+原列名+新列名+新列类型;//修改某一列
alter table tb_name 旧表名 rename 新表名;//修改表名称
alter table tb_name convert to character set 新编码; //修改表编码
二.MySQL表的CRUD
CURD即增加、查询、更新、删除
1、新增(create)
insert [into] tb_name (属性名) value (属性值);
案例:
-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT,
sn INT comment '学号',
name VARCHAR(20) comment '姓名',
qq_mail VARCHAR(20) comment 'QQ邮箱'
);
1.1单行数据插入+全列插入
-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');
1.2 多行数据+指定列插入
-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name) VALUES
(102, 20001, '曹孟德'),
(103, 20002, '孙仲谋');
2.查询(retrieve)
语法:
SELECT
[DISTINCT] {
* | {
column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
其中distinct为去重,asc为升序,desc为降序
案例:
-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,