MySQL数据库操作1.0

一、对库的管理

1.创建一个库:

CREATE DATABASE IF NOT EXISTS student;#student是库的名字

2.对于库的修改,一般是不修改库的名字,因为修改库的名字可能会导致库的数据丢失(如果非要修改的话,先关闭服务器,在然后再此电脑里面找该版本的date直接修改文件的名字,

在这里插入图片描述
这时候直接重命名就行了,然后再打开服务器),可以该的有库的字符集:

ALTER DATABASE student CHARACTER SET gbk;#这个是把字符集修改为gbk
ALTER DATABASE student CHARACTER SET utf8;#这个是把字符集修改为utf8

3.库的删除

例:

DROP DATABASE IF EXISTS student;

4.修改字符集

ALTER DATABASE student CHARACTER SET gbk;
ALTER DATABASE student CHARACTER SET utf8;

第一条指令是修改为gbk,第二条指定是修改为utf8

二、对表的管理

1.修改列名

ALTER TABLE book CHANGE COLUMN book_name book_Name VARCHAR(20);

其中book是表名,book_name是列名,book_Name是修该后的名字,VARCHAR(20)是列的类型,其他的都是通用的格式

2.修改列的类型或者说是约束

例:

ALTER TABLE book MODIFY COLUMN book_Name INT;

book还是表名,MODIFY是修改列名的关键字,book_Name是列名,后面的类型名就是想要修改成的类型名字

3.添加一个新的列

例:

ALTER TABLE book ADD COLUMN book_id INT;

book是表名,ADD是添加列的关键字,book_id是添加列的名称,后面跟的int是新添加的列的类型

4.删除列名

例:

ALTER TABLE book DROP COLUMN book_id;

book是列名,DROP是删除表的关键字,book_id是列名,这样就可以删除列

5.修改表名

例:

ALTER TABLE book RENAME TO books;

book是表名,RENAME是修改表名的关键字后面跟 TO表示想要修改成什么样的名字books是新的表名

6.删除表

例:

DROP table IF EXISTS aaa;

里面的if exists的意思是是否存在 判断表aaa是否存在,如果不存在就不执行,存在就会删除,防止程序报错

三、复制表

1.复制表的结构

CREATE TABLE aaa LIKE book;

这样就会创建一个和book结构一样的表aaa

2.复制表的结构和数据

(1)、复制的是全部的数据
例:

CREATE TABLE aaa	SELECT * FROM book;

创建一个表aaa,表aaa的就够和book的结构一样,里面的数据也一样,就相当于把book里面的数据粘贴复制到aaa中一样。
(2)、复制部分结构和数据
例:

CREATE TABLE aaa SELECT book_Name FROM book;

这个复制的是表book中的book_name的数据,其中结构也是只有book_name这一列
(3)、仅仅复制表中的结构不复制数据
例:

CREATE TABLE aaa SELECT book_Name FROM book WHERE 1=2;

1=2表示不成立,即旧表中的数据都不符合要求,最后值得到了表的结构
(4)、复制表的数据到新表(信标是建好的,并且和旧表的结构一样)

INSERT INTO 新表 SELECT * FROM 旧表

四、对列的管理

1.对数据的管理(删除)

(1)、删除表中的数据,但是不改变表的结构,只是单纯的删除表里面的东西
单表删除:
delete from 表1 where 筛选条件
加了筛选条件后就是删除的筛选出来的数据,如果说时学生管理的话,就是删除学生的学号、姓名、年龄等等,与这个人相关的信息全部删除,不影响其他的
多表删除truncate
truncate table 表名
在sql92中
delete 表1的别名,表2的别名 (如果想要删除表1的数据就写表1的别名,想要删表2的就写表2的别 名,都删就都写)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
在sql99中
delete 表1的别名,表2的别名 #如果想要删除表1的数据就写表1的别名,想要删表2的就写表2的别名,都删就都写
from 表1别名 inner/left/right join 表2别名 on连接条件
where 筛选条件
1.delete可以加where语句,truncate不能加where语句
2.truncate是删除全部数据,当删除全部数据是,truncate的效率高
3.假如删除的表中有自增长列,
如果用delete删除后,再加入数据,自增长列的值会从断点(即继续连接上一次的值开始增加)处开始
如果使用truncate删除后,再加入数据,自增长列的值从1开始
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚(应该是可以撤回的意思)

2.对列的管理

表级约束和列级约束的区别:
在这里插入图片描述
(那个表格我也没弄好,就截了个图)

CREATE DATABASE test1;
CREATE TABLE test1_1(
	id INT NOT NULL PRIMARY KEY,#主键
	NAME VARCHAR(20) NOT NULL,
	seat INT UNIQUE,
	age INT DEFAULT 18
);

查看表结构的详细信息

DESC test1_1;

添加数据

INSERT INTO test1_1 VALUES(1,'大牙',1,19);
INSERT INTO test1_1 (id,NAME,seat) VALUES(2,'张三',2);

查看表的全部数据

SELECT * FROM test1_1;

查看具有唯一性的列

SHOW INDEX FROM test1_1;

删除表

DROP TABLE IF EXISTS test1_1;
CREATE TABLE test1_1(
	id INT NOT NULL ,
	NAME VARCHAR(20) NOT NULL,
	seat INT,
	age INT DEFAULT 18
);

删除表

DESC test1_1;

修改约束条件

ALTER TABLE test1_1 MODIFY COLUMN NAME VARCHAR(15) NOT NULL;

#修改默认约束

ALTER TABLE test1_1 MODIFY COLUMN age INT DEFAULT 19;

#添加主键
#1.列级约束

ALTER TABLE test1_1 MODIFY COLUMN id INT NOT NULL PRIMARY KEY;

#2.表级约束

ALTER TABLE test1_1 ADD PRIMARY KEY(id);

#添加唯一
#1.列级约束

ALTER TABLE test1_1 MODIFY COLUMN seat INT UNIQUE;

#2.表级约束

ALTER TABLE test1_1 ADD UNIQUE(seat);

#添加外键(emp5是主表,test1_1是从表)
#alter table 表名 add【constraint 约束名】约束类型(字段名) 【外键的引用】

ALTER TABLE test1_1 ADD CONSTRAINT test1_1_age FOREIGN KEY(age) REFERENCES test.emp5(employee_id);

#三、修改表时的删除约束
1、删除非空约束

ALTER TABLE test1_1 MODIFY COLUMN NAME VARCHAR(20);

2、删除默认约束

ALTER TABLE test1_1 MODIFY COLUMN age INT; 

3、删除主键

ALTER TABLE test1_1 DROP PRIMARY KEY;

4、删除唯一键

ALTER TABLE test1_1 DROP INDEX seat;

5、删除外键

ALTER TABLE test1_1 DROP FOREIGN KEY test1_1_age;

#向emp2中的id列添加primary key约束

CREATE TABLE emp2(
	id INT
);
ALTER TABLE emp2 ADD PRIMARY KEY(id);
DESC emp2;

#向表dept2的id列中添加primary key约束

CREATE TABLE dept2(
	id INT PRIMARY KEY
);

#向表emp2中添加列dept_id,并在其中定义foreign key约束,
#与其相关的列时dept2表中的id列

ALTER TABLE emp2 ADD COLUMN dept_id INT;
ALTER TABLE emp2 ADD CONSTRAINT dept2_emp2_id FOREIGN KEY(dept_id) REFERENCES dept2(id); 
DESC emp2;

标识列

#设置标识列
/*
特点
1、标识列必须和一个键搭配
2、一个表中只能有一个标识列
3、标识列的搭配类型必须是数值型
4、可以修改标识列的自增长量SET auto_increment_increment=3;

*/

DROP TABLE IF EXISTS test1_2;
CREATE TABLE test1_2(
	id INT,
	NAME VARCHAR(20)
);

#删除表中的数据

TRUNCATE TABLE test1_2;

#向表中添加数据
#不用写入id,直接写入name,id会自动填充,每次加1(也可以改变首个id的值)

INSERT INTO test1_2 VALUES(NULL,'张三');

#因为不写列的话,会自动填充列,又要保持列和我们所写的值的数量保持一致
#如果不想要写id那么就需要自己写不包含id的列

INSERT INTO test1_2 (NAME) VALUES('张三');

#遍历数据

SELECT * FROM test1_2;

#运行下面的会出现自增长的量(每次增加的差值,默认为1)

SHOW VARIABLES LIKE '%auto_increment%';

在这里插入图片描述

#可以设置自增长量的值

SET auto_increment_increment=3;
SET auto_increment_increment=1; 

#修改表时设置表示列

ALTER TABLE test1_2 MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;

#删除标识列

ALTER TABLE test1_2 MODIFY COLUMN id INT;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值