本文使用MySQL Client操作命令
一、数据类型: 1、整型MySQL中支持多种整型,其实很大程度上是相同的,只是存储值的大小范围不同而已。
tinyint:占用1个字节,相对于java中的byte
smallint:占用2个字节,相对于java中的short
int:占用4个字节,相对于java中的int
bigint:占用8个字节,相对于java中的long
浮点类型即:float和double类型
float:4字节单精度浮点类型,相对于java中的float
double:8字节双精度浮点类型,相对于java中的double
float/double(m,d):m是总个数,d是小数位
decimal: 定点数,浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
4、 字符串类型1、char(n) 定长字符串,最长255个字符。n表示字符数,
2、varchar(n) 变长字符串,最长不超过65535个字节,n表示字符数,一般超过255个字符,会使用text类型
3、大文本(长文本)类型:最长65535个字节,一般超过255个字符列的会使用text。
date:年月日
time:时分秒
datetime:年月日 时分秒, 默认是null, 最大9999-12-31
timestamp:时间戳,年月日 时分秒,默认当前系统时间, 最大2038-1-19
查看数据库列表 show databases;
查看指定数据库 show database 表名;
查询所有表格 show tables;
查询建表详情 show create table 表名;
查询表格结构 desc 表名;
创建默认字符集数据库 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是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
四、常见约束: 0、添加约束方式:总结:
库用database,表用table
展示show,创建create,新增alter+add,修改alter+modify,查寻select
插入insert,指定条件用where
先添加字段约束:参数 类型 约束,其他参数……
后添加字段约束: alter table 表名 modify 字段 类型(指定字符) 约束;
1、主键约束:primary key如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且非空。
在定义表的参数列表时声明:
2、自增属性:auto_increment
如果主键是数值类型,为了方便插入主键(并且保证插入数据时,主键不会因为重复而报错),可以设置一个主键自增。
设置了自增的主键,可以在插入记录时,不给id赋值,只需要设置一个null值,数据库会自动为id分配一个值(AUTO_INCREMENT变量,默认从1开始,后面依次+1),这样既可以保证id是唯一的,也省去了设置id的麻烦。
如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
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;



