mysql的基础操作

43 篇文章 1 订阅
30 篇文章 0 订阅

数据库层面的操作

查询

## 显示当前mysql中的数据库列表
show databases;
## 显示指定名称的数据的创建的SQL指令
show create database <dbName>

创建

## 创建数据库 dbName表示创建的数据库名称,可以⾃定义
create database <dbName>;
## 创建数据库,当指定名称的数据库不存在时执⾏创建
create database if not exists <dbName>;
## 在创建数据库的同时指定数据库的字符集(字符集:数据存储在数据库中采⽤的编码格式utf8 gbk)
create database <dbName> character set utf8;

修改

## 修改数据库的字符集
alter database <dbName> character set utf8; # utf8 gbk

删除

## 删除数据库
drop database <dbName>;
## 如果数据库存在则删除数据库
drop database is exists <dbName>

使用

use <dbName>

数据表

创建

create table students(
 stu_num char(8) not null unique,
 stu_name varchar(20) not null,
 stu_gender char(2) not null,
 stu_age int not null,
 stu_tel char(11) not null unique,
 stu_qq varchar(11) unique
);

查询数据表

show tables;

查询表结构

desc <tableName>

删除

# 删除数据表drop table <tableName>;## 当数据表存在时删除数据表drop table if exists <tableName>;

修改(alter)

## 修改表名alter table <tableName> rename to <newTableName>;## 数据表也是有字符集的,默认字符集和数据库⼀致alter table <tableName> character set utf8;## 添加列(字段)alter table <tableName> add <columnName> varchar(200);## 修改列(字段)的列表和类型alter table <tableName> change <oldColumnName> <newCloumnName> <type>;## 只修改列(字段)类型alter table <tableName> modify <columnName> <newType>;## 删除列(字段)alter table stus drop <columnName>;

修改DML(insert、delete、update)

insert

语法:

insert into <tableName>(columnName,columnName....)values(value1,value2....);
## 向数据表中指定的列添加数据(不允许为空的列必须提供数据)insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel)values('20210101','张三','男',21,'13030303300');## 数据表名后的字段名列表顺序可以不与表中⼀致,但是values中值的顺序必须与表名后字段名顺序对应insert into stus(stu_num,stu_name,stu_age,stu_tel,stu_gender)values('20210103','王五',20,'13030303302','⼥');## 当要向表中的所有列添加数据时,数据表名后⾯的字段列表可以省略,但是values中的值的顺序要与数据表定义的字段保持⼀致;insert into stus values('20210105','琦','男',21,'13030303304','666666');## 不过在项⽬开发中,即使要向所有列添加数据,也建议将列名的列表显式写出来(增强SQL的稳定性)insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq)values('20210105','孙琦','男',21,'13030303304','666666');
delete

语法:

delete from <tableName> [where conditions];

示例:

## 删除学号为20210102的学⽣信息delete from stus where stu_num='20210102';## 删除年龄⼤于20岁的学⽣信息(如果满⾜where⼦句的记录有多条,则删除多条记录)delete from stus where stu_age>20;## 如果删除语句没有where⼦句,则表示删除当前数据表中的所有记录(敏感操作)delete from stus;
update

语法:

 update <tableName> set columnName=value [where conditions]

示例:

## 将学号为20210105的学⽣姓名修改为“孙七”(只修改⼀列)update stus set stu_name='孙七' where stu_num='20210105';## 将学号为20210103的学⽣ 性别修改为“男”,同时将QQ修改为 777777(修改多列)update stus set stu_gender='男',stu_qq='777777' wherestu_num='20210103';## 根据主键修改其他所有列update stus set stu_name='韩梅梅',stu_gender='⼥',stu_age=18,stu_tel='13131313311' ,stu_qq='999999'where stu_num='20210102';## 如果update语句没有where⼦句,则表示修改当前表中所有⾏(记录)update stus set stu_name='Tom';

DQL查询(单表多表)

select

## select 关键字后指定要显示查询到的记录的哪些列select colnumName1[,colnumName2,colnumName3...] from <tableName> [whereconditions];## 如果要显示查询到的记录的所有列,则可以使⽤ * 替代字段名列表 (在项⽬开发中不建议使⽤*)select * from stus;

例如:

select stu_num from stus where stu_age<100;

这个示例就会展示所有stu_age小于100的人的stu_num

也可以使用select来进行

where(运算符)

条件子句

用的多了

看看运算符:

# = 等于select * from stus where stu_num = '20210101';## != <> 不等于select * from stus where stu_num != '20210101';select * from stus where stu_num <> '20210101';## > ⼤于select * from stus where stu_age>18;## < ⼩于select * from stus where stu_age<20;## >= ⼤于等于select * from stus where stu_age>=20;## <= ⼩于等于select * from stus where stu_age<=20;## between and 区间查询 between v1 and v2 [v1,v2]select * from stus where stu_age between 18 and 20;

between

逻辑运算符(and、or、not)

# = 等于select * from stus where stu_num = '20210101';## != <> 不等于select * from stus where stu_num != '20210101';select * from stus where stu_num <> '20210101';## > ⼤于select * from stus where stu_age>18;## < ⼩于select * from stus where stu_age<20;## >= ⼤于等于select * from stus where stu_age>=20;## <= ⼩于等于select * from stus where stu_age<=20;## between and 区间查询 between v1 and v2 [v1,v2]select * from stus where stu_age between 18 and 20;

like(模糊查询)

在like关键字后的reg表达式中 :

  • % 表示任意多个字符 【 %o% 包含字⺟o】
  • _ 表示任意⼀个字符 【 _o% 第⼆个字⺟为o】

示例:

# 查询学⽣姓名包含字⺟o的学⽣信息select * from stus where stu_name like '%o%';# 查询学⽣姓名第⼀个字为`张`的学⽣信息select * from stus where stu_name like '张%';# 查询学⽣姓名最后⼀个字⺟为o的学⽣信息select * from stus where stu_name like '%o';# 查询学⽣姓名中第⼆个字⺟为o的学⽣信息select * from stus where stu_name like '_o%';

数据类型

基本数据类型

[外链图片转存中...(img-nCQvl81C-1636288927011)]

字符串类型

[外链图片转存中...(img-2ITJDjSa-1636288927019)]

字段约束

not null;uniqueprimary key ##not null and uniqueforeign key

1.约束操作

1.1删除主键约束

alter table books drop primary key;

1.2创建表之后添加主键约束

## 创建表时没有添加主键约束create table books( book_isbn char(4), book_name varchar(10) not null, book_author varchar(6));## 创建表之后添加主键约束alter table books modify book_isbn char(4) primary key;

1.3主键自动增长

定义int类型字段自动增长:

auto_increment

例如:

create table types( type_id int primary key auto_increment, type_name varchar(20) not null, type_remark varchar(100));
注意:⾃动增⻓从1开始,每添加⼀条记录,⾃动的增⻓的列会⾃定+1,当我们把某条记录删除之后再添加数据,⾃动增⻓的数据也不会重复⽣成(⾃动增⻓只保证唯⼀性、不保证连续性

1.4 定义联合主键

定义:联合主键——将数据表中的多列组合在⼀起设置为表的主键

create table grades( stu_num char(8), course_id int, score int, primary key(stu_num,course_id));	

[外链图片转存中…(img-0pQ3S7oB-1636288927032)]

(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20211106163658996.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值