MySQL基本应用(SQL语句)

这篇博客详细介绍了MySQL的SQL语句,包括DDL(数据定义语言)用于创建和管理数据库与表,DML(数据操纵语言)涉及数据的增删改查,以及DCL(数据控制语言)用于权限管理。同时讲解了where子句的使用、SQL函数以及多表关联查询的方法,如外键设置、连接查询和合并查询。
摘要由CSDN通过智能技术生成

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是倒序

  1. 正序 select * from 表名 order by 字段名 asc(可写可不写);
  2. 倒叙 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求和

  1. avg平均值:select avg(字段名) from 表名;
  2. count总数:select count(字段名) from 表名;
  3. max最大值:select max(字段名) from 表名;
  4. min最小值:select min(字段名) from 表名;
  5. Sum求和:select sum(字段名) from 表名;

②字符串函数:

  1. concat():连接字符串
  2. insert():替换字符串
  3. lower():转小写
  4. upper():转大写
  5. left():返回左边x个字符
  6. right():返回右边x个字符
  7. trim():去掉左右两边空格
  8. replace():替换字符串
  9. repeat():字符重复
  10. 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 外键约束名;

说明:

  1. 外键只能指向主键
  2. 外键和主键的字段类型必须一致
  3. 外键和主键所在的表类型必须都是InnoDB

②连接查询

  1. 内连接:关键字inner join...on...

写法:select 字段名 from 副表名 inner join 主表名 on 副表名.外键字段名 = 主表名.主键字段名;

  1. 外连接:关键字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;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值