2021-10-18 基本通用数据库语言

本文使用MySQL Client操作命令

一、数据类型:

1、整型

MySQL中支持多种整型,其实很大程度上是相同的,只是存储值的大小范围不同而已。
tinyint:占用1个字节,相对于java中的byte
smallint:占用2个字节,相对于java中的short
int:占用4个字节,相对于java中的int
bigint:占用8个字节,相对于java中的long

2、 浮点型

浮点类型即:float和double类型
float:4字节单精度浮点类型,相对于java中的float
double:8字节双精度浮点类型,相对于java中的double
float/double(m,d):m是总个数,d是小数位

3、定点型

decimal: 定点数,浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

4、 字符串类型

1、char(n) 定长字符串,最长255个字符。n表示字符数,
2、varchar(n) 变长字符串,最长不超过65535个字节,n表示字符数,一般超过255个字符,会使用text类型
3、大文本(长文本)类型:最长65535个字节,一般超过255个字符列的会使用text。

5、日期类型

date:年月日
time:时分秒
datetime:年月日 时分秒, 默认是null, 最大9999-12-31
timestamp:时间戳,年月日 时分秒,默认当前系统时间, 最大2038-1-19

二、通用语法:

1、查看 show

查看数据库列表  show databases;
查看指定数据库  show database 表名;

查询所有表格 show tables;
查询建表详情 show create table 表名;
查询表格结构 desc 表名;

2、创建 create

创建默认字符集数据库 create database 表名;
创建指定字符集数据库 create database 表名 character set utf8;

创建表 create table 表名(字段 类型(指定大小),字段 类型……);

3、删 drop

删除指定数据库 drop database 表名;

4、进库 use

进入指定数据库 use 表名;

5、增删改插 表

添加字段 alter table 表名 add 字段 类型(指定字符);
                  可选位置,加在第一位first,加在谁后after谁
更改字段 alter table 表名 modify 字段 类型(指定字符);
删除字段 alter table 表名 drop 字段;
修改表名 rename table 原表名 to 新表名

删除整张表 drop table 表名;
若存在则删 drop table if exists 表名;

向表中插入数据:insert into 表名(字段列表) values (插入数据值);
全插入数据简写:insert into 表名 values (插入数据值);
注:如果是全插入,可以省略参数列表,但数据值的字段顺序要一致

查看所有数据:select * from 表名;
查看特定字段:select 字段,字段 from 表名;
查寻特定条件的特定字段:select 字段,字段 from 表名  where 过滤条件;
注:desc是查看表结构,select*from是查看表数据

字段统一更改值:update 表名 set 字段=新值;
部分字段更改值:update 表名 set 字段=新值 where 过滤条件(如id=1);
注:数据库仅支持基本运算符+,不支持扩展赋值运算符+=

删除所有数据:delete from 表名; //再查寻提示Empty set
删除指定数据:delete from 表名 where 过滤条件;

三、区别删除

drop、delete和truncate之间的区别?
drop和truncate是DDL语句,delete是DML语句。
drop删除库或者表,数据和结构定义。
delete和truncate只是删除表的数据。
delete可以指定where条件,删除满足条件的记录,truncate删除所有记录。
delete是逐条删除,truncate是一次性删除
对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数

总结:

库用database,表用table

展示show,创建create,新增alter+add,修改alter+modify,查寻select

插入insert,指定条件用where

四、常见约束:

0、添加约束方式:

先添加字段约束:参数 类型 约束,其他参数……

后添加字段约束: alter table 表名 modify 字段 类型(指定字符) 约束;

1、主键约束:primary key

如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且非空。
在定义表的参数列表时声明:


2、自增属性:auto_increment

如果主键是数值类型,为了方便插入主键(并且保证插入数据时,主键不会因为重复而报错),可以设置一个主键自增。
设置了自增的主键,可以在插入记录时,不给id赋值,只需要设置一个null值,数据库会自动为id分配一个值(AUTO_INCREMENT变量,默认从1开始,后面依次+1),这样既可以保证id是唯一的,也省去了设置id的麻烦。

3、非空约束 not null

如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

4、唯一约束 unique

如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

5、检查约束 check

设置字段类型需要满足的限制条件,如范围等。

6、外键约束 foreign key

用于通知数据库两张表数据之间对应关系的这样一个列。这样数据库就会帮我们维护两张表中数据之间的关系。

习题1:

1、建库mydb4,指定编码集utf-8
2、进入mydb4
3、建表teacher,参数name,指定编码集utf-8
4、加age,首行加id,age前加salary
5、重命名为t
6、删表删库

  create database mydb4 character set utf8;
  use mydb4;
 create table teacher(name varchar(50)) charset=utf8;
 alter table teacher add age int(3);
 alter table teacher add id int(11) first;
 alter table teacher add salary double(7,2) after name;
 desc teacher;
 alter table teacher drop age;
 rename table teacher to t;
 drop table t;
 drop database mydb4;

习题2:

1. 创建数据库mydb2 字符集为utf8 并使用
2. 在数据库中创建员工表emp 字段:id,name,sal,deptId(部门id) 字符集utf8
3. 创建部门表dept 字段:id,name,loc(部门地址) 字符集utf8
4. 部门表插入以下数据: 1 神仙部 天庭 , 2 妖怪部  盘丝洞
5. 员工表插入一下数据:  1 悟空 5000 1 , 2 八戒  2000  1 ,3 蜘蛛精 8000  2,4 白骨精 9000  2
6. 查询工资6000以下的员工姓名和工资    
7. 修改神仙部的名字为取经部    
8. 给员工添加奖金comm字段    
9. 修改员工表中部门id为1的 奖金为500
10. 把取经部的地址改成五指山
11. 删除两个表
12. 删除数据库

1. 创建数据库mydb2 字符集为utf8 并使用
 create database mydb2 character set utf8;
 use mydb2;
2. 在数据库中创建员工表emp 字段:id,name,sal,deptId(部门id) 字符集utf8
 create table emp(id int,name varchar(20),salary double(9,2),deptId int) charset=utf8;
3. 创建部门表dept 字段:id,name,loc(部门地址) 字符集utf8
 create table dept(id int,name varchar(20),location varchar(40)) charset=utf8;
4. 部门表插入以下数据: 1 神仙部 天庭 , 2 妖怪部  盘丝洞
5. 员工表插入一下数据:  1 悟空 5000 1 , 2 八戒  2000  1 ,3 蜘蛛精 8000  2,4 白骨精 9000  2
 insert into  dept values(1,'神仙部','天庭');
 insert into  dept values(2,'妖怪部','盘丝洞');
 insert into emp values(1,'孙悟空',5000,1);
 insert into emp values(2,'猪八戒',2000,1);
 insert into emp values(3,'蜘蛛精',8000,2);
 insert into emp values(4,'白骨精',9000,2);
6. 查询工资6000以下的员工姓名和工资    
 select name,salary from emp where salary<6000;
7. 修改神仙部的名字为取经部    
 update dept set name='取经部' where name='神仙部';
8. 给员工添加奖金comm字段    
 alter table emp add comm double(9,2);
9. 修改员工表中部门id为1的 奖金为500
 update emp set comm=500 where deptid=1;
10. 把取经部的地址改成五指山
 update dept set location='五指山' where name='取经部';
11. 删除两个表
 drop table emp,dept;
12. 删除数据库
 drop database mydb2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值