mysql语句在哪写_MySQL的SQL语句

数据库

1. 使用管理员用户:

启动数据库服务器的命令:net start mysql

关闭数据库服务器的命令:net stop mysql

登录mysql数据库的命令:mysql -u用户名 -p密码 mysql -uroot -proot

创建数据库:使用关键字 create(新建,创建) database(数据库)

格式:

create database 数据库名称; 建议使用 使用的编码默认为utf8

create database 数据库名称 character set 字符集; 创建指定字符编码的数据库 不建议

2. 删除指定的数据库:使用关键字drop(删除)

格式:

drop database 数据名称;

3. 查看正在使用的数据库

格式:

select database();

4. 使用(切换)数据某个数据库

格式:

use 数据库名称;

5. 创建数据表:使用关键字 create(创建) table(表格)

格式:

create table 表名(

字段1 数据类型[长度] [约束],

字段2 数据类型[长度] [约束],

..

字段n 数据类型[长度] [约束](注意,此处不能写逗号)

);

字段:数据表中的列

[]:[]中的内容是可以省略

约束:

主键约束:primary key 约束主键列不能为空,不能重复

非空约束:not null 约束列中的数据不能为空

唯一约束:unique 约束列中的数据不能重复

6. 查看数据库中的所有表

格式:

show tables;

7. 查看表结构

格式:

desc 表名;

8. 删除表:

格式:

drop table 表名;

9. 修改表结构:使用关键字alter(改变)

增加列:使用关键字add

格式:

alter table 表名 add 列名(字段名) 数据类型[长度] 约束;

修改表结构:

修改列的数据类型,和列的长度,列的约束:使用关键字modify(修改)

格式:

alter table 表名 modify 列名(字段名) 数据类型[长度] 约束;

注意:

类型varchar-->int,double,可能会报错 "abc"-->int

修改表结构:

修改列名,列的数据类型,和列的长度,列的约束:使用关键字change(改变)

格式:

alter table 表名 change 旧列名 新列名 数据类型[长度] 约束;

修改表结构:

删除列:使用关键字drop

格式:

alter table 表名 drop 列名;

注意:

被删除的列中如果有数据,也会被一起删除(有风险)

修改表名:

rename table 旧表名 to 新表名;

修改表的字符集:了解,不建议,表中如果有数据,可能会产生乱码

格式:

alter table 表名 character set 字符集;

10. 表中添加数据:使用关键字 insert(插入) into values(值)

格式一:往表中添加一行数据

insert into 表名(字段1,字段2,...字段n) values(值1,值2,...值n);

注意:

字段和值一定要一一对应(个数,数据类型)

值的书写:除了数值类型(整数,小数),其它的值在使用的使用必须使用引号包裹取来

可以使用单引号,也可以使用双引号;建议使用单引号

字段可以选择性书写(写几个都可以,但是主键和非空字段必须写出来)

格式二:往表中添加一行数据,主键如果是自增,可以省略主键字段

insert into 表名(非主键字段) values(对应的值);

格式三:可以省略所有的字段,但是值必须全部给出(主键不能省略)

insert into 表名 values(全部字段的值,包含主键);

格式四:批量插入数据

选择对应的字段书写:

insert into 表名(任意的字段) values(对应的值),(对应的值),...(对应的值);

省略全部的字段书写:

insert into 表名 values(全部字段的值),(全部字段的值),..(全部字段的值);

11. 修改表中的数据:使用关键字update

格式一:修改某几列的所有数据

update 表名 set 字段1=字段值,字段2=字段值...;

格式二:修改某几列中符合条件的数据

update 表名 set 字段1=字段值,字段2=字段值... where 条件限定;

12. 删除表中的数据:使用关键字delete(删除) from(来自于那张表)

格式一:删除符合条件的数据

delete from 表名 where 条件限定;

格式二:删除表中的所有数据,逐一删除表中的多行数据,不会重写设置主键自增,

如果要在添加数据,那么会继续之前的主键

delete from 表名;

格式三:删除表中的所有数据,会清空表中的所有数据,也会设置设置主键自增,

如果要在添加数据,那么主键默认从1开始

truncate table 表名;

13. 约束:限制某一列的数据(不能为null,不能重复)

和java中的集合的泛型一样

ArrayList:集合中只能存储字符串

1> 主键约束:

设置某一列的数据为主键:限制该列的数据不能为null,不能重复

使用关键字:primary key

注意:

每一个表中都应该有一个主键,且只能有一个主键

主键字段不建议使用业务相关字段

<1> 添加主键格式一:创建表的同时,给某个字段,添加主键修饰

<2> 添加主键约束方式二:创建表时,在constraint约束区域,声明指定字段为主键

格式:字段的最后添加一个constraint约束区域

[constraint 主键名] primary key(主键字段)

<3> 添加主键约束格式三:在创建表之后使用,使用修改表结构,添加主键约束

格式:

alter table 表名 add [constraint 主键名] primary key(主键字段);

删除主键约束:使用修改表结构

格式:

alter table 表名 drop primary key;

2> 非空约束:限制某一列的数据不能为null

使用关键字:not null

格式一:在创建表的同时,给指定的字段添加非空约束

格式二:在创建表之后,使用修改表结构,给某个字段添加非空约束

alter table 表名 modify 字段 数据类型 not null;

删除非空约束:使用修改表结构,删除某个字段的非空约束

alter table 表名 modify 字段 数据类型;

3> 唯一约束:约束某一列的数据不能重复

使用关键字:unique

注意:

如果数据的值是null,那么唯一约束是不起作用的

格式一:在创建表的同时,给指定的字段添加唯一约束

格式二:在创建表所有字段之后,使用constraint区域添加唯一约束

[constraint 唯一约束名字] unique(添加唯一约束的字段)

格式三:在创建表之后,使用修改表结构,添加唯一约束

alter table 表名 add [constraint 唯一约束名字] unique(添加唯一约束的字段);

alter table 表名 modify 字段 数据类型 unique;

删除唯一约束:

ALTER TABLE 表名 DROP INDEX 字段/唯一约束名字;

4> 默认约束:给某列的数据添加一个默认值

使用关键字:default(默认)

添加数据的时候,如果不给默认字段添加值,那么该字段的值就是默认值

添加数据的时候,如果给默认字段添加值,就那么就使用新添加的值

格式一:在创建表的同时,给指定的字段,添加一个默认值

格式二:在创建表之后,使用修改表结构,添加默认约束

alter table 表名 modify 字段 数据类型 default '默认值';

删除默认约束:使用修改表结构,删除默认约束

alter table 表名 modify 字段 数据类型;

14. 简单查询语句:使用关键字 select(查询) from(来自于)

格式一:查询指定的字段

select 字段名1,字段名2... from 表名;

格式二:查询所有的字段

select * from 表名;

select 列出所有字段 from 表名;

格式三:过滤重复的数据

select distinct 字段 from 表名;

注意:

distinct后边只能过滤一个字段

格式四:可以使用as关键字给表或者字段起别名

给表起别名:多表查询时使用

select 字段|* from 表名 [as] 别名;

给查询之后的字段起别名

select 字段 [as] 别名,.... from 表名;

注意:

1> 起别名只是对查询的结果临时给字段或者表起名字,不会把表原有的名字改变

2> 起的别名,如果中间包含了空格或者特殊符号,必须使用引号包裹起来

15. 条件查询语句:使用关键字where(在哪)

格式:

select 字段|* from 表名 where 条件限定

常用的运算符:

比较运算符:>,=,<=,=,<>(!=)

逻辑运算符:

与: and &&

或: or ||

非: not !

表示区间的:

between...and 相当于 >= && <=

表示查询多个数据:

in(数据1,数据2,数据3...); 相当于 or

查询空值: is null

模糊查询:使用关键字like

%:多个任意字符

_:一个任意字符

使用between...and改造

好处:

between...and:可以对时间的区间进行查询

数据值小的一定要写在前边

16. 排序查询语句:使用关键字 order by [asc] [desc],要放在select语句的最后

格式:

select 字段|* from 表名 [where 条件] order by 被排序的字段 [asc] [desc];

asc:升序(不写默认是升序)

desc:降序

17. 聚合函数查询:对某一列数据进行查询,结果返回一个单一的值,会忽略null值

包含:

count:统计指定列不为NULL的记录行数;

sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

使用格式:聚合函数要写在select后边from的前边

select count(字段|*),sum(字段),max(字段),min(字段),avg(字段) from 表名;

18. 分组查询语句:使用关键字 group by[having 条件过滤]

格式:

select 被分组的字段,... from 表名 group by 被分组的字段 [having 条件过滤];

注意:

被分组的字段,一般都写在select后边,方便查看结果

执行流程:

先条件过滤 where

先分组 group by

在查询 select 字段

having 再次对查询的结果进行条件过滤

where:分组之前对条件进行过滤

having:分组之后,再次对条件进行过滤

可以使用聚合函数

19. 分页查询:使用关键字 limit

格式:

limit m n

m:可以变化的,每页数据的开始行数

n:固定不变的,每页显示行的个数

数据库中:

行的开始索引是0,第0行,第1行....

列的开始索引的1,第1列....

20. 1对多的关系:从表使用主表的主键作为外键字段

添加主表分类表和从表商品表之间的主外键关系:

使用修改表结构(创建从表的时候直接添加)

alter table 从表名 add [constraint 外键名称] foreign key(从表中的外键字段) references 主表(主键);

foreign key:外键

references:引用

外键的作用:保证数据的准确性和完整性

1> 主表中有的数据,从表可以有,可以没有

2> 主表中没有的数据,从表也不能出现

3> 删除主表的数据,必须保证从表没有使用

--语句删除外键

alter table 从表 drop foreign key 外键名称;

21. 多表查询:一次查询2张以上的表

1> 交叉连接查询:很少使用有错误数据

格式:

select 字段|* from 表A,表B;

2> 内连接查询:使用外键约束作为查询条件

a.隐式内连接查询:不使用关键字[inner] join on

格式:

select 字段|* from 表A,表B where 表A.主键=表B.外键;

b.显示内连接查询:使用关键字[inner] join on

格式:

select 字段|* from 表A [inner] join 表B on 表A.主键=表B.外键;

3> 外连接查询:使用外键约束作为查询条件

a.左外连接查询:使用关键字 left [outer] join on;以左边的表为主,左边有的数据,右边没有使用null代替

格式:

select 字段|* from 表A left [outer] join 表B on 表A.主键=表B.外键;

b.右外连接查询:使用关键字 right [outer] join on;以右边的表为主,右边没有的数据,左边也不能出现

格式:

select 字段|* from 表A right [outer] join 表B on 表A.主键=表B.外键;

4> 子查询:sql语句的嵌套

a.一条sql语句使用另外一条sql语句的查询结果作为查询的条件

格式:

select * from 表B where 字段 = (select 字段 from 表A [where 条件]);

b.一条sql语句使用另外一条sql语句的查询结果,作为一张表使用(多表查询,内连接查询)

select * from 表B,(select * from 表A [where 条件])表A where 表A.主键=表B.外键;

22. 省份和城市的1对多关系

主表:省份provice

从表:城市city

主外键关系:city中的外键字段,使用provice的主键作为外键约束

好处:保证数据的准确性和完整性

主表有的数据,从表可以有,可以没有

主表没有的数据,从表也不能有

删除主表的数据,必须保证从表没有使用

23. 自关联1对多的关系:本表外键使用本表的主键作为外键

24. 用户和角色的多对多关系

建表元素:创建一张中间表,使用两个主表的主键作为外键

主表:用户表user,角色表role

中间表:user_role

角色和权限的多对多关系

主表:角色表role,权限表:privilege

中间表:role_privilege

25. 多表查询:一次查询2张以上的表

1> 交叉连接查询:很少使用有错误数据

格式:

select 字段|* from 表A,表B;

2> 内连接查询:使用外键约束作为查询条件

a.隐式内连接查询:不使用关键字[inner] join on

格式:

select 字段|* from 表A,表B where 表A.主键=表B.外键;

b.显示内连接查询:使用关键字[inner] join on

格式:

select 字段|* from 表A [inner] join 表B on 表A.主键=表B.外键;

3> 外连接查询:使用外键约束作为查询条件

a.左外连接查询:使用关键字 left [outer] join on;以左边的表为主,左边有的数据,右边没有使用null代替

格式:

select 字段|* from 表A left [outer] join 表B on 表A.主键=表B.外键;

b.右外连接查询:使用关键字 right [outer] join on;以右边的表为主,右边没有的数据,左边也不能出现

格式:

select 字段|* from 表A right [outer] join 表B on 表A.主键=表B.外键;

4> 子查询:sql语句的嵌套

a.一条sql语句使用另外一条sql语句的查询结果作为查询的条件

格式:

select * from 表B where 字段 = (select 字段 from 表A [where 条件]);

b.一条sql语句使用另外一条sql语句的查询结果,作为一张表使用(多表查询,内连接查询)

select * from 表B,(select * from 表A [where 条件])表A where 表A.主键=表B.外键;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值