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 TABLE[IF 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组合起来

相关推荐
Binary-Jeff2 小时前
MySQL MVCC 原理解析:Undo Log、ReadView 与版本可见性机制
java·数据库·后端·mysql·spring
Leon-Ning Liu2 小时前
SQL Server在ldf文件误删的情况下恢复数据库
数据库·sqlserver
专注_每天进步一点点2 小时前
mysql-connector-j(8.0 及以上版本,包括你使用的 8.3.0)并非采用 GPL 许可证,因此你在项目中引入该依赖时,不需要遵循 GPL 的开源要求(比如开源你的整个项目)
数据库·mysql·apache
WangYaolove13142 小时前
基于循环神经网络的情感分类(源码+文档)
python·mysql·django·毕业设计·源码
await 4042 小时前
Sql_Server2022企业版安装+SSMS安装
数据库
Maverick062 小时前
Oracle PDB 迁移与重定位
数据库·oracle
原来是猿2 小时前
MySQL【索引下】
数据库·mysql
九章-2 小时前
国产时序数据库选型技术指南:从需求匹配到价值验证
数据库·时序数据库
江不清丶2 小时前
MySQL深分页原理与优化实践:从根因剖析到生产级解决方案
数据库·mysql