数据库基础(一)

目录

1.数据库相关语句

2.数据库表相关

 3数据相关的SQL

插入数据

添加字段

更新(修改)数据  

删除数据

4.约束

1.主键约束

2.主键约束+自增

3.外键约束:  

5.注释  

6.数据库的数据类型


SQL语言包括四个部分:

DML(数据操作语言):

用来操作数据库中所包含的数据[用来插入,修改和删除表中的数据 insert,update,delete]

DDL(数据定义语言):

用于创建和删除数据库对象等操作[create,drop,alter]

DQL(数据查询语言):

用来对数据库中的数据进行查询[select]

DCL(数据控制语言):

用来控制数据库组建的存取许可,存取权等[DRANT,COMMIT,ROLLBACK]

1.数据库相关语句

1.创建数据库:格式

create database 数据库名称;

2.查看数据库详情

show create database 数据库名称;

3.创建数据库时指定字符集

create database 数据库名 character set 字符集(utf-8或gbk);

4.删除数据库

drop database 数据库名;

5.查询所有数据库

show databases;

2.数据库表相关

1.查询所有表

show tables;

2.创建表

create table 表名(字段1名+类型,字段2名+类型)

创建原理

 

表的引擎:

InnoDB :支持数据库高级操作,如:外键,事务等------默认引擎

myisam:只支持基础的增删改查 

3. 创建表时指定表的引擎和字符集格式:

create table数据库名(字段名1,字段1的类型,字段名2,字段2的类型...)

engine=myisam/innDB default charset gbk/utf8;

4.查看表的字段

desc +表名;

案例:创建一个学生表(student),字段为学号(id),姓名(name),语文成绩(Chinese),数学成绩(math),

英语成绩(English)

create table student(id int,name varchar(10),...

5.删除表:

drop table+表名

案例

代码作用
修改表名

rename table 表名 to 新表名

添加表字段alter table 表名 engine=myisam/innDB default charset gbk/utf8
添加表字段alter table 表名 add 字段名 字段类型 位置(first/after xx)
删除表字段alter table 表名 drop 字段名
修改表字段名和类型alter table 表名 change 字段名 新字段名 字段;类型
删除表drop table 表名

 3数据相关的SQL

插入数据

(1). 全表插入--格式

insert into 表名 values(字段1的值,字段2的值,字段3的值...)
注! :每个字段都赋值,顺序要与表字段一致

(2) .指定插入--格式

insert into 表名(字段名1,字段名2..)values(字段1值,字段2值..);
如果添加中文需在客户端输入:set names gbk

 

(3) .批量插入--格式

insert into 表名 values(字段1的值,字段2 的值,字段三的值.....

 

添加字段

添加表的字段格式

在字段的最后添加:alter table 表名 add 字段名 字段类型;---默认
在字段最前面添加:alter table 表名 add 字段名 字段类型 first;
在XXX字段的后面添加:alter table 表名 add 字段名 字段类型 after  XXX;

更新(修改)数据  

(1) 修改数据--格式:

update 数据表名称 set 条件;
注:未加条件则全部修改

(2)按条件修改数据--格式

update 数据表名称 set 修改内容 where 条件;

 

2修改表名

rename table 表名 to 新表名

 2.修改表的引擎和字符集

Alter table 表名 engine=myisam charset=gbk;

3.修改表的字段名和类型

alter table 表名 change 原字段名  新字段名 类型 

删除数据

1.删除表字段--格式

alter  table +表名 drop 表字段

2.删除表中数据按条件-

delete from 表名 条件

3删除全部数据--格式

delete from 表名    #把表的内容全部清空,一条数据一条数据的删

3.1截断表--格式

truncate  table 表名   #截断表:直接删除原来的表,重新创建一个表,执行速度比delete快

4.删除表

drop table 表名

drop是对表结构进行删除的,可以删除一个字段,或者删除一张表
delete 是对表数据进行删除的

案例

创建员工表(emp)字段有id和name,如果有先删除
create table emp(id int,name varchar(10));
修改emp表的引擎为myisam 字符集为gbk
alter table emp engine=myisam charset=gbk;
修改表名为t_emp
rename table emp to t_emp;
给t_emp添加age字段在id字符段后面
alter table t_emp add age int after id;
给t_emp添加工资sal字段在最后
alter table t_emp add sal int;
修改sal字段名称为salary
alter table t_emp change sal salary int;
修改age字段到salary字段的后面
alter table t_emp modify age int after salary
删除salary字段
alter table t_emp drop salary;
删除t_emp
drop table t_emp;



4.约束

1.主键约束

列级主键约束

给主键添加约束,起到非空并且唯一的作用,主键指代的是表示数据唯一性的字段,一张表中只有一个主键.

SQL语句设置主键 : primary key

create table 表名(id int primary key,name varchar(10));

表级主键约束案例:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id) --表级主键可以为多个
)

当表已被创建时,创建 PRIMARY KEY 约束,请使用下面的 SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (主键字段);

撤销PRIMARY KEY 约束

ALTER TABLE 表名
DROP PRIMARY KEY

2.主键约束+自增

SQL语句实现: auto_increment

create table t2(id int primary key auto_increment,name varchar(10));

自增的总结:

表现自增的数值,只增不减.

清空表的数据 主键数值不归零 继续增长

数值以出现最大值的基础+1

3.外键约束:  

外键是两表或多表之间建立一个关系,我们将这种关系叫做外键关系

表关系: 多对一、多对多 、一对一

多对一的外键需要添加到多的一方。

多对多的外键添加到中间表中(无主键)分别创建外键关联

一对一主表的主键是从表的外键,且从表的外键指定到从表的主键上

添加外键语法一:

FOREIGN KEY (本表字段(列名)) REFERENCES 连接表名(连接表字段(主键))

添加外键语法二: 在已经建完表的基础上添加外键

alter table 表名 add constraint foreign key(列名) references 主表(主键)

一对一  

人(person) 身份证(id_card)
人表:
create table person_idcard(
    pid int(10)PRIMARY KEY AUTO_INCREMENT,
    name varchar(20),
    sex varchar(5)
    )
身份证表:
create table id_card(
    cid int(10)PRIMARY KEY ,
    id_number varchar(20)
    FOREIGN KEY (cid) REFERENCES person_idcard(pid)
   )

一对多

人表:
CREATE TABLE Persons(
p_id INT,LastName VARCHAR(25),
FIRST VARCHAR(10),
city VARCHAR(10),
PRIMARY KEY (p_id))
“订单”表:
CREATE TABLE Orders
(
O_Id INT NOT NULL,
OrderNo INT NOT NULL,
P_Id INT,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
==请注意==,“Orders” 表中的 “P_Id” 列指向 “Persons” 表中的 “P_Id” 列。

“Persons” 表中的 “P_Id” 列是 “Persons” 表中的 PRIMARY KEY。

“Orders” 表中的 “P_Id” 列是 “Orders” 表中的 FOREIGN KEY。

多对多

创建学生表
CREATE TABLE choose_student(
sid INT(10)PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50),
sex CHAR)
#创建课程表
CREATE TABLE choose_course(
cid INT(10)PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(50),
credit DOUBLE
)
中间表,:学生号与选择的课程号一目了然
#中间表
CREATE TABLE student_course
(
sid INT(10),
cid INT(10),
FOREIGN KEY (sid) REFERENCES choose_student(sid),
FOREIGN KEY (cid) REFERENCES choose_course(cid)
)

 

5.注释  

comment

注释:可以在创建表添加字段的时候对字段进行介绍,便于以后查看表的时候知道每个字段的作用

使用:

Create table t4(id int primary key auto_increment comment‘这是主键,name varchar(10)
 comment’这是姓名’);

*Truncate,delete,drop的区别*

\1. delete :删除表中数据,自增数值不清零---支持事务

\2. Drop:删除表---不支持事务

\3. Truncate:删除表并创建一个新表,自增数值清零--不支持事务

6.数据库的数据类型

五种数据类型分别为:

  1. 整数

  2. 浮点数

  3. 字符串

  4. 日期

  5. 其他

整数

常用:int(m) bigint(m):m代表显示长度如果数据长度不足m时会在数值前面补0,但是必须和zerofill关键字结合使用,使用方式如下:

Create table t_int(num int(10)zerofill);

浮点数

常用:double(m,d):m代表总长度,d代表小数长度,使用方法如下:

create table t_double (num double(5,3));

Insert into t_double values(12.34567);

Insert into t_double values(1.23);

select * from t_double;

Decimal(m,d):m代表总长度,d代表小数长度,超高精度小数,需要涉及超高精度运算的时候使用

字符串

Char(m):m代表字符长度,固定长度,执行效率高(不用改变长度),最大长度255

Varchar(m):可变长度,会根据内容长度改变自身长度,更节省资源,最大长度65535,如果长度超过255建议使用text

Text:可变长度,记录大量文本时使用,最大值65535

日期

date只能保存 年月日

time只能保存 时分秒

Datetime:保存年月日 时分秒,默认值null,最大值9999年12月31日

Timestamp:保存年月日 时分秒,默认值为当前系统时间,最大值2038年01月19日

案例

Create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
Insert into t_date values(‘2022-5-20’,null,null,null);
Select * from t_date;
Insert into t_date values(null,’09:14:12’,’2022-05-20 9:20:36’,null);
Select * from t_date;

 案例

设计表保存一下数据:
1保存教学部下java部门的张老师的工资(salary)为2000年龄28 categoryid(分类id)
2集团总部下销售a部的人员李白 工资3000年龄20
创建员工表
Create table t3(id int primary key auto_increment,name varchar(10),salary double,age int,categoryid int) ;
创建分类表
Create table t4(id int primary key auto_increment,name varchar(10),parent_id int) ;
插入java部门的张老师的工资(salary)为2000年龄28 categoryid(分类id)
Insert into t4 values(null,’教育部’,null);
Insert into t4 values(null,’java部门’,1);
Insert into t3 values(null,’张老师’,2000,28,2);
插入集团总部下销售a部的人员李白 工资3000年龄20 添加上级id的字段(parent_id)
Insert into t4 values(null,’集团总部’,null);
Insert into t4 values(null,’销售a部’,4);
Insert into t3 values(null,’李白’,3000,20,5);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值