MySQL的基本操作-增删改创
1、MySQL的登录
语法:mysql -h ip地 -u用户名 -p密码
例:mysql -h 59.34.56.11 -u root -p root
2、查看所有的表
语法:SHOW [FULL] TABLES [{FROM|IN} 数据库名] [LIKE 规则 | WHERE 条件];
full:以完整格式显示表的名称和类型
例:show full tables from neusoft1 where tables_in_neusoft1 = 'student1';
show tables like '%s%';
3、查看表结构
语法:DESC 表面 [列名];
DESC:DESCRIBE
例:DESC student1 stuno;
4、查看表的详细定义
语法:SHOW CREATE TABLE student1;
5、表的修改
a).添加列
语法:ALTER TABLE 表名 ADD ([column]列名1 类型1,列名2 类型2,......,列名n 类型n);
在某一列的前/后添加:ALTER TABLE 表名 ADD [column] 列名 类型 [first|after] 指定列名;
first是添加为首列,如:alter student1 add sex char(2) first;
alter student1 add (sex char(2) after stuname);
b).删除列
语法:alter table 表名 drop [column] 列名;
例:ALTER TABLE student DROP asid;
c). 修改列定义
语法:alter table 表名 modify [column] 列名 数据类型;
[column]可写可不写,不可一次修改多个列属性
如修改后的长度<原定义的长度,可能造成精度损失/数据更改(如小数位数减少,数据截断)
d).修改列名
语法:Alter table 表名 change 原列名 新列名 数据类型;
alter table student1 change adress newadress char(10);
alter table student1 change newadress newadress varchar(20);
在修改列名的时候,也可以修改属性,或者只修改属性不修改列名
e).修改列的顺序
语法:Alter table 表名 modify 列名1数据类型 first|after 列名2;
例1:将sal修改为表的第一列
Alter table emp modify sal float(4,2) first;
例2:将comm字段放在mgr的后面
Alter table modify comm float(4,2) after mgr;
f).修改表名
语法:Alter table 原表名 rename [to] 新表名;
To可写可不写,没有影响
6、添加数据
a).插入单条数据
语法格式:insert [into] 表名(列名1,列名2,…)values(值1,值2,…);
1) 当插入数据为日期或者字符串时,需要加上单引号;
2) 列与值需要一一对应,不插入值时输入null或’’;
3) into可以省略,但由于MySQL是不规范的语法格式,省略可能在后续进行数据迁移时会造成错误
例:CREATE TABLE emp(
empno int(4),
ename varchar(5),
job varchar(10),
mgr int(4),
hiredate date,
sal float(9,2),
comm float(9,2),
deptno int(3));
Insert into emp(empno,ename,hiredate,sal) values(7788,’TOM’,’2019-12-12’,3456);
b).插入多条数据
1) 利用values子句插入多条记录
语法:insert into 表名 (列1,列2…) values (列1值1,列2值1…), (列1值2,列2值2…) ,...;
例:insert into emp(empno.ename) values(1234,'allen'),(2345,'pirce'),(3456,'carte');
2) 利用select子句插入多条数据(复制)
语法:insert into 表名(列1,列2,…..) select 列1,列2,….. from 表名;
例1:Insert into emp(empno) select stuno from student;
例2:INSERT INTO emp_back SELECT * FROM emp WHERE hiredate>'1982-01-01';
3) 利用load子句批量录入数据
语法:load data infile 文件地址 into table 表名;
例:
mysql> load data infile "I:\a.txt" into table t1; |
a、在制表符处把行分解为列;
b、在新行处寻找行的边界
c、不跳过任何行前缀
7、插入数据的扩展
a).利用set插入数据
语法格式:Insert into 表名 set 列名1=值1, 列名1=值1,…;
insert into emp set empno=1111,ename=KOBE0,job=MANAGER,MGR=1000,HIREDATE=2019-01-01,SAL=2000,DEPTNO=10;
b).使用replace插入单条记录
Replace into 表名(列1,列2) values(值1,值2);
replace into student(stuno,stuname) values(1002,'allen');
c).使用replace插入多条记录
Replace into 表名(列1,列2…) values (列1值1,列2值1…), (列1值2,列2值2…) ,...;
replace into student(stuno,stuname) values(1002,'allen'), (1003,'carte');
8、数据修改
语法格式
全部修改 |
Update 表名 set 列名1=值1, 列名2=值2,……; |
局部修改 |
Update 表名 set 列名1=值1, 列名2=值2,……where 条件; |
update student set stuno=0001;
update student set stuno=1001 where stuname='carte';
9、删除/截断
a).delete语法格式
全部删除 |
Delete from 表名; |
局部删除 |
Delete from 表名 where 条件; |
b).truncate语法格式
语法格式 |
Truncate [table] 表名; →类似于全部删除 |
Q:delete语句和truncate语句的区别?
Y:均能实现删除表中的全部数据
N1:delete语句可以实现带条件的部分删除,而truncate只能清除所有记录
N2:truncate清除数据后,再向表中插入记录时,自动增加的字段默认从1开始;而使用delete语句删除记录后,再向表中插入记录时,自增字段的值会从(之前该字段的最大值)+1
N3:使用delete语句每删除一行记录,都会记录在系统操作日志中;而truncate语句清除数据时,不会在日志中记录删除内容。若要清除表中所有的数据,truncate语句效率高于delete语句。
10、创建表
Create table [if not exists] 表名(
列名1 数据类型1 列属性1,
列名2 数据类型2 列属性3,
……
);
列属性
1)、默认值:default 默认值
2)、注释:commend 注释内容
3)、自动增序:auto_increment(只对整数类型有效,且要和主键一起使用)
4)、约束
范例:
Create table if not exists t1(
age char(3) default 23,
Sid int comment'用户编号',
Sname varchar(10) default'无名氏'
);
11、约束
约束是对表的强制规定
数据完成性:实体完整性、域完整性、参照完整性
实体完整性:保证表中的每一行数据在表中是唯一的
域完整性:数据库中的列必须满足某种特定的数据类型或约束。约束又分为强制域完整性越苏、限制格式或限制可能值得范围。
参照完整性:在输入/删除记录时,包含主关键字的主表 和 包含外关键字的外表
约束的分类:
完整性类型 |
约束类型 |
描述 |
约束对象 |
域完整性 |
Not null |
列的值不能为空 |
列 |
Auto_increment |
列值自动增加 |
||
Default |
默认值 |
||
实体完整性 |
Primary key |
主键约束,表示唯一,不能为空 |
行 |
Unique |
唯一键,表示唯一,可为空 |
||
参照完整性 |
Foreign key |
外键约束 |
表与表之间 |
作者:kerwin-chyl
文章链接:https:////www.cnblogs.com/kerwin-chyl
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。