mysql增删改查

目录:
    创建新的表 

MYSQL数据库管理

 
mysql -u root -p 123123(密码)
 
查看数据库信息
show databases;
(大部分SQL操作命令必须以;结束)
0
 
查看数据库中的表信息
USE 数据库名 #切换到数据库中
SHOW TABLES
0
show tables in mysql
 
显示数据表的结构(字段)
DESCRIBE [数据库表名.]表名
也可以用:
desc user; → desc mysql.user;
0
 
 
Field:字段名称
type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)
 
常用的数据类型:
int:整型 用于定义整数类型的数据
float:单精度浮点4字节32位 准确表示到小数点后六位
double:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据。 20字节 4
varchar:可变长度的字符类型 20 4
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位 指定长度数组
#####Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
char:速度快,设置20,你用8,他会自动补全到20
varchar:速度慢,你8就是8,不会补到20
 
主键是唯一的,但主键可以由多个字段构成
//
MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“.frm”、“.MYD”和“.MYI”。
 
MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。
 
“.MYI”文件也是专属于 MyISAM 存储引擎的,主要存放 MyISAM 表的索引相关信息。对于 MyISAM 存储来说,可以被 cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM 表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。
 
MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理件 (frm,myd,myi)。 每个表都有且仅有这样三个文件做为 MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。
 
另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。
//

SQL语句

SQL语言分类:

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
 

1、DDL:数据定义语言,用于创建数据库对象,如库、表、索引等

create 创建
drop 删除(注意删除的区别)
alter 修改
0

创建新的数据库

格式:
CREATE DATABASE 数据库名;
示例:
create datebase abc;

创建新的表

格式:
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
示例:
CREATE DATABASE abc;
USE abc;
 
CREATE TABLE aaa (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT'', PRIMARY KEY (id));
CREATE TABLE aaa (id int NOT NULL PRIMARY KEY,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT'' );
DESC abc; #查看abc字段
#NOT NULL 不允许为空值
#DEFAULT'' 默认值为空
PRIMARY KEY :主键一般选择没有重复并且不为空值的字段
0
 
 
 

删除指定的数据表

use 数据库名
DROP table ky23; 删除表
格式:
DROP TABLE [数据库名.] 表名;
#如不用USE进入库中,则需加上数据库名
0
 

删除指定的数据库

格式:
DROP DATABASE 数据库名;
示例:
drop database abc;
 

2、DML数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据

insert
update
delete
 

插入数据

格式:
INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);
示例:
insert into ky23 (id,name,score,passwd) values(1,'lyl',80.5,PASSWORD('123456'))
insert into ky23 (id,name,score,passwd) values(2,'gsx',80.5,123456);
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
 
如果是对着表填数据,并且是一 一对应,则可以不填入(id,name,score,passwd)
0
 
select * from aaa #查看aaa表的数据
0
 

修改、更新数据表中的数据记录

格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
示例:
UPDATE zzz SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE zzz SET name='wangxiaoer',passwd='' WHERE id=3;
update aaa set name='xhx',passwd=' ' where id=2; (如果不加(即where)条件,则全部数据改变)
0
 

在数据表中删除指定的数据记录

格式:
DELETE FROM 表名 [WHERE 条件表达式];
示例:
delete from aaa where id=2;
select * from aaa;
0
 
delete与drop区别:
delete 保存字段,比如有1个机构,删除的是他机构下的人,机构本身在
drop 是把整个结构都给干了
 

3、DQL数据查询语言

select

查询

格式:
SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];
示例:
insert into aaa VALUES(2,'a',24,123);
insert into aaa VALUES(3,'b',24,123);
insert into aaa VALUES(4,'c',24,123);
insert into aaa VALUES(5,'d',24,123);
 
select score,name from ky23 where id =6
select * from ky23 limit 2; (前2行)
select * from ky23 limit 2,3; #显示第二行后的前3行
0
末尾/G可以竖排显示,/G后面别加;
如果加了;,会多个报错,但是显示结果一样
0
 

4、DCL数据控制语言

修改表名和表结构(ALTER):↓↓↓↓

改表名

ALTER TABLE 旧表名 RENAME 新表名; #注意不是修改的数据
示例:
ALTER TABLE ZZZ RENAME YYY;
0
0
 

扩展表结构(增加字段)

ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
ALTER TABLE yyy ADD address varchar(50) NOT NULL default '地址不详';
0
 
 

修改字段(列)名,添加唯一键

格式:
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)
Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)
 
ALTER TABLE yyy CHANGE name user_name varchar(10) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
0
//
ALTER TABLE 表名 modify column 字段名 类型。
数据库中表 字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有数据出错,最好别修改数据类型)
//

删除字段

格式:
ALTER TABLE 表名 DROP 字段名;
示例:
ALTER TABLE aaa DROP passwd;
0
##案列扩展
use school;
create table if not exists (
id int(4) zerofill primary key auto_increment, #指定主键的第二种方式
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
alter table ky23 drop passwd;
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且
添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL
 

数据表高级操作

克隆表

create table yyy2 like yyy; #复制格式(字段),通过LIKE方法,复制yyy表结构生成yyy2表
insert into yyy2 select * from yyy; #备份内容
克隆表,将数据表的数据记录生成到新的表中
CREATE TABLE test02 (SELECT * from test); #复制test 表数据到test02中
这2种,第一种是完全的复制,第二种是复制了,但是没有主键,唯一键等等
show create table test02\G #获取数据表的表结构、索引等信息
SELECT * from test02;
 

清空表,删除表内的所有数据

方法一:
delete from yyy3;
#DELETE清空表后,返回的结果内有删除的记录条目;
DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
方法二:
truncate table test01;
#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,
因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,
ID会从1开始重新记录
小小结:↑↑↑
#删除类型
drop table table_name
1)属于DDL
2)不可回滚(无法恢复)
3)不可带where
4)表内容和结构删除
5)删除速度快
truncate table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容删除
5)删除速度快
delete from table_name
1)属于DML
2)可回滚(可恢复)
3)可带where
4)表结构在,表内容要看where执行的情况
5)删除速度慢,需要逐行删除
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
#删除
速度
drop> truncate > delete
安全性
delete 最好
创建临时表
临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
PS:无法创建外键
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, ...]
[, PRIMARY KEY (主键名)]);
sql 写入——》数据表中—》先把数据保存在内存中—》写入到磁盘
insert into info ——》info这张表,会先复制一份表数据到内存里面,给我们进行修改
---》敲完回车之后,确定提交了,才会写入数据表中—》再保存在磁盘里面
create table test01—》只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉
示例:
create temporary table xxx (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
insert into xxx values (1,'zhangsan',123456,'running');
select * from test03;
show tables;
quit
select * from test03;
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且
添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL
posted @ 2022-11-25 16:02  七分人格  阅读(266)  评论(0编辑  收藏  举报