1、数据库类型
关系型数据库
大型:Oracle、DB2
中型:SQL Server、MySQL
小型:Access、SQLite等
非关系型数据库:Memcached、MongoDB、Redis
单词
数据库:database
行/记录:row/record
列/字段:column/field
%表示匹配多个字符
_表示匹配单个字符
SQL分为三个部分:
DDL:(Data Definition Language,数据定义语言)用来维护存储数据的结构(数据库、表),
代表指令:增create、删drop、改alter等
DML:(Data Manipulation Language,数据操作语言)用来对数据进行操作(数据表中的内容),
代表指令:插入insert、删除delete、update等。其中DML内部又单独进行了一个分类:DQL(Data Query Language,数据查询语言)如select
DCL:(Data Control Language,数据控制语言)主要是负责权限管理(用户),代表指令:分配权限grant、 revoke等
连接认证
mysql.exe -h localhost -P3306 -u root -p(简写)mysql -u root -p
断开连接是为了:释放资源,因为服务器有并发限制
退出命令
exit、quit、\q
MySQL服务器内部对象分成了四层
系统(DBMS)
数据库(DB)
数据表(Table)
字段(Field)
将SQL的基本操作根据操作对象进行分类,可分为三类:
库操作
表操作(包含字段操作)
数据操作
创建数据库
create database 数据库名字 [库选项];
字符集设定:charset/character set 具体字符集(数据存储的编码格式,常用的有:GBK和UTF8)
举例:create database mydatabase charset utf8;
创建关键字的数据库 (关键字就是已经被系统使用的字符或者保留字,将来系统可能会用到的字符)
create database ·database· charset utf8;
告诉服务器当前中文的字符集是什么(如果中文的不好使就加这句)
set names gbk;
创建中文的数据库
create database 中国 charset utf8;
查看所有数据库:
show databases;
查看部分数据库
show create database 数据库名字;
%表示匹配多个字符
_表示匹配单个字符
查看以information_开始的数据库(如果想匹配_下划线就需要被转义)
%表示匹配多个字符 , _表示匹配单个字符
例子:show databaseslike 'information\_%';
例子:show databaseslike 'information_%'; 相当于information%
查看数据库的创建语句
show create database 数据库名字;
例子:showcreate database mydatabase;
例子:showcreate database ·database·;(有关键字的数据库)
修改数据库informationtest的字符集
alter database 数据库名字 [库选项];
例子:alter database informationtest charset GBK;
删除数据库
drop database 数据库名字;
例子drop database informationtest;
创建表
(方案一 )
显式地指定表所属的数据库
create table 数据库名.表名();
例子:create table ifnot exists mydatabase.student(
显示地将student表放到mydatabase数据库下
namevarchar(10),
gendervarchar(10),
numbervarchar(10),
ageint
)charset utf8;
(方案二)
隐式地指定表所属数据库,进入数据库环境:use 数据库名字;
-- 创建数据表
-- 进入数据库
use mydatabase;
-- 创建表
create table class(
namevarchar(10),
roomvarchar(10)
)charset utf8;
查看所有表
show tables;
查看以s结尾的表
show tables like 'pattern';
例子:show tables like '%s';
查看表的创建语句
show create table 表名;
例子:showcreate table student;
showcreate table student\g-- -g等价于分号;
showcreate table student\G-- -G将查到的结构旋转90度变成纵向
查看表结构(表中的字段信息)
desc/describe/show columns from 表名;
例子:desc class;
describe class;
show columns from class;
重命名(student表 -> my_student)
rename table 旧表名 to 新表名;
例子:renametable studentto my_student;
修改表选项
修改表选项(字符集、校对集、存储引擎都可以修改)
alter table 表名 表选项 [=] 值;
例子:alter table my_student charset = GBK;
新增字段
alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
举例:给学生表增加ID,放在第一个位置
alter table my_student
add column idint
first;
修改字段:alter table 表名 modify 字段名 数据类型 [列属性] [位置];
alter table 表名 modify 字段名 数据类型 [列属性] [位置];
举例:将学生表中的number学号字段变成固定长度,且放到第二位(id之后)(modify调整)
alter table my_student modify numberchar(10) after id;
重命名字段:alter table 表名 change 旧字段 新字段名 数据类型 [列属性] [位置];
举例:修改学生表中的gender字段为sex(change修改)
alter table my_student change gender sexvarchar(10);
删除字段:alter table 表名 drop 字段名;
举例:删除学生表中的age年龄字段(drop删除)
alter table my_student drop age;
删除数据表
drop table 表名1,表名2……;
例子:drop table class;
新增数据 插入数据
-- 方案一
-- (按照字段顺序)
nsert into 表名 values(值列表)[,(值列表)];
例子:insert into my_studentvalues
(1,'bc20190001','Jim','male'),
(2,'bc20190002','csal','women');
插入数据
-- 方案二
insert into 表名 (字段列表) values (值列表) [,(值列表)];
例子:insert into my_student (number,sex,name,id)values
('bc20090003','male','Tom',3),
('bc20090004','female','loca',4);
查看所有数据
select * from 表名 [where 条件];
例子:select *from my_student;
查看指定字段、指定条件的数据
select 字段列表 from 表名 [where 条件];
举例:查看满足id为1的学生信息
select id,number,sex,namefrom my_studentwhere id=1;
更新数据
update 表名 set 字段 = 值 [where 条件];
建议都有where,否则就是更新全部
例子:update my_studentset sex='female' where name='Tom';
删除数据
删除是不可逆的,谨慎删除
delete from 表名 [where条件];
例子:delete from my_studentwhere sex='male';