Mysql浅析
Mysql浅析
SQL:
- Structured Query Language(结构化查询语言)
SQL分为三个部分:
- DDL(Data Definition Language)
- 数据定义语言,用来维护存储数据的结构(数据库、数据表),代表指令: create、drop、alter 等。
- DML(Data Manipulation Language)
- 数据操作语言,用来对数据进行操作(数据表中的内容),代表指令: insert、delete、update 等。
- 其中DML内部又单独进行了一个分类DQL(Date Query Language),数据查询语言。如: select 。
- DCL(Data Control Language)
- 数据控制语言,主要负责权限管理(用户)。代表指令:grant、revoke。
SQL基本操作(crud)
库操作
- 新增数据库:
- 基本语法:
create database 数据库名称 [库选项];
- 库选项:用来约束数据库,氛围两个选项:
- charset/character set,具体字符集(数据库的编码格式),例:GBK、UTF8...
- 校对集设定:collate具体校对集。
- 例如:
create database my_database charset utf8;
- 注意点:
- 如果想用保留字或者关键字当做库名,需要使用反引号(Tab上面那个键)。
- 如果想用中文当库名,需要加一行
set name gbk;
- 每个数据库下都有一个opt文件:保留了库选项。
- 基本语法:
- 查看数据库:
-
查看所有数据库:
show databases;
-
查看指定部分的数据库:模糊查询
show database like 'pattern';
- pattern:% 表示匹配多个字符, _ 表示匹配单个字符 。
- 例如:查看以information_开头的数据库名:
show databases like 'information\_%';
(_需要转义,用\ )
-
查看数据库创建语句
show create database 数据库名;
-
- 更新数据库:
- 基本语法:
alter database 数据库名 charset/character [=] 字符集;
- 数据库名字不可修改,数据库的修改仅限库选项:字符集、校对集(依赖于字符集)
- 修改字符集后,校对集自动修改
- 基本语法:
- 删除数据库:
drop database 数据库名;
表操作
- 新增数据表:
- 基本语法:
create table [if not exists] 表名 ( 字段名 数据类型, ... 字段名 数据类型 )[表选项];
- if not exists:可选项,如果表不存在就创建,否则不执行创建代码。
- 表选项:
- 字符集:charset / character set 具体字符集。
- 校对集:collate 具体校对集。
- 存储引擎:engine 具体存储引擎(常见为innodb和myisam)。
- 注意:任何一个表都需要制定数据库。
- 方案一:
create table 数据库名.表名...
- 方案二:use 数据库名,再创建表。
- 方案一:
- 基本语法:
- 查看数据表(跟查看数据库类似):
show tables;
show tables like 'pattern';
show create table 表名 \g或者\G或者;
- \g:;(分号)。
- \G:将查到的表旋转90度查看。
desc 表名; == describe 表名; == show columns from 表名;
- 修改数据表(分两类修改):
- 修改表本身:表名和表选项
- 表名:
rename table 旧表名 to 新表名;
- 表选项:
alter table 表名 表选项 [=] 值;
- 例:
- 表名:
- 修改字段(新增、修改、重命名、删除)
- 新增字段:
- 基本语法:
alter table 表名 add [column] 字段名 数据类型 [列属性][位置];
- 位置:first:第一个位置、after 字段名:在指定字段之后,默认是在最后一个字段之后。
- 例:
- 基本语法:
- 修改字段(修改列属性或者数据类型):
- 基本语法:
alter table 表名 modify 字段名 数据类型 [列属性][位置];
- 例:
alter table my_class modify name varchar(30) first;
- 基本语法:
- 重命名字段:
- 基本语法:
alter table 表名 change 旧字段名 新字段名 数据类型 [列属性][位置];
- 例:
alter table my_class change name new_name varchar(30) after id;
- 基本语法:
- 删除字段:
- 基本语法:
alter table 表名 drop 字段名;
- 基本语法:
- 新增字段:
- 修改表本身:表名和表选项
- 删除数据表:
- 基本语法:
drop table 表名1,表名2,...表名n;
- 可以一次性删除多张表。
- 基本语法:
数据操作
- 新增数据:
- 给全字段插入数据,不需要指定字段列表:要求插入的字段与表中字段顺序一致。非数值数据,建议使用单引号。
- 基本语法:
insert into 表名 values (值列表)[,(值列表)...];
- 例:
insert into my_student values ('zhangsan', 'male', 22, 160, 1);
- 基本语法:
- 给部分字段插入数据。
- 基本语法:
insert into 表名 (字段列表) values (值列表)[,(值列表)...];
- 例:
insert into my_student (name, gender, age, height, c_id) values ('zhangsan', 'male', 22, 160, 1);
- 基本语法:
- 给全字段插入数据,不需要指定字段列表:要求插入的字段与表中字段顺序一致。非数值数据,建议使用单引号。
- 查看数据:
- 基本语法:
select */字段列表 from 表名 [where条件];
- 例:
select * from my_student;
- 基本语法:
- 更新数据:
- 基本语法:
update 表名 set 字段名=字段值 [where条件];
- 例:
update my_student set gender='female' where id=1;
- 基本语法:
- 删除数据:
- 基本语法:
delete from 表名 [where条件];
- 例:
delete from my_student where id=1;
- 基本语法: