数据库基本概念
数据库管理系统(database management system/DBMS):数据库系统中对数据进行管理的软件系统。
数据库(database/DB):按照特定的数据结构来组织、存储和管理数据的仓库。
表(table):某种特定类型数据的结构化清单。
列(column)或字段:表由一个或多个列组成,每个列都有对应的数据。
行(row)或记录:表中的数据是按行存储的,每行存储一条数据。
主键(primary key):一列(或一组列),它的值能够唯一区分表中的每一行。
SQL(structured query language):结构化查询语言,专门用于与数据库通信的语言。
数据定义语言(DDL)
显示数据库:
show database;
创建数据库:
create database [if not exists] 数据库名;
删除数据库:
drop database [if exists] 数据库名;
显示数据库中的表:
show tables;
查看表的基本结构:
desc 表名;
查看数据库的创建语句:
show create database 数据库名;
查看表的创建语句:
show create table 表名;
创建表:
create table [if not exists] 表名
(
字段1 字段类型 [列级约束条件],
字段2 字段类型 [列级约束条件],
...
[表级约束条件]
);
示例:
create table users
(
id int,
name varchar(20)
);
添加字段:
alter tabel 表名;
add column 新列名 数据类型 [约束条件] [first | after 列名];
示例:在 id 字段后添加 is_active 字段(类型为 TINYINT)
alter table users
add column is_active tinyint(1) default 1 after id;
修改字段类型:
alter table 表名;
modify column 列名 数据类型 [约束条件]
示例:将 users 表的 age 字段从 INT 改为 TINYINT
alter table users
modify column age tinyint;
修改字段位置:
alter table 表名;
modify column 列名 数据类型 first | after 列名;
示例:将 email 字段调整到 name 之后
alter table users
modify column email varchar(255) after name;
修改字段名:
alter table 表名;
change column 旧列名 新列名 数据类型;
示例:将 phone 列改为 mobile
alter table users
change column phone mobile varchar(20);
删除字段:
alter table 表名
drop column 列名;
重命名表:
alter table 旧表名
rename to 新表名;
删除表:
drop table [if exists] 表1[, 表2, 表3...];
示例:
删除user表
drop table if exists users;
删除多个表
drop table if exists users, orders, products;
数据查询语言(DQL)
查询当前连接的数据库:
select database();
查询当前数据库版本:
select version();
查询当前的日期:
select now();
查询当前的用户:
select user();
查询指定字段:
select 字段1,字段2,... from 表名;
查询全部字段:
select * from 表名;
查询全部字段并使用条件:
select * from 表名 where 条件;
从某表中选取某字段不等于10的所有记录:
select * from 表名 where 字段 <> 10;
select * from 表名 where 字段 != 10;
从某表中选取某字段值在 1500 到 3000 之间(包含 1500 和 3000 )的所有记录 :
select * from 表名 where 字段 between 1500 and 3000;
从某表中选取某字段值为空的所有记录:
select * from 表名 where 字段 is null;
从某表中选取某字段值不为空的所有记录:
select * from 表名 where 字段 is not null;
从某表中选取某字段值包括10或30的所有记录:
select * from 表名 where 字段 in (10, 30);
从某表中选取某字段值中包含字母m的所有记录:
select * from 表名 where 字段 like "%m%";
从某表中选取某字段值中第二个字母是m的所有记录:
select * from 表名 where 字段 like "%_m%";
从某表中选取字段1为a且字段2大于10的所有记录:
select * from 表名 where 字段1 = 'a' and 字段2 > 10;
数据操作语言(DML)
插入数据:
insert into 表名
(
字段1,
字段2,
...
)
values
(
字段1的值,
字段2的值,
...
);
示例:
insert into users
(
username,
email,
age
)
values
(
'john_doe',
'john@example.com',
30
);
更新数据:
update 表名
set 字段1 = 字段1的值,
字段2 = 字段2的值,
...
where 限制条件;
示例:
update products
set
price = price * 1.1,
last_updated = now()
where category = 'electronics';
删除数据
delete from 表名
where 限制条件;
示例:
delete from orders
where status = 'cancelled';