数据库1

一、MySQL的基本操作

简介:MySQL 是一款C/S结构的应用程序
C客户端Client
S服务器端Server
所以当你安装MySQL 数据库管理系统时时,就将客户端和服务器端都安装到了本机,狭义的服务器指的就是一款由程序员所编写的软件,即然是程序员所编写的软件,我就需要知道如何启动 (运行)该软件?

右击计算机管理 -服务和应用程序服务右则(单击任意一个服务,然后按键盘上的M键,跳转到所有以M开头的服务,找到MySQL,双击可以启动)

说明MySQL进入到了accpet状态(阻塞),时刻监听是否有客户端来发送请求

如何启动客户端连接到MySQL的服务器,都有哪些应用程序是MySQL的客户端?
(1)MySQL自带 客户端


(2)MySQL的第三方客户端 Navicat for MySQL(图形化界面【点点选选即可实现相应功能】)


(3)java程序也是MySQL的第三方客户端【后面要学习JDBC】

二、SQL语言

2.1SQL语言的入门

SQL(结构化查询语言)由五部分组成
(1)DQL数据查询语言 【标志性关键字 select】
(2)DML数据操作语言【标志性关键字 insert ,update,delete 】
-----------------(1)和(2)针对于表中的数据-------------------
(3)DDL数据定义语言【标志性关键字 create ,alter ,drop 】 针对于数据库对象
(4)DCL 数据控制语言【grant授予 ,revoke撤消】
(5)TCL事务控制语言 【commit提交,rollback回滚】

2.2DDL数据定义语言

2.2.1创建数据库表

语法:
create table 表名(
字段1 数据类型(长度),
字段2 数据类型(长度),
字段 3 数据类型 (长度)
);

举例:
-- 创建数据库表(表结构)  DDL [create ,alter ,drop]
create table tb_stu(
  stuid varchar(10) ,
  stuname varchar(20),
  sex int(4),
  age int(4)

);
-- 查看表中的数据
select * from tb_stu;

存在的问题?表结构已经创建完成,发现缺字段,或都字段的类型不正确,或者有多余的字段如何解决?肯定不能删表,解决方案,使用alter关键字,修改表结构

2.2.2修改表结构

(1)新增列 add : alter table 表名 add 列名 数据类型 (长度)
(2)删除列 drop : alter table 表名 drop 列名
(3)修改列的数据类型和长度 modify
:alter table 表名 modify 列名 (长度);
(4)修改列的列名 :alter table 表名 change 原列名 新列名 数据类型(长度)

-- 修改表结构 
-- (1)添加列
 alter  table tb_stu add score double(5,2);

-- (2)修改列的数据类型
alter table tb_stu modify stuid char(20);
alter table tb_stu modify sex varchar(4);

-- (3)修改列的名称
alter table tb_stu change sex gender varchar(10);

 -- (4) 删除冗余(多余)的列
alter table tb_stu drop age;
2.2.3删除表

语法 :drop table表名;

-- 删除表
drop table tb_stu;
2.2.4复习

(1)mysqlC/S结构的应用程序
第一件事情:先启服务器,然后再启客户端

(2)创建数据库表
语法:
create table 表名 (
字段1 数据类型(长度),
字段2 数据类型 (长度)
);

(3)修改表结构
a)修改原有列的类型 … modify …
b)修改原有列的列名 …change …
c)添加列 …add…
d)删除列 … drop …
(4)删除表
语法:drop table 表名;

2.3DML数据操作语言

2.3.1insert 向数据表中添加数据

select * from tb_stu;

– insert向表中插入测试数据
– (1)向表中全部列添加数据 (要求,值的顺序必须与列的顺序完全一致)
insert into tb_stu values (‘1001’,‘张三’,‘男’,20);

– (2)向表中的部分列添加数据 insert into 表名 [(列名1,列名2,…)] values (值1,值2) ,
– 列的个数与值的个数保持一致
insert into tb_stu (stuid,stuname) values (‘1002’,‘李四’);

-- 注意事项
-- (1)数据类型要匹配
insert into tb_stu (age) values ('张三');-- [Err] 1366 - Incorrect integer value: '张三' for column 'age' at row 1
-- (2)长度超范围
insert into tb_stu(sex) values ('男女人妖不限');-- [Err] 1406 - Data too long for column 'sex' at row 1
-- (3)列的个数与值的个数不匹配
insert into tb_stu(stuid,stuname) values ('1003','王五','男'); -- [Err] 1136 - Column count doesn't match value count at row 1
insert into tb_stu(stuid,stuname,sex) values ('1003','王五'); 

-- (4)要求值的顺序与列的顺序完全一致
insert into tb_stu(stuid,sex,age,stuname) values ('1003','男',23,'陈六');
2.3.2update修改表中的数据

– 修改表中的数据
update tb_stu set stuname=‘zhangsan’; – 修改表中所有stuname [谨慎执行,一旦执行无法恢复]
– 带条件的修改
update tb_stu set stuname=‘张三’ where stuid=1001;

   -- where之前的set 之后的"="为赋值运算符
   -- where之后的“=”为关系运算符  等值判断

  -- 一次性修改多个列的值
  update tb_stu set stuname='李四',sex='女' where stuid=1002;
2.3.3delete删除表中的数据

– 删除表中的数据
– (1)使用delete (带条件的删除)
delete from tb_stu where stuid =1003;

 -- (2) 删除表中的全部数据
  delete from tb_stu;

 -- (3)删除表中的全部数据,建议使用truncate TABLE
  truncate table tb_stu;

2.4表的完整性约束

可以使用create创建表结构,可以使用insert向中添加测试数据,但是添入的数据无法保证准确性及合理性【合法性】,就需对表结构进行约束,这个约束就称完整性约束.

2.4.1主键约束

主键:非空且唯一
– 主键,【表中的唯一且非空列】一个表只能有一个主键,主键可以由一列可多列组成,多列组成的称为复合主键

-- 列级约束 
create table stu1(
  stuid int(4) primary key, -- 主键  
  stuname varchar(20) 
);

insert into stu1 values (1001,'张三');  -- 只允许执行一次
insert into stu1(stuname) values ('李四');-- 不可以 主键不允许不添

-- 表级约束
create table stu2(
 stuid int(4) ,
  stuname varchar(20)
);

-- 为表添加约束  stu2表有一个复合主键,主键由2个列组成
 -- 修改表结构添加约束,约束的名称为pk_idname ,约束的类型为primary key  ,被约束的列为 stuid和stuname        
alter table stu2 add constraint pk_idname primary key (stuid,stuname) ;
-- 测试数据
insert into stu2 values (1001,'张三');
insert into stu2 values (1001,'李四');
insert into stu2 values (1002,'李四');
insert into stu2 values (1002,'张三');

select * from stu2;
2.4.2 唯 一约束

唯一约束[唯一,但可以为null]一个表可以有N多个唯一约束

-- 列级约束
create table stu3(
  stuid int(4) primary key,
  stuname varchar(20),
  phone char(11) unique,
  email varchar(20) unique
);
-- 添加测试数据
 insert into stu3 values (1001,'张三','18600605736','68554698@qq.com');
 insert into stu3 values (1002,'张三','18600605736','68554698@qq.com');-- 1062 - Duplicate entry '18600605736' for key 'phone'
 insert into stu3 values (1002,'张三','18600605737','68554698@qq.com');-- Duplicate entry '68554698@qq.com' for key 'email'
insert into stu3 (stuid,stuname) values (1003,'李四');
insert into stu3 (stuid,stuname) values (1004,'李四');

select * from stu3;

-- 表级约束
create table stu4(
 stuid int(4) primary key,
 stuname varchar(20),
 phone char(11),
 email varchar(20)
);

-- 修改表结构添加唯一约束
alter table stu4 add constraint uk_phone unique (phone);
alter table stu4 add constraint uk_email unique (email);

-- 添加测试数据
 insert into stu4 values (1002,'张三','18600605736','68554698@qq.com');
2.4.3非空约束 not null

非空约束,表中的必填项 not null 简称NK

-- 只有列级约束
create table stu5 (
 stuid int(4) primary key ,
 stuname varchar(20) not null,
 sex varchar(2)
);

insert into stu5 values (1001,'张三','男');
insert into stu5 (stuid,sex) values (1002,'女'); -- Field 'stuname' doesn't have a default value
insert into stu5 (stuid ,stuname)values (1002,'李四');
select * from stu5;

-- 修改表结构
alter table stu5 modify sex varchar(2) not null; -- 有要求,要求表中的sex列不能有null,如果有,需要先装将数据删除
delete from stu5 where stuid=1002;
2.4.4默认约束
-- 默认约束

create table stu6(
	stuid int(4) primary key,
  stuname varchar(20)not null,
  sex varchar(2) default '男'
);
insert into stu6 (stuid,stuname) values (1001,'张三');
insert into stu6  values (1002,'李四','女');
select * from stu6;

alter table stu6 add clazz varchar(20) default 'sxt502'; -- 如果表中有数据,会为表中的所有的数据添加默认值
2.4.5 自增列
-- 自增列 ,通常是主键,外键,唯一, (主键自增)
create table stu7(
  stuid int(4) primary key auto_increment,
  stuname varchar(20) not null

);
 insert into stu7(stuname) values ('张三'); -- 可以执行多次
 insert into stu7 values (default,'李四');  -- 可以执行多次
select * from stu7;
2.4.6外键约束

至少需要两张表 ,外键约束是表与表之间的关系

-- 先创建一张班级表
create table clazz (
 clazzid int (4) primary key auto_increment,
 clazzname varchar(20) not null
);

insert into clazz values (default,'java零基础班');
insert into clazz values (default,'大数据就业班');
insert into clazz values (default,'web前端班');
select * from clazz;

-- 创建学生表
create table stu8(
   stuid int(4) primary key auto_increment,
   stuname varchar(20) not null,
   sex char(2) default '男',
   phone char(11) unique,
   clzid int(4)
);
select * from stu8;
-- 添加外键约束
alter table stu8 add constraint fk_clzid foreign key (clzid)
REFERENCES clazz (clazzid);

insert into stu8 values (default,'张三','女','3123123',8);-- 不行 
insert into  stu8 values (default,'张三','女','4343',1);-- 除了1,2,3clzid列什么都不能添,因为clazz表里没有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值