sql是Structured Query Language(结构化查询语言)的缩写。sql是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
sql规范
在数据库中,sql语句不区分大小写(建议用大写)。但字符串常量区分大小写。建议命令大写,表名库名小写
sql语句可单行或多行书写,以;结尾。关键词不能跨多行或简写
用空格和缩进来提高语句的可读性。字句通常位于独立行,便于编辑,提高可读性
注释:单行注释:--
多行注释:/*.....*/
DDL,DML和DCL
下载
https://dev.mysql.com/downloads/mysql/
安装
解压到任意目录
初始化服务端
启动服务端
客户端连接
密码默认为空
查看内置的文件夹:show databases;
创建目录:create database db1;
设置环境变量
<code>【右键计算机】</code><code>-</code><code>-</code><code>》【属性】</code><code>-</code><code>-</code><code>》【高级系统设置】</code><code>-</code><code>-</code><code>》【高级】</code><code>-</code><code>-</code><code>》【环境变量】</code><code>-</code><code>-</code><code>》【在第二个内容框中找到 变量名为Path 的一行,双击】 </code><code>-</code><code>-</code><code>> 【将MySQL的</code><code>bin</code><code>目录路径追加到变值值中,用 ; 分割】</code>
window服务
安装mysql服务
出现这个情况用管理员身份运行cmd就能解决
cmd路径:C:\Windows\System32,右键管理员身份运行
服务安装成功
如果还不行就结束mysql进程
移除mysql服务
启动mysql服务
一样的效果
或者
停止mysql服务
文件夹【数据库】
文件【表】
数据行【行】
数据行
use 文件夹; 进入这个文件夹
show tables; 查看这个文件夹下的文件
创建表
create table 表名(id int,name char(10)) engine=innodb default charset=utf8
#innodb引擎, 支持事务,原子性操作,推荐写上
create table t1(
列名 类型 null,
列名 类型 not null,
列名 类型 not null auto_increment primary key,
id int,
name char(10)
)engine=innodb default charset=utf8;
null:可以为空
not null:不可以为空
auto_increment表示:自增 一个表里面只有一个自增列
primary key:不能约束(不能重复且不能为空) 加速查找 一个表里面只有一个主键
查看表信息
desc 表名; 查看表结构
show colums from 表名; 查看表结构
show tables; 查看当前数据库中的所有表
show create table 表名 \G; 查看当前数据库表建表语句,\G能竖着看
修改表结构
增加列(字段)
alter table 表名 add 列名 类型[完整性约束条件]
修改列类型
alter table 表名 modify 列名 类型[完整性约束条件]
修改列名
alter table 表名 change 列名 新列名 类型[完整性约束条件]
删除列
alter table 表名 drop 列名
修改表名
rename table 表名 to 新表名;
修改该表所用的字符集
alter table 表名 character set utf8
修改自增的值
alter table 表名 auto_increment=10
清空表
delete from 表名 下次id从原来的自增
truncate table 表名 速度快,id从1开始
删除表
drop table 表名
表记录的增删改查
增加表记录
insert into 表名()values()
插入数据,查看数据
修改表记录
删除表记录
查询表记录
简单查询
select * from 表名 查看表中所有的数据,*表示所有列
select name,age,id from 表名 查看表中指定的字段,按列名先后顺序显示
使用where子句,进行过滤查询
order by排序
group by分组查询
聚合函数
limit记录条数限制
正则表达式
外键约束
多表查询
约束条件:
主键一张表只能有一个
一个主键可以由多个列组成
primary key(非空且唯一):能够唯一区分出当前记录的字段称为主键,加速查找
unique 唯一
not null 非空
auto_increment:自增,和主键搭配着才能用,主键必须是数字类型
数据类型:
数字
tinyint unsigned加上这个就是无符号
int
bigint
float
double
decimal 精准 decimal(10,5)总位数,小数点后位数
字符串
char 速度快
varchar 节省空间
最大字符255,大于255用test
ps:创建数据表定长列往前放
上传文件:
文件存硬盘
db存路径
时间类型
datetime
enum 枚举
set 集合
数据库存储引擎
什么是存储引擎
数据库的表有不同的类型,表的类型不同,会对应不同的存取机制,表类型又称为存储引擎
存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系型数据库中的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
mysql数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎
mysql支持的存储引擎
mysql常用的数据引擎
mylsam存储引擎
由于该引擎不支持事务,也不支持外键,所以访问速度较快,因此当对事物完整性没有要求并以访问为主的应用适合试用该存储引擎。
innodb存储引擎(主要使用)
由于该存储引擎在事务上具有优势,即支持具有提交、回滚及崩溃恢复能力等事务的特性,所以比mylsam存储引擎占用更多的磁盘空间,因此当需要频繁的更新、删除等操作,同时还对事务的完整性要求较高,需要实现并发控制,建议选择。
memory
memory存储引擎存储数据的位置是内存,因此访问速度最快,但是安全上没有保障。适合于需要快速的访问或临时表。
blackhole
黑洞存储引擎,可以应用与主备复制中的分发主库
使用存储引擎
方法1:建表时指定
方法2:在配置文件时指定默认的存储引擎
查看
查看用户
创建用户:
create user 'alex'@'192.168.1.1' identified by '123123'
create user 'alex'@'192.168.1.%' identified by '123123' %表示任意
create user 'alex'@'%' identified by '123123'
授权管理:
show grants for '用户'@'IP地址' 查看地址
grant select,insert,update on db1.t1 to 'alex'@'%';
grant all privileges on db1.* to 'alex'@'%'; 除了授权功能其他功能都有,db1数据库下的所有表
revoke all privileges from db1.* to 'alex'@'%'; 取消授权
再开个终端进入