MySQL基础

MySQL基础

一、基本命令

1.登录数据库

2.MySQL程序常用命令

3.创建数据库

通过CREATE DATABASE语句创建一个名称为db_admin的数据库

创建数据库前判断是否存在同名数据库
在MySQL中,不允许同一系统中存在两个相同名称的数据库,如果要创建的数据库名称已经存在,那么系统将给出以下错误信息:
ERROR 1007 (HY000): Can't create database 'db_test'; database exists

4.查看数据库

成功创建数据库后,可以使用SHOW命令查看MySQL服务器中的所有数据库信息。
语法如下:
SHOW {DATABASES|SCHEMAS} [LIKE '模式' WHERE 条件] ;

5.选择数据库

在MySQL中,使用CREATE DATABASE语句创建数据库后,该数据库并不会自动 成为当前数据库。如果想让它成为当前数据库,需要使用MySQL提供的USE语句来 实现,USE语句可以实现选择一个数据库,使其成为当前数据库。只有使用USE语句 指定某个数据库为当前数据后,才能对该数据库及其存储的数据对象执行操作。
USE语句的语法格式如下:
USE 数据库名;

6.删除数据库

在MySQL中,可以通过使用DROP DATABASE语句或者DROP SCHEMA语句来 删除已经存在的数据库。使用该命令删除数据库的同时,该数据库中的表,以及表中 的数据也将永久删除,因此,在使用该语句删除数据库时,一定要小心,以免误删除有用的数据库。
DROP DATABASE或者DROP SCHEMA语句的语法格式如下:
DROP {DATABASE|SCHEMA} [IF EXISTS] 数据库名;

当我们使用上面的命令删除数据库,如果指定的数据库不存在,将产生如图所示的异常信息。

为了解决这一问题,可以在DROP DATABASE语句中使用IF EXISTS从句来保证 只有当数据库存在时才执行删除数据库的操作。

二、MySQL数据类型

MySQL数据库中,每一条数据都有其数据类型。MySQL支持的数据类型,主要 分成3类:数字类型、字符串(字符)类型、日期和时间类型。

1.数字类型

MySQL支持所有的ANSI/ISO SQL 92数字类型。这些类型包括准确数字的数 据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),还包括近似数字的 数据类型(FLOAT、REAL和DOUBLE PRECISION)。其中的关键词INT是 INTEGER的同义词,关键词DEC是DECIMAL的同义词。

2.字符串类型

字符串类型可以分为3类:普通的文本字符串类型(CHAR和VARCHAR)、可变类型(TEXT和BLOB)和特殊类型(SET和ENUM)。它们之间都有一定的区别,取值的范围不同,应用的地方也不同。

3.日期和时间数据类型

日期和时间类型包括:DATETIME、DATE、TIMESTAMP、TIME和YEAR。其中的每种类型都有其取值的范围,如赋予它一个不合法的值,将会被“0”代替。

4.常用数据类型总结

三、数据表操作命令

1.创建数据表create table

create table 表名(
-> 字段1 条件,
-> 字段2 条件,
-> 字段3 条件);

2.查看表结构columns/describe

①查看表结构
show columns from 表名;

②查看表中数据
describe 表名;

③查看表中的某一个字段
describe 表名 字段名;

3.修改alter

①添加字段add
alter table 表名 add 新字段名 条件;

②修改数据类型modify
alter table 表名 modify 要修改的字段名 条件;

③修改字段名change
alter table 表名 change 旧字段 新字段;

④删除表中的字段drop
alter table 表名 drop 字段名;

⑤重命名表名rename
1.alter table 旧表名 rename 新表名;

2.rename table 旧表名 to 新表名;

4.复制表删除表like/drop

①复制表格
1.先复制表结构
create table 复制表表名 like 被复制表表名;
2.查看复制表是否已经创建成功
show tables;
3.这时复制表里面只是复制了表结构,查看一下复制表表结构跟表里的数据
查看一下复制表表结构:describe 复制表表名;
查看一下复制表表数据:select * from 复制表表名;
4.将被复制表里面的数据全部复制粘贴到被复制的表里面
insert into 复制表表名 select * from 被复制表表名;
5.查看一下复制表的表数据
select * from 复制表表名;

②复制数据到另一张表
1.先创建一张新表,并添加数据
create table 新表名(
-> 字段1 条件,
-> 字段2 条件,
-> 字段3 条件);
2.将新表里面的数据全部粘贴到另一张表里面
insert into 要粘贴数据的表表名 select * from 新表表名;

③删除表
drop table [if exists] 表名;

5.插入数据insert

1.insert into...values...语句
insert into 表名[(字段名1,字段名2,...)] values(值1,值2,...);
①插入一条完整的数据
insert into 表名 values(值1,值2,...);
②插入部分数据
insert into 表名(字段名1,字段名2,...) values(值1,值2,...);
③插入多条数据
insert into 表名(字段名1,字段名2,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...);
2.insert into...set...语句
insert into 表名 set 字段1=值1,字段2=值2,字段3=值3;

四、表的字段条件与约束

1.给字段设置默认值default

在字段名和类型后面,加上:default 默认值

2.约束not null/unique

constraint
什么是约束?
实际上是对表中数据的限制条件
设计表时加入约束的目的?
保证表中数据的完整和有效

①非空约束(not null)
作用:not null约束的字段不能为 NULL 值,必须赋予具体数据

②唯一性约束(unique)
作用:unique约束的字段具有唯一性,不可重复

注意:unique约束的字段不能重复,但是可以为NULL,NULL不是一个值,也不能用等号比较

③组合使用 not null 和 unique
被 not null 和 unique 约束的字段,该字段即不能为null 也不能重复

3.主键约束PK(primary key)

添加主键primary key的字段即不能重复也不能为空,效果与“not null unique”相同,但本质是不同的,添加主键约束之后,主键不仅会有“not null unique”作用,而且主键字段还会自动添加“索引 — index”
主键根据个数分类:单一主键、复合主键

①MySQL中自动生成主键值(MySQL特有)
MySQL数据库管理系统中提供了一个自增数字auto_increment,专门用来自动生成主键值,主键值不需要用户去维护,也不需要用户生成,MySQL会自动生成。
自增数字默认从1开始,以1递增:1、2、3、4、…

4.外键约束FK(foreign key)

①外键是相对于主键说的,是建立表之间的联系的必须的前提
②外键根据个数分为:单一外键、复合外键
③外键可以使得两张表关联,保证数据的一致性和实现一些级联操作

例:设计数据库表用来存储学生和班级信息
学生表t_student包含:sno,sname,classno,cname
学生信息和班级信息之间的关系:一个班级对应多个学生,典型的一对多关系
第一种解决方案:将学生信息和班级信息存储到同一张表中
学生信息表:t_student
sno(PK)sname classno cname
1 Jack 100 北京市101中学高三1班
2 Lucy 100 北京市101中学高三1班
3 Lily 100 北京市101中学高三1班
4 Ford 200 北京市101中学高三2班
5 allen 200 北京市101中学高三2班
6 Jason 300 北京市101中学高三3班
7 Teddy 300 北京市101中学高三3班
以上设计的缺点:数据冗余

第二种解决方案:将学生信息和班级信息分开两张表存储:学生表 + 班级表
第一步:创建t_student表和t_class表
学生表 t_student
Sno sname
1 Jack
2 Lucy
3 Lily
4 Ford
5 Allen
6 Jason
7 Teddy

第二步:t_student表要不t_class表有关系,需要在t_student表中添加一个classno字段做为外键
学生表 t_student
sno(PK) sname classno(FK)
1 Jack 100
2 Lucy 100
3 Lily 100
4 Ford 200
5 Allen 200
6 Jason 300
7 Teddy 300
班级表 t_class
cno(PK) cname
100 北京市101中学高三1班
200 北京市101中学高三2班
300 北京市101中学高三3班

5.数据表中主键与外键的小结

结论(classno值必须来自cno):为了保证 t_student 表中的 classno 字段中的数据必须来自 t_class表中的 cno 字段中数据,有必要给 t_student 表中classno 字段添加外键约束;classno 称为外键字段,classno 中的100、200、300称为外键值,classno在这里是单一外键;
注意以下三点:
1、外键字段可以为NULL,外键为空的数据也叫孤儿数据;
2、被引用字段必须具有unique约束;
3、有了外键引用之后,表分为父表和子表,以上父表:班级表 t_class; 子表是:学生表 t_student;删除表时先删除子表,再删除父表;插入数据时,先插入父表数据再插入子表数据;

6.表数据的更新(修改)与删除(清空)update/delete

①更新(修改)update
更新表中某一字段:update 表名 set 字段1=值1 where 字段2=值2;
eg:更新名为wangwu的密码
update 表名 set password=”123123” where username=”wangwu”;
ps:当不填where条件时,更新的会是整个数据表的密码,谨慎使用!

②删除(清空)delete
删除表中某一字段:delete from 表名 where 字段1=值1;
eg:删除表中名为liye的数据
delete from 表名 where username=”liye”;

7.数据库的备份与还原dump/source

1.备份数据库MySQLdump
步骤:
①先退出数据库,再进行备份:\q
②备份数据库:MySQLdump -u root -p[密码] > [备份路径].备份文件名
eg:MySQLdump -u root -p db_admin > db_admin.sql
2.还原数据库source
步骤:
①连接数据库:MySQL -u root -p
②创建数据库:create database 数据库名;
③使用数据库:use 数据库名;
④还原数据库:source 路径

8.数据库表的创建,增加,删除实例

1.创建一个名为db_school的数据库
在db_school库中,创建一张名为tb_students的表
tb_students表中包含的字段:id 8位整数(主键),name 12位可变长字符串(不能为空),sex 1位字符串(默认值是m),email 50位可变长字符串(不能重复)

2.在tb_students表中插入几条数据
①tom m tom@126.com  2000-01-01
②jack m jack@123.com  1999-12-12
③meimei  f  mei@163.com  2001-02-23
④lucy f lucy@123.com 2000-12-01

3.修改,删除数据
修改tom的生日为2000-01-10;删除姓名叫meimei的记录

9.表的条件与约束实例

1.创建一个名为db_school的数据库
create database db_school;

2.在db_school库中,创建一张名为tb_students的表
tb_students表中包含的字段:id 8位整数(主键),name 12位可变长字符串(不能为空),sex 1位字符串(默认值是m),email 50位可变长字符串(不能重复)

3.tb_students表中增加birth字段,是date日期类型;修改name字段的长度为20

4.在tb_students表中插入几条数据
1  tom m tom@126.com  2000-01-01
2  jack m jack@123.com  1999-12-12
3  meimei  f  mei@163.com  2001-02-23
4  lucy f lucy@123.com 2000-12-01

5.修改tom的生日为2000-01-10;删除姓名叫meimei的记录

五、运算符(算数/比较/逻辑/位)

1.算数运算符(加、减、乘、除、求余)

算术运算符是MySQL中最常用的一类运算符。MySQL支持的算术运算符包括:加、减、乘、除、求余。
例:使用算术运算符对数据表tb_book1中的row字段值进行加、减、乘、除运算
use db_database07;
select row,row+row,row-row,row*row,row/row from tb_book1;

2.比较运算符(大于、等于、小于、不等于...)

比较运算符是查询数据时最常用的一类运算符。SELECT语句中的条件语句 经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。

3.逻辑运算符(与、或、非、异或)

逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回1。如果表达式是假,结果返回0。逻辑运算符又称为布尔运算符。MySQL中支持4种逻辑运算符,分别是与、或、非和异或。

4.位运算符(二进制-了解即可)

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。MySQL中支持6种位运算符。分别是:按位与、按位或、按位取反、按位异或、按位左移和按位右移。

5.运算符的优先级

由于在实际应用中可能需要同时使用多个运算符。这就必须考虑运算符的运算顺序。正所谓:闻道有先后,术业有专攻。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值