1. 数据库基础
2. 环境变量
在用户里面添加 MYSQL_HOME = MYSQL的安装目录
在系统变量 Path 里面添加 MYSQL = MYSQL的安装目录/bin
即可在cmd里面输入mysql -uroot -p
如想连其他主机mysql则使用,mysql -hIP -P3306(端口) -uroot -p密码
3. 命令符指令
show databases; 查看数据库
use 库的名字; 进入指定的库
show tables; 查看指定库的表
show tables from 库的名字; 查看某个库的表,不进入库
select database(); 查看当前在那个库
create table 表的名字( 在当前库创建新的表
mysql里面没有字符串,单字符多字符都叫字符 varchar() 括号里面控制有多少个字符
datetime, 时间类型
- int 数字类型
- 创建完表在后面加上); ,命令符里面都是以分号作结束字段
desc 表的名字; 查看表的结构 (describe 描述)
selct * from 表的名字; 查看表的数据
insert into 表的名字 values(); 在表中插入新的数据,括号里面填入要插入的数据
set names gbk; 如果插入失败可能是编码问题,如果改gbk不行尝试改成utf8
update 表的名字 set 列的名字=‘XXXX’ where(相当于if) 其中一项列的名字(判断条件);
delete from 表的名字 where 列的名字=“XXXX” 删除指定列
alter table 表的名字 add column 列的名字 数据类型 在表中新建类别列
drop table 表的名字 删除指定表的
exit; 退出
注释
–- 注释
/注释 #注释不能嵌套
4. SQL语句类别
SQL基本可以用在所有关系型数据库中,除了某些特有的指令
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; 常见指令有:create/drop/alter
DML(Data Manipulation language):数据操作语言,用来定义数据库记录(数据); Insert/updata/delete
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
TCL(Transaction Control Language)
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。 select
5. 数据库相关命令
- 查询所有数据库 show database;
- 查询数据库创建时的语句 show create database 数据库名;
- 创建数据库 create database 数据库名;
- 创建时判断是否存在 create database if not exists 数据库名;
- 指定字符 create database 数据库名 character set utf8;
- 修改数据库字符 alter database 数据库名 character utf8;
- 删除数据库 drop database 数据库名;
- 删除判断 drop database if exists 数据库名;
- 使用数据库 use 数据库名;
- 当前数据库 select database();
6. 表相关命令
- 查询表 show tables;
- 查询表结构 desc 表名;
- 查询表字符集 show table status from 库名 like ‘表名’;
- 修改表名 clter table 表名 rename to 新表名;
- 修改表的字符集 alter table 表名 character set utf8;
- 单独添加一列 alter table 表名 add 列名 数据类型;
- 修改指定列类型 alter table 表名 modify 列名 新数据类型;
- 修改列名和数据类型 alter table 表名 change 列名 新列名 新数据类型;
- 删除某一列 alter table 表名 drop 列名;
- 删除表 drop table 表名;
- 删除判断 drop table if exists 表名;
7. 数据类型
- int 整数型
- douban 小数
- date 日期类型 yyyy-MM-dd
- datetime 日期时间类型 yyyy-MM-dd HH:mm:ss
- timestamp 时间戳类型 yyyy-MM-dd HH:mm:ss 如果不赋值或赋值为null 则使用当前系统时间自动赋值
- varchar(长度) 字符串类型
8. 表数据操作
- 添加数据 insert into 表名(列名) values(值1,值2);
- 更新 update 表名 set 列名=值1,列名2=值2 where
- 删除表指定数据 delete from 表名 where
9. 查询
- 去重复 select distinct 列名1,列名2 from 表名;
- 四则运算 select 列名1*10 frome 表名;
- 起别名 select 列表 as 别名 from 表名;
- 判断null ifnull(列名,替换的值)
10. 集合函数
select 函数名(列名) from 表名 where
11. 排序查询
ORDER BY select 列名 frome 表名 where order by 列名 排序方式,列名2 排序方式
- ASC 升序 默认值 如果是多个条件 只有当判断值一样时才会执行第二个条件排序
- DESC 降序
12. 分组查询
GROUP BY select 列名 from 表名 group by 指定以什么分组的列名
- 分组前过滤 where
- 分组后过滤 having
13. 分页查询
LIMIT select 列名 from 表名 LIMIT 当前页,每页个数
- 当前页 = (当前页 - 1 ) * 每页个数
14. 约束
主键约束 默认包含非空和唯一 一张表只有一个主键
- 创建 create table 表名 (列名 数据类型 primary key)
- 删除pk alter table 表名 drop primary key;
- 建表后添加主键 alter table 表名 modify 列名 数据类型 primary key;
自增约束 必须要配合其他约束一起使用 如主键
- 创建 create table 表名(列名 数据类型 primary key auto_increment);
- 删除 alter table 表名 modify 列名 数据类型
- 建表后添加 alter table 表名 modify 列名 数据类型 auto_increment;
唯一约束 不重复
- 创建 create table 表名(列名 数据类型 unique);
- 删除 alter table 表名 drop index 列名;
- 建表后添加 alter table 表名 modify 列名 数据类型 unique;
非空约束 不允许为NULL
- 创建 create table 表名(列名 数据类型 not null);
- 删除 alter table 表名 modify 列名 数据类型;
- 建表后添加 alter table 表名 modify 列名 数据类型 not null;
外键约束 表与表之间有关联性 保证数据的准确性
- 创建 create table 表名(列名 数据类型 约束) constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名);
- 删除 alter table 表名drop foreign key 外键名;
- 建表后添加 alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名);
外键级联更新 当主表的主键更新时 从表的外键也更新
- alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名) on update cascade;
外键级联删除 当主表的主键删除时 从表的外键也删除
- alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名) on delete cascade;
级联同时更新和删除
- alter table 表名 add constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名) on update cascade on delete cascade;