跳至主要內容

mysql基础

知识库数据库MySQLMySQL大约 2 分钟

DDL(Data Definition Language)

-- 创建数据库
create database 数据库名 character set 字符集;
-- 查看数据库服务器中的所有的数据库:
show databases;
-- 查看某个数据库的定义的信息:
show create database 数据库名;
-- 删除数据库(慎用)
drop database 数据库名称;
-- 切换数据库:
use 数据库名;
-- 查看正在使用的数据库:
select database();

-- 创建表
create table t ( id int primary key, c varchar(100) unique, d varchar(200) not null ) engine = innodb charset = utf8;
-- 查看表结构
desc tableName;
-- 删除表
drop table tableName;
--修改表添加列.
alter table 表名 add 列名 类型(长度) 约束;
--修改表修改列的类型长度及约束.
alter table 表名 modify 列名 类型(长度) 约束;
 --修改表修改列名.
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
--修改表删除列.
alter table 表名 drop 列名;
--修改表名
rename table 表名 to 新表名;
--修改表的字符集
alter table 表名 character set 字符集;

DML(data manipulation language)

-- 向表中插入某些列
insert into(列名1,列名2,列名3..) values (1,2,3..);
-- 更新记录
update 表名 set 字段名=,字段名=where 条件;
-- 删除记录
delete from 表名 [where 条件];

删除表中所有记录使用【delete from 表名】,还是用【truncate table 表名】?

  • delete :一条一条删除,不清空 auto_increment 记录数。
  • truncate :直接将表删除,重新建表,auto_increment 将置为零,从新开始。

DQL(Structure Query Language)

SELECT DISTINCT <select_list>
FROM <left_table> <join_type>
JOIN <right_table> ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>

SQL 解析顺序

-- 行过滤
1 FROM <left_table>
2 ON <join_condition>
3 <join_type> JOIN <right_table>    -- 第二步和第三步会循环执行
4 WHERE <where_condition>           -- 第四步会循环执行,多个条件的执行顺序是从左往右的。
5 GROUP BY <group_by_list>
6 HAVING <having_condition>
--列过滤
7 SELECT -- 分组之后才会执行SELECT
8 DISTINCT <select_list>
-- 排序
9 ORDER BY <order_by_condition>
-- MySQL附加
10 LIMIT <limit_number>             -- 前9步都是SQL92标准语法。limit是MySQL的独有语法。