MySql基本使用命令记录

MySql基本使用命令记录

-. mysql --version

1.链接sql服务:

mysql -uroot -p123456 //-u:root用户; -p:密码

2. 数据库操作

. 查看服务包含的所有数据库: show DATABASES; #注意要在末尾添加分号

-. 添加一个数据库: create DATABASE name;

-. 删除一个数据库: drop DATABASE IF EXISTs name; #IF EXISTS 是一个可选的子句,表示如果数据库存在才执行删除操作

-. 选择要使用的数据库: use name;

-. 推出数据库服务:exit;

3.数据库下表操作

. 查看当前数据库中的所有数据表: show TABLES;

-. 创建一个数据表: create TABLE name(列名 类型, 列名 类型,...);

例如:

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY, #id: int类型、自增长、主键

username VARCHAR(50) NOT NULL, #username:变长字符串、不允许为空

email VARCHAR(100) NOT NULL,

birthdate DATE, # 日期类型

is_active BOOLEAN DEFAULT TRUE # 布尔类型、默认值为true

);

--删除数据表: drop TABLEIF EXISTs name; #IF EXISTS 是一个可选的子句,表示如果数据库存在才执行删除操作

--查看数据表结构: describe 表名;

4. 数据库表中数据操作

-插入数据: insert into 表名 values (a,b,c,Null),(...); #一行数据用一个括号包含,数据之间用逗号分隔,字符串要用单引号

-删除数据: delete from 表名 where ...; where是查询条件,如果没有这一部分则会将表内所有记录清楚

-修改数据: UPDATE 表名 SET column1 = value1, column2 = value2, ... WHERE condition;

-查询查询查询查询【重点】 ********

--SELECT 字段 from 表名 ( where id=1); #字段为*是表示全部, 括号内是限制条件,可以不要

-查询字段时重复项只显示一次: 使用distinct关键字:select distinct 字段 from 表名

-查询区间用between...and...:

例如:查询score表中成绩degree值在60-80之间的数据: select * from score where degree between 60 and 80;

-查询【同一个字段】匹配a或者b或者c这样的用:in关键字。例如:select * from score where degree in(60,62,63);

-查询【不同字段】或的关系用or关键字。例如:select * from score where degree=60 or name='小明';

  • 升序(默认): order by 字段 asc; 降序: order by 字段 desc 。 例如:select * from score order by id asc, degree desc;
    -分组:group by .
    例如:查询每一门学科的平均分。 select avg(degree) from score group by cno;
    -group by 字段名 having count():计算每个分组的行个数。
    例如: 查询学生表中至少含有两名男生的班级号码。 select class from student where ssex='男' group by class having count(
    )>1;

-多表查询: 通过将多个表中相同的字段关联起来。

例如: select sname, score, degree from student, score where student.sid=score.id;

-any(...): 集合中的任何一个; all(...): 集合中的所有

-(selsect...) union (select...) : 将多个select的结果通过union关键字合并到一起并去除重复行。要求:多个select语句的列数以及对应位置的数据类型必须一致

-模糊查询:字段名 like(...%); 取反 not like. 通配符: '%':任意一个或多个字符; '_':任意一个字符

例如: 查询班级中不姓王的学生: select sname from student where sname not like('王%');

-时间函数: now():当前时间; year():年份。

例如计算学生的年龄用当前年份-出生年份:year(now())-year(birthday);

-最大函数:max(字段名); 最小:min(字段名)

5. 建表约束

-主键约束: primary key; 指定某一个字段为主键,内容不能为空、不能重复;

--联合主键:create table users2( id int ,name varchar(20), primary key(id,name)); #primary key(a,b) a和b是联合主键,两个合在一起不重复就可以

-自增约束: auto_increment; 通常是放在primary key的后面,自动管控主键、进行自增,可以不用手动填写该字段的值

-唯一约束: unique; 指定有一个字段内容不能重复

-非空约束: not_null;

-默认约束: default a; 设置默认值

-外键约束: 涉及主表和子表,

将主表的一个字段设置为子表的一个字段的外键,则子表这个字段的值必须取在主表外键字段中存在的值

主表中的值被子表引用,则主表中的这个内容不能被删除或者修改

例如: CREATE table2 (

id int,

name varchar(20),

classid int,

foreign key(classid) references table(id) #foreign key(要添加主键约束的字段名)references 主表名(字段名)

);

6.java程序如何与数据库交互,

通过odbc, 步骤:链接数据库、发送sql语句、处理结果、关闭连接。c++也有同样逻辑的mysql第三方库可以使用

发送给数据库的增删改查语句就是sql语句,以字符串的方式传输

接受的查询结果是一个表格并配有一个行指针的封装类型,通过next向下一行遍历,结果接受完毕之后就失效,不能后退

7. 连接查询

可以在 SELECT, UPDATE 和 DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

全连接(full join): 将left join 和right join用union组合起来

相关推荐
系统集成-鹰翔几秒前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
西瓜拿铁好喝几秒前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
一技安身2 分钟前
MySQL 8.4.13 LTS 通用二进制包(Linux免安装版)完整教程
linux·mysql·adb
代码派11 分钟前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
Gauss松鼠会15 分钟前
GaussDB 中 gsql 与 DBeaver(JDBC)客户端工具查询时间不一致:原因、排查与处理
运维·服务器·数据库·sql·gaussdb·经验总结
Elastic 中国社区官方博客20 分钟前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
我不会起名字32227 分钟前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
mysql·explain·执行计划·索引下推·成本模型
楚识科技28 分钟前
信创环境下 OCR 部署实践:从麒麟系统到达梦数据库的全栈适配
数据库·ocr
飞浪纪元[FWC–FE]33 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
Paper数据分析-经管学术33 分钟前
1985-2026年中国低空经济专利明细数据库
数据库