02.11_学习Java的day32(详解)

DDL

#DDL 数据定义语言
#一、对数据库的操作
#显示所有的数据库
SHOW DATABASES;
/*使用某个数据库
语法:
   use 数据库名
*/
USE mydb;
/*
创建数据库
语法:
create database 数据库名
在创建数据库的同时指定字符集
create database 数据库名 charset 'utf8'
*/
CREATE DATABASE mydb;
/*
删除数据库
语法:
drop database 数据库名
*/
DROP DATABASE mydb;
/*
查询某个数据库中所有的表格
语法:
show tables from 数据库名
查询当前数据库中所有的表格
语法:
show tables
*/
SHOW TABLES;
SHOW TABLES FROM test;

#二、对数据表的操作
/*
[在某个数据库中]创建表格
语法:
create table [数据库名.]表名(
 字段1 数据类型,
 字段2 数据类型,
 字段3 数据类型,
 ...
)
*/
#在当前数据库中创建一个表格
CREATE TABLE users(
id INT,
username VARCHAR(10)
)
#在test数据库中创建一个表格
CREATE TABLE test.users(
id INT,
username VARCHAR(10)
)
/*
删除表格
语法:
drop table [数据库名.]表名
*/
#删除当前数据库中的users表
DROP TABLE users;
#删除mydb数据库中的users表
DROP TABLE mydb.users;

/*
查看当前数据库中的表的结构
语法:
describe 表名
或者
desc 表名
*/
DESCRIBE employees;
DESC depts;

/*
在当前数据库中的表中添加一列
语法:
alter table 表名称 add [column] 字段名 数据的类型(会将字段添加到表的最后面)
alter table 表名称 add [column] 字段名 数据的类型 after 另一个字段(会将字段添加到某一个字段的后面)
alter table 表名称 add [column] 字段名 数据的类型 first(会将字段添加到最前面)
*/
ALTER TABLE users ADD COLUMN `password` VARCHAR(10);
ALTER TABLE users ADD phone_no VARCHAR(11) AFTER username;
ALTER TABLE users ADD address VARCHAR(100) FIRST;

/*
删除当前数据库中的表的字段
语法:
alter table 表名 drop [column] 字段名
*/
ALTER TABLE users DROP address;

/*
修改当前数据库中的表的字段的数据类型
语法:
alter table 表名 modify [column] 字段名 数据类型
修改当前数据库中的表的字段的位置
语法:
alter table 表名 modify [column] 字段名 字段的类型 after 另一个字段名
alter table 表名 modify [column] 字段名 字段的类型 first
*/
ALTER TABLE users MODIFY phone_no INT;
ALTER TABLE users MODIFY phone_no INT AFTER PASSWORD;

/*
修改当前数据库中表的字段的名字
语法:
alter table 表名 change [column] 旧字段名 新字段名 新字段的类型 
*/
ALTER TABLE users CHANGE phone_no phoneNo VARCHAR(11);

/*
修改当前数据库中的表名
语法:
alter table 旧表名 rename 新表名
rename table 旧表名 to 新表名
*/
ALTER TABLE users RENAME t_users;
RENAME TABLE t_users TO users;

DML

#DML:数据操作语言(增删改查的操作,必须要掌握)
#1.添加数据
/*
在当前数据库中的表中插入数据
语法:
一次性插入一条
insert into 表名 values(值1,值2,值3...);
一次性插入多条
insert into 表名 values(值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...);
注意:values中的值要与表名中的字段一一对应
通过指定具体的字段插入数据
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
*/
INSERT INTO users VALUES(1,'张三','123456','13838381438');
INSERT INTO users VALUES(2,'李四','123456','13838381438'),(3,'王五','123456','13838381438');
INSERT INTO users(id,username,PASSWORD) VALUES(4,'赵六','666666');
INSERT INTO users(id,username,PASSWORD) VALUES(5,'田七','888888'),(6,'王八','888888');



#2.删除数据
/*
删除当前数据库中的表的数据
语法:
#删除整个表中的数据
delete from 表名
truncate 表名
#删除指定的数据
delete from 表名 where条件 

删除整个表中的数据时delete和truncate的区别:
1)truncate删除的数据比delete快
2)通过truncate删除数据后不能回滚
3)delete是一行一行的删除数据;truncate是将表drop掉之后再创建一张新表
*/
DELETE FROM users WHERE id = 6;
DELETE FROM users;
TRUNCATE users;

#3.修改数据
/*
修改(更新)当前数据库中表的所有数据
update 表名 set 字段1=新值,字段2=新值,字段3=新值
修改(更新)当前数据库中表的指定数据
update 表名 set 字段1=新值,字段2=新值,字段3=新值 where条件
*/
UPDATE users SET phoneNo = '16666666666';
UPDATE users SET phoneNo = '18888888888' WHERE id = 1;
UPDATE users SET PASSWORD='777777' , phoneNo = '999999' WHERE id = 1;

#4.查询数据(查询时不建议使用select *)
/*
查询当前数据库中表中的所有数据
select * from 表名
通过指定字段查询当前数据库中表中的所有数据
select 字段1,字段2,字段3 from 表名

查询当前数据库中表中的指定数据
select * from 表名 where条件
通过指定字段查询当前数据库中表中的指定数据
select 字段1,字段2,字段3 from 表名 where条件
*/
SELECT * FROM users;
SELECT id,username FROM users;
SELECT * FROM users WHERE id = 3;
SELECT username AS 姓名,phoneNo 手机号 FROM users WHERE id = 3;

主键约束

#查看某个表中的约束
SELECT * FROM `information_schema`.`TABLE_CONSTRAINTS` WHERE table_name = 'c_pri';
#查看某个表中的索引
SHOW INDEX FROM mydb.`c_pri`;
#MySQL在创建主键约束、唯一约束、外键约束的同时会创建对应的索引
#一.主键约束 primary key
#创建主键约束
/*
语法:
1.在创建表的同时创建主键约束
create table 表名(
字段1 数据类型 primary key
字段2 数据类型
...
)
或
create table 表名(
字段1 数据类型
字段2 数据类型
...
primary key(字段名)
)
指定复合主键约束的语法(只能在所有字段的下面指定):
create table 表名(
字段1 数据类型
字段2 数据类型
...
primary key(字段1,字段2)
)

2.表创建之后如何创建主键约束
语法:
alter table 表名 add primary key(字段名)

主键约束的特点:
1)★唯一不能为null
2)★在一个表中主键约束只能有一个
3)创建的主键约束的名字是PRIMARY,同时对应的索引名也是PRIMARY
4)当创建复合主键约束的时候,约束的名字还是PRIMARY,但是只有多个字段的值都重复时才违反主键约束
5)删除主键约束的同时会删除主键索引
*/
CREATE TABLE c_pri(
id INT PRIMARY KEY,
username VARCHAR(10),
PASSWORD VARCHAR(10)
)

CREATE TABLE c_pri(
id INT,
username VARCHAR(10),
PASSWORD VARCHAR(10),
PRIMARY KEY(id)
)
#创建复合主键
CREATE TABLE c_pri(
id INT,
username VARCHAR(10),
PASSWORD VARCHAR(10),
PRIMARY KEY(id,username)
)

#表创建之后再添加主键约束
ALTER TABLE c_pri ADD PRIMARY KEY(id);

#删除主键约束
/*
语法:
alter table 表名 drop primary key;
*/
ALTER TABLE c_pri DROP PRIMARY KEY;

#删除表
DROP TABLE c_pri
#查看表的结构
DESC c_pri;

唯一键约束

#查看某个表中的约束
SELECT * FROM `information_schema`.`TABLE_CONSTRAINTS` WHERE table_name = 'c_uni';
#查看某个表中的索引
SHOW INDEX FROM mydb.`c_uni`;
#MySQL在创建主键约束、唯一约束、外键约束的同时会创建对应的索引
#二.唯一键约束 unique key
#创建唯一键约束
/*
语法:
1.在创建表的同时创建唯一键约束
create table 表名(
字段1 数据类型 unique key
字段2 数据类型
...
)
或
create table 表名(
字段1 数据类型
字段2 数据类型
...
unique key(字段名)
)
指定复合唯一键约束的语法(只能在所有字段的下面指定):
create table 表名(
字段1 数据类型
字段2 数据类型
...
unique key(字段1,字段2)
)

2.表创建之后如何创建唯一键约束
语法:
alter table 表名 add unique key(字段名)

唯一键约束的特点:
1)★唯一,但值可以为null
2)★在一个表中唯一键约束可以有多个
3)创建的复合唯一键约束的名字是第一个字段的名字,同时对应的索引名也是第一个字段的名字
4)当创建复合唯一键约束的时候,只有多个字段的值都重复时才违反唯一键约束
5)★删除唯一键约束需要通过删除唯一键索引的方式删除
*/
CREATE TABLE c_uni(
id INT PRIMARY KEY,
username VARCHAR(10) UNIQUE KEY,
PASSWORD VARCHAR(10)
);

CREATE TABLE c_uni(
id INT PRIMARY KEY,
username VARCHAR(10),
PASSWORD VARCHAR(10),
UNIQUE KEY(username)
);

#创建表的同时创建复合唯一键约束
CREATE TABLE c_uni(
id INT PRIMARY KEY,
username VARCHAR(10),
PASSWORD VARCHAR(10),
UNIQUE KEY(username,PASSWORD)
);

#删除唯一键约束
/*
语法:
alter table 表名 drop index 唯一键约束的名字;
*/

#在表创建之后添加唯一键约束
ALTER TABLE c_uni ADD UNIQUE KEY(PASSWORD);

#删除唯一键约束
ALTER TABLE c_uni DROP INDEX username;

#查看表结构
DESC c_uni;

DROP TABLE c_uni;

外键约束

#查看某个表中的约束
SELECT * FROM `information_schema`.`TABLE_CONSTRAINTS` WHERE table_name = 'c_emps';
#查看某个表中的索引
SHOW INDEX FROM mydb.`c_emps`;
#MySQL在创建主键约束、唯一约束、外键约束的同时会创建对应的索引
#三.外键约束 foreign key
#创建外键约束
/*
语法:
1.在创建表的同时创建外键约束(外键约束需要在所有字段的下面设置)
create table 表名(
字段1 数据类型
字段2 数据类型
...
foreign key(从表的字段名) references 主表(主表中的字段名)
)

2.表创建之后如何创建外键约束
语法:
alter table 表名 add foreign key(从表的字段名) references 主表(主表中的字段名)

外键约束的特点:
1)一个表中可以指定多个外键
2)在从表中创建外键时主表必须存在
3)建外键的表叫从表,被引用的表叫主表
4)从表中的外键的类型要与主表中引用的字段的类型一致
5)从表中的外键引用的通常是主表中的主键
6)外键约束的名字如果没有指定不是字段名,是自动生成的;外键索引的名字是字段名
7)删除外键约束时不会自动删除外键索引,如果要删除需要通过删除索引的方式来删除
*/

#创建表的同时创建外键索引
CREATE TABLE c_emps(
id INT PRIMARY KEY,
last_name VARCHAR(10) UNIQUE KEY,
email VARCHAR(10),
deptId INT,
FOREIGN KEY(deptId) REFERENCES c_depts(id)
);

#表创建之后创建外键约束
ALTER TABLE c_emps ADD FOREIGN KEY(deptId) REFERENCES c_depts(id);

#删除外键键约束
/*
语法:
alter table 表名 drop foreign key 外键约束的名字;
*/
ALTER TABLE c_emps DROP FOREIGN KEY c_emps_ibfk_1;

#删除索引
ALTER TABLE c_emps DROP INDEX deptId;

DROP TABLE c_depts;
DROP TABLE c_emps;

非空约束

#查看某个表中的约束
SELECT * FROM `information_schema`.`TABLE_CONSTRAINTS` WHERE table_name = 'c_not_null';
#查看某个表中的索引
SHOW INDEX FROM mydb.`c_not_null`;
#四.非空约束 not null
#创建非空约束
/*
1.在创建表的同时创建非空约束
语法:
create table 表名(
字段1 数据类型 not null,
字段2 数据类型 not null,
...
)

2.在创建表后添加非空约束
alter table 表名 modify 字段名 数据类型 not null

非空约束的特点
1)一个表中可以有多个非空约束
2)非空约束的字段不能是null值

取消非空约束
alter table 表名 modify 字段名 数据类型
取消非空约束的同时保留默认值约束
alter table 表名 modify 字段名 数据类型 default 默认值
*/
CREATE TABLE c_not_null(
id INT PRIMARY KEY,
username VARCHAR(10) NOT NULL,
PASSWORD VARCHAR(10) NOT NULL
)

ALTER TABLE c_not_null MODIFY PASSWORD VARCHAR(10);

DESC c_not_null;

DROP TABLE c_not_null;

默认值约束

#五.默认值约束 default
#创建默认值约束
/*
1.在创建表的同时创建默认值约束
语法:
create table 表名(
字段1 数据类型 default 默认值,
字段2 数据类型 default 默认值,
...
)

2.在创建表后添加默认值约束
alter table 表名 modify 字段名 数据类型 default 默认值

默认值约束的特点
1)一个表中可以有多个默认值约束

取消默认值约束
alter table 表名 modify 字段名 数据类型
取消默认值约束的同时保留非空约束
alter table 表名 modify 字段名 数据类型 not null

*/
CREATE TABLE c_default(
id INT DEFAULT 1,
username VARCHAR(10),
PASSWORD VARCHAR(10) NOT NULL
);

#在创建表之后添加默认值约束
ALTER TABLE c_default MODIFY username VARCHAR(10) DEFAULT '张三';
#添加默认值约束的时候也保留原来的非空约束
ALTER TABLE c_default MODIFY PASSWORD VARCHAR(10) DEFAULT '999' NOT NULL;

#在有默认值约束的前提下向表中插入数据
#不指定字段插入,想要填充默认值的字段使用default
INSERT INTO c_default VALUES(2,DEFAULT,DEFAULT);
#指定字段插入,想要填充默认值的字段不指定即可
INSERT INTO c_default(id) VALUES(3);


DESC c_default;

自增约束

#六.自增约束 auto_increment
#创建自增约束
/*
1.在创建表的同时创建自增约束
语法:
create table 表名(
字段1 数据类型 auto_increment,
字段2 数据类型 ,
...
)

2.在创建表后添加自增约束
alter table 表名 modify 字段名 数据类型 auto_increment

自增约束的特点
1)一个表中自能有一个自增约束
2)自增约束必须是键值(主键、唯一键、外键)
3)自增约束的字段必须是整数类型

取消自增约束
alter table 表名 modify 字段名 数据类型
*/
CREATE TABLE c_auto_increment(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10),
PASSWORD VARCHAR(10)
);

#在表创建之后添加自增约束
ALTER TABLE c_auto_increment MODIFY id INT AUTO_INCREMENT;

#取消自增约束
ALTER TABLE c_auto_increment MODIFY id INT;

#不指定字段添加数据
#自增的字段可以使用null或0
#自增的字段如果指定了值,那么插入的是指定的值,如果没有指定,会在当前表中自增字段的最大值的基础上加1
INSERT INTO c_auto_increment VALUES(NULL,'李四','444444');
INSERT INTO c_auto_increment VALUES(0,'王五','555555');
INSERT INTO c_auto_increment VALUES(8,'王八','888888');
INSERT INTO c_auto_increment VALUES(NULL,'田七','777777');

#指定字段添加数据
#自增字段不指定值即可
INSERT INTO c_auto_increment(username,PASSWORD) VALUES('赵六','666666');

DESC c_auto_increment;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值