mysql的基础命令
mysql的基础命令
sql中的数据类型
类型名称 | 说明 |
---|---|
int(整数长度) | 整数类型 |
double | 小数类型 |
decimal(m,d) | 指定整数位与小数位长度的小数类型 |
date | 日期类型,格式为yyyy-MM-dd,包含年月日,不包含时分秒 2020-01-01 |
datetime | 日期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年月日时分秒 到9999年 |
timestamp | 日期类型,时间戳 从1970年到2038年 |
varchar(字符串长度) | 文本类型, M为0~65535之间的整数 |
1.DDL之数据库操作:database
创建数据库
1
21.关键字: create database
2.语法:create database 数据库名 charset utf8建议:
写表名,库名,列名时最好用 `` 包裹
查看数据库
1
语法:show databases
删除数据库
1
语法: drop database 数据库名;
使用数据库(切换数据库)
1
2
3语法:use 数据库名字
只有切换到指定的库上,才能在此库中进行创建表等其他操作
2.DDL之表操作->table
创建表
1
2
3
4
5
6
7
8
9
101.关键字:create table
2.语法:
create table 表名(
列名 数据类型(长度) [约束],
列名 数据类型(长度) [约束],
列名 数据类型(长度) [约束]
);
3.注意:
如果在创建表的时候,是最后一列了,那么就不要加,了删除表
1
2
31.关键字:drop table
2.语法:
drop table 表名修改表结构
1
2
3alter table 表名 add 列名 类型(长度) [约束];
作用:添加列.
ALTER TABLE product ADD `desc` VARCHAR(100);1
2
3alter table 表名 modify 列名 类型(长度) [约束];
作用:修改列的类型,长度及约束.
ALTER TABLE product MODIFY `desc` VARCHAR(50);1
2
3alter table 表名 change 旧列名 新列名 类型(长度) [约束];
作用:修改列名.
ALTER TABLE product CHANGE `desc` `miaoshu` VARCHAR(50);1
2
3alter table 表名 drop 列名;
作用:修改表_删除列.
ALTER TABLE product DROP miaoshu;1
2
3rename table 表名 to 新表名;
作用:修改表名
RENAME TABLE shangpin TO product;
3.DML之数据操作语言
插入数据
1
2
3
4
5
61.关键字:insert into
into可以 省略
2.语法:
a.insert into 表名 (列名,列名) values (值1,值2);
b.insert into 表名 (列名,列名) values (值1,值2), (值1,值2), (值1,值2);-> 一次添加多条数据
c.insert into 表名 values (值1,值2); -> 如果不写列名,赋值时需要将所有列都匹配上删除数据
1
2
3
41.关键字:delete from
2.语法:
a.delete from 表名 -> 删除所有数据
b.delete from 表名 where 条件 -> 根据条件删除指定的数据修改数据
1
2
3
41.关键字:update set
2.语法:
a.update 表名 set 列名 = 新值
b.update 表名 set 列名 = 新值 where 条件
约束
约束是对指定列的数据进行约束
主键约束
1 | 1.关键字:primary key -> 好比是人的身份证号 |
添加方式1:在创建表时,在字段后面直接指定(重点)
1 | CREATE TABLE product( |
添加方式2:在constraint约束区域,去指定主键约束
1 | 1.什么叫做constraint域 |
1 | CREATE TABLE product( |
添加方式3:通过修改表结构的方式
1 | 1.格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表) |
联合主键
1 | 1.什么叫做联合主键 |
1 | CREATE TABLE persons( |
删除主键约束
1 | ALTER TABLE 表名 DROP PRIMARY KEY->删除主键约束 |
自增长约束
1 | 1.关键字:auto_increment |
1 | CREATE TABLE category( |
1 | /* |
truncate和delete区别
1 | delete:如果删除的是主键自增数据,再次添加不会从头编号,而是从最后一个id开始继续往下编号 |
非空约束
1 | 1.关键字: |
1 | CREATE TABLE product( |
唯一约束
1 | 1.关键字: |
1 | CREATE TABLE student( |
1 | 删除唯一约束: |
单表查询
简单查询
1 | 1.关键字:select from where |
条件查询
1 | a.select * from 表名 where 条件 -> 根据条件查询,展示所有列的数据 |
比较运算符 | < <= >= = <> | 大于、小于、大于(小于)等于、不等于 |
---|---|---|
BETWEEN …AND… | 显示在某一区间的值(含头含尾) | |
字段 IN(set) | 显示在in列表中的值,例:price in(100,200) 查询id为1,3,7的商品: id in(1,3,7) | |
列名 LIKE ‘张pattern’ | 模糊查询,Like语句中,% 代表零个或多个任意字符, 代表一个字符, 例如:first_name like '_a%'; 比如:查询姓张的人:name like ‘张%’ 查询商品名中带香的商品: pname like ‘%香%’ 查询第二个字为想的商品: like ‘想%’ 查询商品名为四个字的商品:like ‘__‘ |
|
IS NULL | 判断是否为空 | |
逻辑运行符 | and (与) | 多个条件同时成立 全为true,整体才为true |
or(或) | 多个条件任一成立 有真则真 | |
not(非) | 不成立,例:where not(salary>100); |
排序查询
1 | 1.关键字:order by |
1 | 书写sql语句关键字的顺序 |
1 | -- 使用价格排序(降序) |
聚合查询
1 | 1.查询方式:纵向查询,对指定列的数据进行聚合查询,需要用到聚合函数 |
1 | -- 统计product的总记录数 |
分组查询
1 | 1.关键字:group by |
1 | 书写sql语句关键字的顺序 |
1 | -- 查询相同商品的价格总和 |
分页查询
1 | 1.语法: |
1 | -- 第一页 |
多表之间的关系
1 | 1.一对一: 两张表之间怎么看都是一对一 |
创建外键约束
1 | 格式:alter table 从表 add [constraint 外键名称(自定义)] foreign key 从表(外键列名) references 主表(主键列名) |
一对多的表创建外键约束
1 | CREATE TABLE category ( |
多对多的表创建外键约束
1 | # 订单表 -> 主表 |
多表查询
1 | # 分类表 |
交叉查询
1 | 1.语法: |
1 | -- 查询所有商品的具体信息 |
内连接查询
1 | 1.关键字:inner join on -> inner 可以省略 |
1 | -- 查询具体的商品信息->隐式内连接 |
外连接
1 | 1.关键字:outer join on -> outer可以省略 |
1 | -- 查询所有的商品信息 左外连接 |
union联合查询实现全外连接查询(了解)
首先要明确,联合查询不是多表连接查询的一种方式。联合查询是将多条查询语句的查询结果合并成一个结果并去掉重复数据。
全外连接查询的意思就是将左表和右表的数据都查询出来,然后按照连接条件连接
只要将两个结果一连接,左表和右表没有交叉的部分也就都查出来了
1 | 1.union的语法: |
1 | -- 全外连接 |
子查询
1 | 1.一条查询语句作为另外一条查询语句的条件使用 -> 查询语句嵌套 |
1 | -- 查询products表中'化妆品'的商品信息 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 风雨の小窝!