MySQL基本应用(SQL语句)
DDL(Data Definition Language):数据定义语言(针对库和表本身进行操作)
数据库操作:
①创建数据库:create database 库名 default charset 字符集 collate 排序规则;
②显示所有库:show databases;
③删除数据库:drop database 库名;
④使用数据库:use 库名;
数据表操作:
说明(必须要进入到某个数据库中操作)
①显示所有表:show tables;
②创建数据表:create table 表名 (设置字段);
③查询表结构:desc 表名;
④删除数据表:drop table 表名;
⑤修改表结构:
1)修改表字段:alter table 表名 modify 字段名 字段类型(长度);
2)增加表字段:alter table 表名 add column 字段名 字段类型(长度);
3)删除表字段:alter table 表名 drop column 字段名;
4)修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型(长度);
5)修改字段顺序:alter table表名 add 字段名 int after 字段名;
6)修改表名:alter table 旧表名 rename 新表名;
DML(Data Manipulation Language):数据操纵语言(对表内部的数据进行增删改查的操作)
说明:增删改查表示Create创建、Delete删除、Update更新、Retrieve检索
说明:由于除了主键是唯一字段以外,其余字段都可能重复,所以我们需要用到where字句,其意义在于更好的定位,且where子句只有insert语句无法使用,剩下的删改查,都可以使用where子句(where字句的应用见下文专题)
①增加语句:关键字insert into
写法1:insert into 表名(字段1, 字段2, 字段3, ...) values(‘字段值1’, ‘字段值2’,’字段值3’, ...);
写法2:insert into 表名values(‘字段值1’, ‘字段值2’,’字段值3’, ...);
写法3:insert into 表名(字段1, 字段2, 字段3, ...) values
(‘字段值1’, ‘字段值2’,’字段值3’, ...),
(‘字段值1’, ‘字段值2’,’字段值3’, ...),
(‘字段值1’, ‘字段值2’,’字段值3’, ...);
②删除语句:关键字delete
写法1:delete from 表名 where 字段名(最好用主键名,因为主键为唯一)=?;
写法2:delete from 表名;(清空表:表的结构还在,只是数据被清空了,且主键依然是自增的状态)
写法3:truncate table 表名;(清空表:表的结构还在,只是数据被清空了,且会删除主键的自增的状态)
③修改语句:关键字update
写法:update 表名 set 字段1=’字段值1’,字段2=’字段值2’ where 字段名(最好用主键名,因为主键为唯一)=?;
④查询语句:关键字select
写法:select 字段名 from 表名;(字段名也可用*,表示所有的字段名)
A.排序:关键字order by
说明:asc是正序(默认,可省略),desc是倒序
- 正序 select * from 表名 order by 字段名 asc(可写可不写);
- 倒叙 select * from 表名 order by 字段名 desc;
B.分页:关键字limit
select * from 表名 limit 0,5;
C.去重:关键字distinct
select distinct 字段名 from 表名;
D.分组:关键字group by
DCL(Data Control Language):数据控制语言(针对访问权限和安全级别进行操作)
常用的命令:关键字grant(授予权限)和revoke(收回权限)
Where字句
①运算符:=等于 !=不等于 >大于 <小于 and并且 or或者
例如.
select *from 表名 where id>=3;
select *from 表名 where id!=3;
select * from表名 where id !=3 and id !=4;
select * from表名 where id>=3 and id<=5;
select * from表名 where id=3 or id=4 or id=5;
②In关键字:取反not in
例如.
select * from 表名 where id=l or id=2 or id=7 or id=8;
select * from 表名 where id in (1,2,7,8);
select * from 表名 where id not in (1,2,7,8);
③between关键字:取反not between
例如.
select * from 表名 where id>=3 and id<=6;
select * from 表名 where id between 3 and 6;
select * from 表名 where id not between 3 and 6;
SQL函数
①聚合函数:avg平均值、count总数、max最大值、min最小值、sum求和
- avg平均值:select avg(字段名) from 表名;
- count总数:select count(字段名) from 表名;
- max最大值:select max(字段名) from 表名;
- min最小值:select min(字段名) from 表名;
- Sum求和:select sum(字段名) from 表名;
②字符串函数:
- concat():连接字符串
- insert():替换字符串
- lower():转小写
- upper():转大写
- left():返回左边x个字符
- right():返回右边x个字符
- trim():去掉左右两边空格
- replace():替换字符串
- repeat():字符重复
- substring():截取字符串
③数值函数:
1)abs(x):取x的绝对值
2)ceil(x):返回大于x的最小整数值
3)floor(x):返回小于x的最大整数值
4)mod(x,y):返回x/y的模
5)rand():返回0-1之间的随机值
6)round(x,y):返回参数x的四舍五入的有y位小数的值
7)truncate(x,y):返回数字x截断为y位小数的结果
MySQL多表关联查询
①外键设置
1)添加外键:关键字foreign key
例如.
已知主表名为表A,其主键字段名为id,现许添加表B,将其外键指向表A的主键
create table B (
主键字段名 int primary key not null auto_increment,
字段名 字段类型(长度),
字段名 字段类型(长度),
字段名 字段类型(长度),
外键字段名 字段类型(长度),
constraint 外键名 foreign key(外键字段名) references A(id)
)engine=innodb;
2)删除外键:alter table 表名 drop foreign key 外键约束名;
说明:
- 外键只能指向主键
- 外键和主键的字段类型必须一致
- 外键和主键所在的表类型必须都是InnoDB
②连接查询
- 内连接:关键字inner join...on...
写法:select 字段名 from 副表名 inner join 主表名 on 副表名.外键字段名 = 主表名.主键字段名;
- 外连接:关键字left(right) join...on...(可分为左外连接和右外连接)
说明:左连接left join时,会以左表为基准,即会显示出左表所有的数据,右连接正好相反左连接:select 字段名 from 副表名 inner join 主表名 on 副表名.外键字段名 = 主表名.主键字段名;
右连接:反之即可
③合并查询
关键字:union,删除重复记录,返回的行都是唯一的,且两个查询的列数是一样的
关键字:union all,不删除重复记录,也不对结果进行自动排序,且两个查询的列数是一样的
写法:
select 字段名 from 表1 union select 字段名 from 表2;
select 字段名 from 表2 union select 字段名 from 表1;
select 字段名 from 表1 union all select 字段名 from 表2;
select 字段名 from 表2 union all select 字段名 from 表1;