MySQL
以下知识大致过以下基础,作为本人复习巩固使用;
安装
- 官网下载 : https://dev.mysql.com/downloads/mysql
- 可以下载msi版本一键安装,默认配置即可,也可以使用 绿色版解压后安装
- 安装完成之后可以通过管理员命令行来启动或者停止服务;
PS C:\WINDOWS\system32> net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
PS C:\WINDOWS\system32> net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
PS C:\WINDOWS\system32>
- 进入mysql客户端:命令行使用 mysql -h localhost -P 3306 -u root -p 【回车】密码,本机可以省略主机跟端口;
C:\Users\lenovo>mysql -h localhost -P 3306 -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.62 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
客户端命令
- show databases:显示所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql>
- use test:使用test库
mysql> use test;
Database changed
mysql>
- show tables [from 库]:显示库中的表;
mysql> show tables;
Empty set (0.00 sec)
mysql> show tables from mysql;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)
mysql>
- select database():显示当前库
mysql> select database();
+------------+
| database() |
+------------+
| test |
+------------+
1 row in set (0.00 sec)
mysql>
- desc table:表示显示表的详细信息;
mysql> create table stuinfo(
-> id int,
-> name varchar(20));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| stuinfo |
+----------------+
1 row in set (0.00 sec)
mysql> desc stuinfo;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql>
- 查看数据库版本:1、在mysql客户端内使用select version() 2、在命令行内使用mysql --versin 或者 mysql -V
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.62 |
+-----------+
1 row in set (0.00 sec)
mysql> quit
Bye
C:\Users\lenovo>mysql --version
mysql Ver 14.14 Distrib 5.5.62, for Win64 (AMD64)
C:\Users\lenovo>mysql -V
mysql Ver 14.14 Distrib 5.5.62, for Win64 (AMD64)
C:\Users\lenovo>
图形界面sqlyog使用
- 安装:官网下载安装即可
DQL(Data Query Language)语言
- select 查询列表 from 表 where 条件 group by 字段 order by 字段 limit ;
- 查询列表:表中的字段,常量值,表达式,函数
- 查询结果是一个虚拟的表格
- 加号的作用:只能充当运算符,不能充当连接符,如果有字符,则先转成数值,如果不能转则转成0,如果有一方 null则结果为null,要连接字符串可以用concat函数,要解决null可以使用ifnull函数;
- 所有的分组函数都忽略了null值
DDL(Data Definition Language)
建表建库的操作
级联设置
级联删除
alter table tbstudent add constraint fk_stu_major foreign key(majorid) references major(id) on delete cascade;
级联置空
alter table tbstudent add constraint fk_stu_major foreign key (majorid) references major(id) on delete set null;
DML(Data Manipulation Language)
增删改
DCL(Data Control Language)
数据权限等控制语句
约束
- 主键
- 外键
- 唯一
上面主键,外键,唯一都会创建索引,可以使用 show index from 表查看
主键跟唯一键的区别
键 | 唯一性 | 非空性 | 组合性 | 重复性 |
---|---|---|---|---|
主键 | 是 | 是 | 可以组合 | 最多一个主键 |
唯一键 | 是 | 否 | 可以组合 | 可以多个唯一键 |
- 非空
- 默认
- 检查(mysql中不支持但是不报错)
自增长
- 自增长列并不一定要跟主键搭配,但是必须是一个键(主键,外键,唯一键)
- 自增长列一个表中只能有一个
- 自增长列的类型只能是数值型
- 自增长列可以通过用set auto_increment_increment=3这种方式来设置增长量
事务
隐式事务:默认insert,update,delete默认都会开启事务;
显示事务:
步骤一:开启事务
set autocommit=0;
start transaction(可选)
步骤二:sql
select,insert,update,delete;
步骤三:提交事务
commit:提交事务
rollback:回滚事务;
事务隔离级别
- read uncommited:允许读取其他事务还没提交的数据。脏读,不可重复读,幻读都会出现
- read commited:允许读取其他事物提交的事务,只能避免脏读;
- repeatable read:允许事务重复读,可以避免脏读跟不可重复读(mysql默认)
- serializable:确保每个事务都串行,所有问题都可以避免,但是效率差;
select @@tx_isolation:查看事务隔离级别
set session transaction isolation level read uncommitted:设置隔离级别为read uncommitted
变量
系统变量(全局变量,回话变量)
- show global/session varialbles:查看所有的系统(全局,回话)变量
- show global | session varialbles like ‘%char%’;
- select @@global | session.系统变量名
- set [@@]global | session.系统变量名=值
自定义变量(用户变量,局部变量)
用户变量
- 声明并初始化的三种方式
- set @用户变量名=值
- set @用户变量名 :=值
- select @用户变量名:=值
- 赋值方式一
- set @用户变量名=值
- set @用户变量名 :=值
- select @用户变量名:=值
- 赋值方式二
- select 字段 into @变量名 from 表;
- 使用:select @用户变量名;
局部变量
- 声明(仅仅在begin end中有效)
declare 变量名 类型 default 值; - 赋值方式一
- set @用户变量名=值
- set @用户变量名 :=值
- select @用户变量名:=值
- 赋值方式二
- select 字段 into @变量名 from 表;
- 使用:select 局部变量名;
存储过程跟函数
存储过程
使用delemiter表示设置$为结束符号
delimiter $
create procedure 名称(参数列表)
begin
存储过程体(一组合法的sql语句)
end $
函数
delimiter $
create function 名称 returns 返回类型
begin
函数体
end
流程控制
- if(表达式1,表达式2,表达式3):如果表达式1成立,则返回表达式2的值,否则返回表达式3的值
- case语法1:
case 变量|表达式|字段
when 常量1 then 值1
。。。
else 值n
end case; - case语法2:
case when 条件1 then 值1 when 条件2 值2 。。。 else 值n end case; - if 条件1 then 语句1 elseif 条件2 then 语句2 。。。 else 语句n end if;
循环结构
iterate 类似于continue
leave类似于break;
- while
[标签:]while 循环条件 do
循环体
end while [标签] - loop
【标签:】loop
循环体
end loop [标签] - repeat
[标签:]repeat
循环体
until 结束循环的条件
end repeat [标签]