在工作室不太忙时,整理了份实训文档,帮老师交给他所带的班上的师弟师妹(我可真是好人~)。留下精髓,记录一下经常使用的mysql语句。
一、 MySQl程序操作
1.1 在终端上操作
启动(管理员权限打开)
net start mysql
关闭(管理员权限打开)
net stop mysql
远程访问
mysql -hip -uroot -p 或 mysql --host=ip --user=root --password=密码
登录数据库
mysql -u root -p
查看数据库版本
mysql -V (或登录后输入status)
查看连接端口
show global variables like 'port';
退出
exit(或quit)
1.2 通用语法
1.以分号结尾
2.SQL语句不区分大小写(关键字建议用大写)
3.注释方式:
单行注释:–注释内容 或 #注释内容
多行注释:/注释内容/
二、 数据库命令行操作
2.1 操作数据库
创建数据库
create database 库名;
删除数据库
drop database 库名;
选择/使用数据库
use 库名;
查询数据库
show databases;
查询当前数据库
select database();
查询数据库结构
show create database 库名;
修改数据库的字符集
alter database 库名 character set 字符集名; /*utf8*/
2.2 操作数据表
创建表
create table 表名;
删除表
drop table 表名;
查看数据表
show table;
显示数据表结构
desc/describe 表名;
查询表结构
show create table 表名;
复制完整表结构
create table 表名 like 被复制表的名
修改表名
alter table 表名 rename to 新表名;
修改表的字符集
alter table 表 character set 字符集;
添加一列
alter table 表名 add 列名 数据类型;
修改列名称
alter table 表 change 列 新列 新数据类型;
修改列类型
alter table 表名 modify 列名 新数据类型;
删除列
alter table 表名 drop 列名;
2.3 创建表实例
1.如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
2.auto_increment定义列为自增的属性,一般用于主键,数值会自动加1。
3.primary key关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
4.engine设置存储引擎,charset设置编码。
三、 crud命令行操作
crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。
3.1 增加
插入数据
insert into 表名 (字段1, …) values (值1, …);
3.2 读取
查询数据(查询条件是区分大小写的)
select 字段1, 字段2 from 表名 where 限定条件;
3.3 更新
更新数据(如果不加条件,就会修改表中所有记录)
update 表 set 字段1=值… where 限定条件;
指定条件更新(replace用法)
update 表set 字段1=replace(值)… where 限定条件;
3.4 删除
删除表(指定条件删除)
delete from 表名 where 限定条件;
四、 DQL(数据库查询语句)
4.1 查询语句
多字段查询 (可以用 * 这个符号代替查询所有字段)
select 字段名1, 字段名2... from 表名;
去除重复 (两个字段名要都相同才能去重)
select distinct 字段名 from 表名;
计算列 (可以使用四则运算来简单计算数据)
select 字段名1+字段名2 from 表名;
若数据中有null, null参与运算,计算结果为null, 则将有null的字段用 IFNULL(字段名, 0)
例如:
select NAME, math, english, math + IFNULL(english, 0) from stu;
起别名 (可以用AS, 也可以用一个或多个空格)
select 字段名 AS 别名 from 表名;
4.2 条件查询
1.where子句后跟条件
2.运算符
算数运算符 | 符号 |
---|---|
除法 | / |
除法(有余数) | % |
比较运算符 | 符号 |
---|---|
等于 | == |
不大于 | = |
不等于 | != 或 <> |
不小于 | !< |
不大于 | !> |
位运算符 | 符号 |
---|---|
左移 (左操作数的值向左移动右操作数指定的位数) | << |
右移 | >> |
如果同时存在于两个操作数中,二进制 AND运算符复制一位到结果中 | & |
如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中 | (双竖线) |
二进制补码运算符是一元运算符,具有"翻转"位效应 | ~ |
逻辑运算符 | 符号 |
---|---|
在最小值与最大值范围内搜索 | between |
用于子查询条件中,若真则返回主查询 | exists |
把某个值与使用通配符运算符的相似值进行比较 | like (模糊查询) |
把某个值与使用通配符运算符的相似值进行比较(与like的区别是,它是大小写敏感的) | grob |
把某个值与一系列指定列表的值进行比较 | in |
作用与 = 运算符相似 | is |
搜索指定表中的每一行,确保唯一性(无重复 | unique |
占位符 | 符号 |
---|---|
单个任意字符 | _ |
多个任意字符 | % |
例如: 查询名字中包含陈的学生的所有信息。
select * from stu where name LIKE '%陈%';
4.3 排序查询
4.3.1 order by 语句
order by 排序字段1 排序方式, 排序字段2 排序方式2;
例如:
select * from stu ORDER BY math; /*默认升序排列*/
4.3.2 排序方式:asc 升序(默认),desc 降序
例如:
select * from stu ORDER BY math ASC;
select * from stu ORDER BY math DESC;
4.4 聚合函数
1.count 计算个数
2.max 最大值
3.min 最小值
4.sum 计算和
5.avg 平均值
例如: 查询stu表中math的平均成绩,如果列中有null, 则为0。
select AVG(IFNULL(math, 0) from stu;
4.5 分组查询
group by分组字段;
4.5.1 where 与having 的区别
(1)where 在分组之前进行限定, 如果不满足条件, 则不参与分组。 having 在分组之后进行限定, 如果不满足结果, 则不会被查询出来。
(2)where 后不可以跟聚合函数, having 可以进行聚合函数的判断。
例如: 按照性别分组, 查询stu表, 分数大于70分, 分为男 女两组, 分别显示数学平均成绩和男女所占人数。
select sex , AVG(math), COUNT(id) peo_sum from stu
where math > 70 GROUP BY sex HAVING peo_sum > 2;
分析:首先, 分组前用where进行筛选, 查询数学大于70, 接着用GROUP BY对性别进行分组. 分组完成后, 上面将COUNT(id)起名为peo_num, 最后用HAVING对分组后的数据进行筛选, 查询人数大于2的数据。
4.6 LIMIT用法
作用:限制查询结果的条数。
select * from 列表 limit m,n
解释:m是记录开始的index,从0开始,表示第一条记录;n是从m+1开始,取n条记录。
开始的索引 = 查询的页码 - 1
1.不指定位置偏移量,只取4条
SELECT * FROM stu LIMIT 4;
2.指定位置偏移量,从第4条起取3条
select * from stu LIMIT 3, 3;
/*因为索引是从0开始计数的,所以第4条对应的索引是3*/
另外,推荐下载Navicat,使用Navicat操作数据库比较友好。
文章来源: https://blog.csdn.net/qq_45069279 ,作者:苜苜的烂笔头,版权归原作者所有,如需转载,请联系作者。
原文链接:https://blog.csdn.net/qq_45069279/article/details/105727633