前言:
本篇笔记整理了在学习sql时的一些内容,供平时实践时作为基础手册参考使用
如有错误之处,欢迎批评指正
数据库三层结构
- 数据库管理系统(DBMS)
- 数据库
- 表
- 客户端实际是通过与DBMS建立连接来管理数据库
- DBMS可以管理多个数据库
- 一个数据库中有多个表,以保存信息
- 数据在数据库中的存储方式: 表的一行称为一条记录
SQL语句分类
DDL:数据定义语句(create 数据库、表……)
DML:数据操作语句(增删改)
DQL:数据查询语句(查询)
DCL:数据控制语句(管理数据库:如用户权限grant revoke)
MySQL数据类型(列类型,字段类型)
位类型 bit
整型(默认为有符号,要指定为无符号的需在后面加unsigned):
1字节 tinyint
2字节 smallint
3字节 mediummint
4字节 int
8字节 bigint
单精度小数类型 float
双精度小数类型 double
固定长度字符串(size最大255字符) char(size)
可变长度字符串(size最大65532字节,但utf8编码为21844字符) varchar(size)
文本类型 text
二进制数据 blob
日期(YYYY-MM-DD) date
时间(HH:mm:ss) time
日期时间 (YYYY-MM-DD HH:mm:ss)datetime
时间戳 timestamp
相关DOS命令
- 开启MySQL服务
net start mysql
- 关闭MySQL服务
net stop mysql
- 登录MySQL本地终端(一般默认为3306端口)
mysql -u root -p
- 连接到MySQL服务(MySQL数据库)的指令
mysql -h [主机IP] -P [端口] -u [用户名] -p[密码]
- 注意密码紧挨着-p
- 登录前,要保证服务是开启的
- 备份数据库
mysqldump -u [用户名] -p[密码] -B [所需备份的数据库名] >[文件名].sql
- 备份某个数据库中的表
mysqldump -u [用户名] -p[密码] [数据库名] [所需备份的表名] >[文件名].sql
- 恢复数据库(需进入mysql再执行)
source [文件名].sql
DDL
Data Definiton Language , 数据定义语言
- 创建数据库 (未指定字符集和校对规则,默认为utf8和utf8_general_ci)
create database [数据库名];
在创建\删除数据库时,为了规避关键字,可以使用反引号解决,如:
create database `create`;
命名规则: 只能用半角英文字母,数字,下划线作为数据库、表和列的名称,且名称必须以半角英文字母开头。同一个表中不能创建两个名称相同的列
- 创建一个使用utf8字符集的数据库
create database [数据库名] character set utf8;
- 创建一个使用utf8字符集,并带校对规则的数据库
create database [数据库名] character set utf8 collate utf8_bin;
utf8_bin 区分大小写
utf8_general_ci 不区分大小写(默认)
- 查看前面创建数据库时的定义信息
show create database [数据库名];
- 删除数据库
drop database [数据库名];
- 展示数据库
show databases;
- 使用数据库
use [数据库名];
- 展示当前数据库中的表
show tables;
- 建表
create table [表名]
(
[数据名] [类型],
……
)character set [字符集] collate [校对规则] engine [引擎];
若字符集和校对规则未指定,默认为所在数据库的字符集和校对规则
- 删除表
drop table [表名];
-
表定义的更新(
alter语句):- 增加列使用的语法
alter table [表名] add column [列名];- 删除列使用的语法
alter table [表名] drop column [列名];
DML
Data Manipulation Language , 数据操纵语言
- 往表中添加数据
insert into [表名] values([数据],……);
- 从表中删除特定的行(删除在某一列中为特定值的一行)
delete from [表名] where [列名]=[值];
- 从表中删除所有的行(但不是删除这张表)
delete from [表名];
- 更新一列
update [表名] set [列名]=[值] where[列名]=[值];
- 更新多列
update [表名] set [列名]=[值],[列名]=[值]…… where[列名]=[值];
当在使用update语句时,若不加where,即为将表中该列所有的值进行修改:
update [表名] set [列名]=[值];
DQL
- 查询表中全部数据
select * from [表名];
- 查询表中某一列的数据
select [列名] from [表名];
- 查询表中某几列的数据
select [列名],[列名]…… from [表名];
DCL
Data Control Language , 数据控制语言
- 确认对数据库中的数据进行的变更
commit
- 取消对数据库中的数据进行的变更
rollback
- 赋予用户操作权限
grant
- 取消用户的操作权限
revoke