MySQL的基本操做-增删改创

一、MySQL的登陆

语法:mysql  -h ip地 -u用户名 -p密码html

例:mysql -h 59.34.56.11 -u root -p rootmysql

 

二、查看全部的表

语法:SHOW [FULL] TABLES [{FROM|IN} 数据库名] [LIKE 规则 | WHERE 条件];sql

full:以完整格式显示表的名称和类型数据库

例:show full tables from neusoft1 where tables_in_neusoft1 = 'student1';spa

show tables like '%s%';日志

 

三、查看表结构

语法:DESC 表面 [列名];htm

DESC:DESCRIBE对象

例:DESC student1 stuno;blog

 

四、查看表的详细定义

语法:SHOW CREATE TABLE student1;ip

 

五、表的修改

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 表名 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 原表名 rename [to] 新表名;

To可写可不写,没有影响

 

六、添加数据

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 表名;

例:Insert into emp(empno) select stuno from student;

3) 利用load子句批量录入数据

语法:load data infile 文件地址 into table 表名;

 

例:

mysql> load data infile "I:\a.txt" into table t1;

 

 a、在制表符处把行分解为列;

b、在新行处寻找行的边界

c、不跳过任何行前缀

 

七、插入数据的扩展

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');

 

八、数据修改

语法格式

所有修改

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';

 

九、删除/截断

a).delete语法格式

所有删除

Delete from 表名;

局部删除

Delete from 表名 where 条件;

b).truncate语法格式

语法格式

Truncate [table] 表名;         →相似于所有删除

Qdelete语句和truncate语句的区别

Y:均能实现删除表中的所有数据

N1:delete语句能够实现带条件的部分删除,而truncate只能清除全部记录

N2:truncate清除数据后,再向表中插入记录时,自动增长的字段默认从1开始;而使用delete语句删除记录后,再向表中插入记录时,自增字段的值会从(以前该字段的最大值)+1

N3:使用delete语句每删除一行记录,都会记录在系统操做日志中;而truncate语句清除数据时,不会在日志中记录删除内容。若要清除表中全部的数据,truncate语句效率高于delete语句。

 

十、建立表

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'无名氏'

);

 

十一、约束

约束是对表的强制规定

数据完成性:实体完整性、域完整性、参照完整性

实体完整性:保证表中的每一数据在表中是惟一的

域完整性:数据库中的必须知足某种特定的数据类型或约束。约束又分为强制域完整性越苏、限制格式或限制可能值得范围。

参照完整性:在输入/删除记录时,包含主关键字的主表 和 包含外关键字的外表

 

约束的分类:

完整性类型

约束类型

描述

约束对象

 

域完整性

Not null

列的值不能为空

 

Auto_increment

列值自动增长

Default

默认值

实体完整性

Primary key

主键约束,表示惟一,不能为空

Unique

惟一键,表示惟一,可为空

参照完整性

Foreign key

外键约束

表与表之间

 

a).非空约束

1)、建表时建立非空约束

Create table if not exists t3(

         age char(3) not null,

         Sid int comment'用户编号',

         Sname varchar(10) default'无名氏'

);

插入值:

mysql> insert into t3(sid,sname) values(1001,'byd');

ERROR 1364 (HY000): Field 'age' doesn't have a default value

mysql> insert into t3(age,sid,sname) values(null,1001,'byd');

ERROR 1048 (23000): Column 'age' cannot be null

mysql> insert into t3(age,sid,sname) values(105,1001,'byd');

Query OK, 1 row affected (0.01 sec)

 2)、增长非空约束

语法:alter table 表名 modify 列名 数据类型 not null;

Create table if not exists t4(

    Sid int comment'用户编号',

         Sname varchar(10) default'无名氏'

);

alter table t4 modify Sid int not null comment '用户编号';

3)、删除非空约束

语法:Alter table 表名 modify 列名 数据类型 null;

 

 b).主键约束

一个表中通常只有一个主键,主键约束不可为空,自增序必须和主键一块儿使用

Create table if not exists t6(

    Sid int primary key auto_increment comment'用户编号',

    Sname varchar(10) default'无名氏',

    age char(3) not null

);

mysql> insert into t6(sname,age) values('BRA',26);

1)、建立联合主键约束

Create table if not exists s6(

    Sid int,

    Sname varchar(10) default'无名氏',

    age char(3) not null,

constraint pk_s6 primary key (Sid,Sname)

);

2)、添加主键约束

语法格式:alter table 表名 add constraint 约束名 primary key(列名1,列名2,…);

alter table emp add constraint pk_emp primary key (empno,ename);

alter table emp add constraint uk_emp unique key (mgr);

3)、删除主键约束

语法:Alter table 表名 drop primary key;

Alter table emp drop primary key;

 

做者:kerwin-chyl

文章连接:https:////www.cnblogs.com/kerwin-chyl

本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。

相关文章
相关标签/搜索