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

相关推荐
爱敲代码的小鱼7 分钟前
springsecurity:
java·开发语言·数据库
秋田君9 分钟前
QT_QT信号与槽机制
开发语言·数据库·qt
DFT计算杂谈1 小时前
vasp如何计算金属的铁电极化强度?
数据库
EterNity_TiMe_1 小时前
别让告警变成噪音:用Prometheus和Alertmanager搭一套可远程查看的监控系统
数据库·人工智能·ai·postgresql·prometheus·cpolar
不超限1 小时前
Postgresql 数据库 自增字段,Vastbase 无效的问题
数据库
阿坤带你走近大数据2 小时前
Oracle新老SQL写法对比
数据库·sql·oracle
还是鼠鼠2 小时前
AI掘金头条新闻系统 (Toutiao News)-缓存相关推荐新闻
后端·python·mysql·fastapi·web
自由的裙子2 小时前
How-To: Using the N* Stack, part 4
java·jvm·oracle
努力努力再努力wz2 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
HackTwoHub3 小时前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构