Mysql语法

Mysql语法

SQL的分类:

1.DDL 数据定义语言

create–创建 alter–修改 drop–删除

2.DML 数据操作语言

insert(插入数据) update(修改数据) delete(删除数据)

3.DCL 数据控制语言

if else while

4.DQL 数据查询语言

select(查询表中的数据)

数据库操作

创建数据库:create database 数据库名称;
Mysql语法_第1张图片
删除数据库:drop database 数据库名称;
在这里插入图片描述
查看所有数据库:show databases;
Mysql语法_第2张图片
查看数据库创建信息:show create database 数据库名称;
Mysql语法_第3张图片
查看当前数据库:select database();
Mysql语法_第4张图片
使用某个数据库:use 数据库名称;
在这里插入图片描述
创建表:create table 表的名称(

字段名 数据类型 约束

);
在这里插入图片描述
删除表:drop table 表的名称;
Mysql语法_第5张图片
查看所有表:show tables;
Mysql语法_第6张图片
查看表结构定义的信息:show create table 表的名称;
Mysql语法_第7张图片
查看表结构的详细信息:desc 表的名称;
Mysql语法_第8张图片

修改表

添加新字段:alter table 表名称 add 字段名 数据类型 约束;
在这里插入图片描述
删除某字段:alter table 表名称 drop 字段名 数据类型;
在这里插入图片描述
修改字段数据类型、长度或约束:alter table 表名称 modify 字段名 数据类型 约束;
Mysql语法_第9张图片
修改字段名称:alter table 表名称 change 旧字段 新字段 数据类型 约束;
在这里插入图片描述
修改表名称: rename table 旧表名 to 新表名;
Mysql语法_第10张图片

插入数据

insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3); --向表中指定的字段添加值
Mysql语法_第11张图片
insert into 表名 values (值1,值2,值3,…); --向表中所有字段添加值

注意实现

插入的数据与字段数据的类型相同

数据的大小应该在规定的范围内

数据中的数据的列的位置和字段位置的相同的

字符串和日期类型的数据,必须要使用单引号括起来

插入中文数据乱码

1.插入中文,会产生乱码的问题。

2.怎么产生?怎么解决?

解决的方案,修改MySQL客户端的编码就可以了。改成GBK

3.修改MySQL客户端的编码

先把MySQL服务器停止

找到MySQL安装的路径,找到my .ini的配置文件*修改客户端的编码,改成gbk
[client]

port=3306

[mysql]

default-character-set=gbk

重启动MySQL的服务

修改数据的语句

update 表名 set 字段1=值1,字段2=值2 where 条件;
Mysql语法_第12张图片
修改字段1和字段2的值

如果没有where的关键字,说明修改的默认所有的记录如果有where的关键字,修改的是符合条件的记录

删除数据

delete from 表 where 条件;

如果不加where ,默认删除所有的数据

如果添加where条件,删除符合条件的数据\

truncate 表 --先把整张表删除包括里面的数据,在创建一个跟原来一模一样的表

查询数据

select * from 表 --表示查询表中所有字段的数据
Mysql语法_第13张图片
select 字段1,字段2,字段3 from 表 --查询指定字段的数据
Mysql语法_第14张图片
distinct —去掉重复的关键字(select distinct 字段 from 表)

*可以对查询的列进行计算

*查询语句中可以使用as的关键字起别名

*别名的真正的用法,采用的多表的查询,为了区分每张表,表起个别名。

*as的关键字可以省略不写。中间需要使用空格(一般用来给表起别名)

使用where的条件语句,进行查询条件的过滤。

where子句后可以使用的符号

1.常用的符号:< > >= <= <>(不等于) =
Mysql语法_第15张图片
in ----代表范围

like —模糊查询(条件需要使用单引号,需要使用占位符)

​ select * from 表 where username like ‘X_’ 使用 _做占位符 开头为X两个字符的都行 _代表一个位子

​ select * from 表 where username like ‘X%’ 使用%做展位符 开头为X的字符都行 %代表多个位子

and --与

or --或

not --非

between…and

总结查询的语句:select 字段1,字段2 | * from 表 where 条件的过滤;

使用order by 对结果进行排序

order by asc | desc;

asc --升序(默认值)
Mysql语法_第16张图片
desc --降序
Mysql语法_第17张图片
注意order by 放在select语句的最后

聚集函数

1.什么是聚集函数∶Excel表格。求数量,求和,平均值,最大值,最小值。

2.聚集函数操作的都是某一列的数据。

3.聚集函数:

count() —求数量 例:select count() from 表 where 条件过滤;
Mysql语法_第18张图片
sum() —求某一列数据的和 无sum(
),sum只对数值型数据起作用
Mysql语法_第19张图片
avg() —求平均分
Mysql语法_第20张图片
max()和min() —求最大值和最小值
Mysql语法_第21张图片
Mysql语法_第22张图片
注意聚集函数求的都是某一列的数据

分组查询概念

group by 根据字段进行分组
Mysql语法_第23张图片
select * from 表; 默认是一组

使用where的条件,如果有分组,where的条件是分组之前的条件。*新的关键字,having关键字进行分组的条件过滤。
where关键字后不能使用聚集函数,而having可以使用聚集函数!!

单表约束(主键)

1.可以把某一列字段声明主键,这一列的数据有如下特点
*非空
*唯一
*被引用–当前主键的列,作为一条记录的标识。
2.声明主键
*使用关键字primary key声明某一个字段为主键。
Mysql语法_第24张图片
主键的自动增长
*主键的值特点,可以把主键的值交给数据库去维护。*自动增长只能使用int和bigint类型
通过关键字auto_increment

开发中,主键是基本都要设置的

多表约束(外键)

外键的约束∶目的保证表结构中的数据的完整性!!

外键多表的关系
*使用关键字foreign key (dno) references dept (did);相当于dno字段作为emp表的外键,值是从dept表中did取值。(emp为员工表,dept为部门表)

多表的设计

1.多表的设计存在3种方式
—对多
*在多方表中,创建一个新的字段,作为当前表的外键,指向一方表的主键。

多对多
*先创建一张中间表,中间表中至少包含2个字段,两个字段作为当前中间表的外键,指向原来多对多表的主
键。

一对一
*一对一,一般不处理,放在同一张表中就可以。

多表查询内链接

0.前提条件:两个表有联系,通过外键关联。

1.普通内链接

语法∶关键字… inner join … on条件;注意︰
在inner join关键字之前写表1
在inner join关键字之后写表2on的后面写条件∶(表1是dept,表2是emp ) dept.did = emp.dno
语句:select * from dept inner join emp on dept.did = emp.dno;
2.隐式内链接(用的最多的)

语法: select … from表1,表2 where表1.字段=表2.字段;*语句: select * from dept, emp where dept.did = emp.dno;

*别名: select * from dept d, emp e where d.did = e.dno;

*指定字段: select d.dname,e.ename,e.sal from dept d,emp e where d.did = e.dno;

多表查询外链接

1.外链接又分成左外链接和右外链接
左外链接
使用关键字select * from表1 left outer join表2 on条件outer关键字省略不写

select * from dept left outer join emp on dept.did - emp.dno;

select * from dept left join emp on dept.did = emp.dno;

右外链接
使用关键字select * from表1 right outer join 表2 on 条件outer关键字省略不写
select * from dept right outer join emp on dept.did = emp.dno;

注意:1.笛卡尔积两个结果的乘积,数据是重复,目的︰去除掉重复的数据

子查询

1.子查询,嵌套查询,一个select语句不能查询出结果的,可以通过多个select语句来查询结果。

Mysql语法_第25张图片

你可能感兴趣的:(mysql,数据库)