文章目录
MySQL基础命令
本数据都在DataGrip软件上操作。
MySQL的特点有:
(1)MySQL是开源的;
(2)MySQL支持大量数据处理,可以处理上千万条的数据记录;
(3)MySQL使用标准的SQL语言形式;
(4)MySQL可以安装在不同的操作系统,并且提供了多种编程语言的操作接口,包括Python、Java、PHP、C++、Ruby等;
(5)支持多种存储引擎。
SQL语句的分类
数据定义语言: DDL (Data Definition Language):用来定义数据库、数据表、列等。创建create、修改alter、删除drop等。
数据操作语言: DML (Data Manipulation Language):用来更新数据表。插入数据insert、更新数据update、删除数据delete等。
数据查询语言: DQL (Data Query Language):用于查询数据。查询数据select、条件where等。
数据控制语言: DCL (Data Control Language):用来定义数据库的访问权限和安全级别,及创建用户。
在MySQL数据库中,常用的字段类型如下:[数据类型]
(1)整数:int;
(2)小数:double,注意:在编程开发中,一般把小数称为浮点数;
(3)字符串:varchar;
(4)时间日期:date、datetime。
【DDL】数据库操作
创建数据库
create database [其他] 数据库名 [设置编码格式];
==说明:==使用
[ ]
表示的内容表示可选项。
例:
(1)创建一个
班级
user1数据库,且使用默认编码;
(2)创建一个
班级
user2数据库,charset设置编码为utf8。
(3)若再使用相同命令创建一个已有的数据库:
班级
user1。
# (1)创建一个`班级`user1`数据库,且使用默认编码;
create database user1;
# (2)创建一个`班级`user2`数据库,charset设置编码为utf8。
create database user2 charset utf8;
# (3)若再使用相同命令创建一个已有的数据库:班级`user1`。
create database if not exists user1 charset utf8;
查看数据库
# 查看有哪些数据库
show databases;
# 查看数据库的创建语句
show create database 数据库名;
删除数据库
drop database 数据库名称;
切换数据库
use 数据库名;
【DDL】数据表操作
创建数据表
create table 表名(
字段名1 数据类型(长度) [约束],
字段名2 数据类型(长度) [约束],
字段名3 数据类型(长度) [约束],
...
);
说明:
(1)常见类型有int、double、varchar(x);
(2)primary key表示主键,使用主键修饰的字段必须保证唯一且非空;
(3)auto_increment表示自动增长,通常为int型的值才能设置为自动增长。
特别注意:在创建数据表前,要先使用数据库。
例:
# (1)创建一个数据库`班级`user1,并在该库中完成创建数据表的操作;
create database if not exists user1 charset utf8;
# (2)使用数据库;
use user1;
# (3)新建一个用户表user,字段有编号、用户名、昵称;
create table user(
id int primary key auto_increment, #添加主键且自增长
username varchar(20),
nickname varchar(20)
);
查看数据表
# 查看有哪些表
show tables;
# 查看数据表的创建语句
show create table 表名;
# 查看表结构
desc 表名;
删除数据表
drop table 表名;
修改数据表
(1)添加一列 :add
alter table 表名 add 字段名 类型(长度) [first|after 其他字段名称];
# first:把新添加字段放在第一位
# after 其他字段名称:把新添加字段放在指定字段的后面
例:
(1)给用户表添加一列信息展示information字段,长度为20;
(2)在用户表的最开始处,添加一列最初名称first_name,该怎么做呢?
(3)在用户表的信息字段后,添加一列年龄age字段,该怎么做?
# 1.创建一个数据库`班级`user1,并在该库中完成创建数据表的操作;
create database if not exists user1 charset utf8;
# 2.使用数据库;
use user1;
# 3.新建一个用户表user,字段有编号、用户名、昵称;
create table user(
id int primary key auto_increment, #添加主键且自增长
username varchar(20),
nickname varchar(20)
);
# 4.添加一列
alter table user add information varchar(20);
desc user;
# 5.开始处添加一列
alter table user add first_name varchar(20) first;
# 6.某个字段后添加一列
alter table user add age int after information;
(2)修改列类型:modify
alter table 表名 modify 要修改的字段名 类型(长度);
alter table 表名 modify 要修改的字段名 类型(长度) [约束]; # 不为空
说明:非空约束可写成
not null
,表示不能为空值,必须进行设定数据。
例:
(1)给用户表的information 字段类型修改为char,长度修改为10;
(2)将用户名字段修改长度为16,且添加不为空约束。
# 修改信息字段 char(10)
alter table user modify information char(10);
# 修改姓名字段 16 not null
alter table user modify username varchar(16) not null;
(3)修改列名:change
alter table 表名 change 旧列名 新列名 类型(长度) [约束];
例:
(1)把用户表的用户名修改为name,字符串类型、长度为18;
(2)把用户表的性别字段列名修改为sex,类型修改为varchar,长度为100。
# 修改用户名为name varchar(18)
alter table user change username name varchar(18);
# 修改信息为info varchar(100)
alter table user change information info varchar(100);
(4)删除一列:drop
alter table 表名 drop 列名;
例:
(1)删除用户表中的年龄这一列;
(2)使用命令查看表结构。
# 删除一列
alter table user drop age;
#查看表结构
desc user;
(5)修改表名:rename
rename table 表名 to 新表名;
例:
(1)把用户表的表名更改为table_user;
# 修改表名
rename table user to table_user;
【DML】数据操作
插入数据
#插入一条数据
insert into 表名[(字段名1,字段名2,字段名3,...)] values(值1,值2,值3,...);
# 插入多条数据
insert into 表名[(字段名1,字段名2,字段名3,...)] values (值1,值2,值3,...),(值1,值2,值3,...),...;
例:
(1)创建一个shopping库,并在该库下新建一个用户表user;
(2)用户表的字段信息有编号、人物名、性别、住址等;[不添加任何约束条件]
(3)使用插入数据的语法分别插入一条数据;
(4)思考1:给所有字段名一次性插入2条数据信息,该怎么做?
(5)思考2:给用户表一次性插入仅包含人物名、年龄、性别字段的3条数据,该怎么做?
(6)若发现在性别字段后,还缺少了年龄字段,该怎么处理呢?
#####################插入数据###############################
# 1.新建库、使用库
create database if not exists shopping charset utf8;
use shopping;
show tables;
# 2.创建表
create table if not exists user(
id int,
name varchar(20),
sex varchar(10),
address varchar(255)
);
show tables;
# 3.不加()与加()依次插入数据
insert into user values(1,'李自豪','男','山东青岛');
insert into user(id,name,sex,address) values(2,'吕春伟','男','山东济南');
# 4.一次性插入多条数据
insert into user values(3,'周媛','女','山西太原'),(4,'周钰哲','女','广东湛江');
insert into user(id,name,sex,address) values(5,'周媛2','女','山西太原'),(6,'周钰哲2','女','广东湛江');
# 5.一次插入仅包含部分字段的数据
insert into user(name,sex,address) values('刘志远','男','河南新乡'),('刘志远2','男','河南新乡'),('刘志远3','男','河南新乡');
# 6.缺少年龄字段,该怎么修改?
alter table user add age int after sex;
更改数据
#更改数据表内所有的数据
update 表名 set 字段名1=值1, 字段名2=值2, 字段名3=值3,...;
#按条件修改数据
update 表名 set 字段名1=值1, 字段名2=值2, 字段名3=值3,…… where 条件;
例:
(1)将用户表内所有用户性别一次性设置为男;
(2)将用户表内所有用户的性别修改为女、年龄修改为18;
(3)将用户表内编号为2的用户性别设置为男;
(4)将用户表内编号为3的用户年龄更新为22,且住址更新为河南省郑州市;
(5)思考:去年存储的用户数据到今年了,那么存储在user数据表里的用户年龄都要增加1岁,该怎么处理呢?
######################更新数据################################
# 使用库
use shopping;
show tables;
# 1
update user set sex='男';
# 2
update user set sex='女',age=18;
# 3
update user set sex='男' where id=2;
# 4
update user set age=22,address='河南省郑州市' where id=3;
# 5
update user set age=age+1;
删除数据
#删除所有的数据
delete from 表名;
#按条件删除数据
delete from 表名 where 条件;
例:
(1)在数据库中shopping创建一个用户表user2,表字段有编号、用户名、密码,再增加3条数据;
(2)删除表内编号为1的这条数据,再删除用户名为Andy的这条数据;
(3)使用命令删除表内所有数据,观察效果。
###################删除数据########################
# 使用库
use shopping;
# 创建表
create table if not exists user2(
id int,
username varchar(20),
password varchar(20)
);
show tables;
# 新增数据
insert into user2(id,username,password) values (1,'Andy','123456'),(2,'Jerry','666777'),(3,'Marry','888999');
# 删除一条数据
delete from user2 where id=1;
delete from user2 where username='Andy';
# 清空所有数据
delete from user2;
# 或用truncate清空数据
truncate table user2;
问题: 思考delete和truncate删除数据的区别?
delete是逐条的删除数据,删除数据后仍然占用空间,且下次插入数据时,不是从1开始;而truncate是直接删除整个表的内容
版权归原作者 木鬼与槐 所有, 如有侵权,请联系我们删除。