MySQL进阶(DDL与DML)

目录

1.DDL

1.1对库的管理

1.2对表的操作

1.3常用的数据类型(补充)

1.4约束

2.DML

2.1.向表中插入数据:(两种方式)

2.2.修改语句:

2.3.删除语句

2.4.delete  PK    truncate【面试题】


        人生百味,世事无常,犹如多端的天气,生活窘迫、工作压抑,只不过是人生中的风雨罢了。阳光,总在风雨后只要你坚持着目标,坚持着自己的理想,总会在风雨过后,拥抱属于自己的灿烂阳光。

前面讲解了数据库知识中,对表中的数据进行增删改查,接下来将为大家介绍两种新语法:DDL,DML它们是对库和表进行操作。如果大家需要请自行收藏起来。

1.DDL

        DDL语言也就是数据库定义语言,就是用来操作数据库和对表的管理,比如对数据库的增删改查表的增删改查

1.1对库的管理

1.库的创建:

创建数据库并指定字符集:
create database if not exists 数据库名  character set 字符集名

2.库的查看:

查询所有数据库名称:
show databases;

3.查询或者修改某个数据库的字符集:

查询某个数据库的字符集:
show create database 数据库名;

修改数据库字符集:
alter database 数据库名 character set 字符集名

4.删除数据库:

删除数据库:
drop database  if exists  数据库名;

5.查看当前正在使用的数据库:

查看当前正在使用的数据库:
select database()

6.库的使用:

use 数据库名称

1.2对表的操作

1.创建表:

表的创建:
create table 表名(字段名 数据类型 【字段约束】);

2.查看当前库中所有表:

查看当前库中所有表:
show tables ;

3.查看表的结构:

desc 表名;

4.修改表的名称:

修改表名:
alter table 表名 rename to 新的表名

5.修改表的字符集:

alter table 表名 character set 字符集名

6.添加列:

添加列:
alter table add column 列名 数据类型 【约束】

7.修改列的名称和类型:

修改列名称 类型:
alter table 表名 change 列名 新列别 新数据类型;

alter table 表名 modify 列名 新数据类型;

8.删除列和删除表:

删除列:

alter table 表名 drop 列名;

删除表:

drop table if exists 表名;

1.3常用的数据类型(补充)

1.int 整型

2.double 小数类型

3.date 日期型:只包含年月日。yyyy-MM-dd

4.datetime 日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss

5.timestamp 时间搓类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss

注意:

    如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

6.varchar 字符串

1.4约束

1.概念

 对表中的数据进行限定,保证数据的正确性、有效性和完整性。

2.分类

1.主键约束 primary key

2.非空约束 not null

3.唯一约束unique

4.外键约束 foreign key

具体代码实现:

        1.列级约束

用法:
CREATE TABLE 表名(
	字段名  字段类型  约束,
	字段名  字段类型,
	表级约束
	

);


举例:
CREATE TABLE stuinfo(
	id INT PRIMARY KEY,
	stuname VARCHAR(20) NOT NULL,
	gender CHAR(1) CHECK(gender='男' OR gender='女'),
	seat INT UNIQUE,
	age INT DEFAULT  18,
	majorid INT  REFERENCES major(id)


);

        2.表级约束

语法:在所有字段的最下面:


constraint 约束名  约束类型 (字段名)


举例:
CREATE TABLE stuinfo(
	id INT ,
	stuname VARCHAR(20),
	gender CHAR(1) ,
	seat INT,
	age INT ,
	majorid INT ,
	CONSTRAINT pk PRIMARY KEY(id),
	CONSTRAINT uq UNIQUE(seat),
	CONSTRAINT pk  FOREIGN  KEY(majorid) REFERENCES major(id)

  3.通用格式

CREATE TABLE 表名(

	id INT PRIMARY KEY,
	stuname VARCHAR(20) NOT NULL,
	gender CHAR(1) CHECK(gender='男' OR gender='女'),
	seat INT UNIQUE,
	age INT DEFAULT  18,
	majorid INT  ,
	
CONSTRAINT pk  FOREIGN  KEY(majorid) REFERENCES major(id)  

 这是创建表时,添加约束,当然修改表时依然能够添加约束,这里简单的提一下:

1.列级约束(不支持外键)
alter table 表名 modify column 字段名  字段类型 新约束
2.表级约束(非空,默认不支持)
alter table 表名 add  【constraint 约束名】 约束类型(字段名)【外键引用】

 

1.添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL

2.添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18

3.添加主键
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;

ALTER TABLE stuinfo ADD COLUMN PRIMARY KEY(id);

4.添加唯一键

ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;


5.添加外键

ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCES major(id);

4.修改表时删除约束:


1.删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL

2.删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT 

3.删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;

4.删除唯一键

ALTER TABLE stuinfo DROP INDEX seat ;


5.删除外键

ALTER TABLE stuinfo DROP FOREIGN KEY(majorid) ;

==================================================================================================================================================

补充

        标识列: 又叫自增长列
含义:可以不用手动的插入值,系统提供默认的序列值
特点:
1.标识列不一定和主键搭配,但要求是一个key
2.一个表至多一个
3.标识列的类型只能是数值型
4.标识列可以通过set auto_increment_increment=3设置步长

代码实现:

一.设置步长(一般不设置):

SET auto_increment_increment=3;



二.修改表时设置标识列:

ALTER TABLE tab_id MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;



三.修改表时删除标识列:

ALTER TABLE tab_id MODIFY COLUMN id INT  ;

2.DML

 DML 是对数据库的增删改操作,即添加表中的数据,删除表中的数据,修改表中的数据。
主要关键字,insert(添加),delete(删除),update(修改)。

2.1.向表中插入数据:(两种方式)

语法一:
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

举例:
INSERT INTO `beauty` 
VALUES(14,'刘哲铭','女','1990-12-12','189888888',NULL,2),
(15,'吴宝生','女','1990-12-12','189888888',NULL,2);
=================================================================
语法二:
insert into 表名 set 列名=值,列名=值......

举例:
INSERT INTO `beauty`
SET id=19,NAME='刘涛',phone='999';

2.2.修改语句:

1.修改单表的记录:

update 表名 set 列=值,列=值......  where  筛选条件 

例子:
UPDATE `beauty` SET `phone`='321321' WHERE `name`='某某';

2.修改多表的记录(SQL99语法):
update 表一 别名
inner |left|right| join 表二 别名
on 连接条件
set 列=值
where 筛选条件;

例子:
修改张无忌的女朋友的手机号为11111:

UPDATE `beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id`=bo.`id`
SET b.`phone`='111111111111111111'
WHERE bo.`boyName`='张无忌';

2.3.删除语句

方式一:delete
语法: 
单表的删除:

delete from 表名 where  筛选条件

多表的删除【补充】
sql92:delete 表一的别名 
from 表一 别名
where 连接条件
and 筛选条件

sql99:
delete 表一的别名 ,表二的别名
from 表一 别名
inner | left | right| join 表二 别名 
on 连接条件
where 筛选条件

#方式二:truncate
清空数据,删除所有条件
truncate table 表名

2.4.delete  PK    truncate【面试题】

1.delete 可以加where 条件,truncate不能加

2.truncate删除,效率高一丢丢

3.加入说要删除的表中有自增长列
如果用delete 删除后。在插入数据,自增长列的值从断点开始,而truncate删除后,在插入数据。自增长列的值从1开始。

4.truncate 删除没有返回值

5.truncate删除不能回滚,delete删除可以回滚

=========================================================================        心灵毒鸡汤:没有一条路是平坦的,没有一座山是毫无崎岖的,而大海更不会是风平浪静的。人生之路,荆棘遍地,坎坷泥泞不可计数,唯有坚强者才能披荆斩棘,扫平坎坷走到路的尽头 。      

MySQL进阶(DDL与DML)_第1张图片

你可能感兴趣的:(mysql,数据库,database)