Mysql1
语法: mysql -u用户名 -p密码 [-h数据库服务器IP地址 -P端口号]
MySQL数据库
关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据
mysql数据类型
类型 大小 有符号的范围 无符号的范围
tinyint 1 -128-127 0,255
smallint 2 -32768,32767 0,65535
mediumint 3 -9388609,8388607 0,16777215
int 4 -2147483648,2147483647 0,4294967295
bigint 8 -2^63 2^63-1 0 2^64-1
float 4 很大
double 8 特别大
decimal
字符串类型
类型 大小 (bytes) 描述
char 0-255 定长字符串
varchar 0-65535 变长字符串
tinyblob 0-255 不超过255个字符的二进制数据
tinytext 0-255 短文本字符串
blob 0-65535 二进制形式的长文本数据
text 0-65535 长文本数据
mediumblob 0-16777215bytes 二进制形式的中等长度文本数据
mediumtext 0-16777215 中等长度文本数据
longblob 0-4294967295 二进制形式的极大文本数据
longtext 0-4294967295 极大文本数据
类型 大小 范围 格式
data 3 1000-01-01至9999-12-31 YYYY-MM-DD
time 3 -838:59:59至838:59:59 HH:MM:SS
year 1 1901至2155 YYYY
datetime 8 1000-01-01 00:00:00至9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS
SQL:
DDL: 数据定义语言,用来定义数据库对象
DML: 数据操作语言,用来对数据库表中的数据进行增删改
DQL: 数据查询语言,用来查询数据库中表的记录
DCL 数据控制语言,用来创建数据库用户,控制数据库的访问权限
DDL-数据库
show databases; 查询所有数据库
select database(); 查询当前数据库
use 数据库名;使用/切换数据库
create database [if not exists] 数据库名[default charset utf8mb4];
drop database [if exists] 数据库名 删除数据库
上述语法中的database,也可以替换成schema
DDL-表结构-创建
create table tablename(
字段1 字段类型[约束] [comment 字段1注释],
.......
字段2 字段类型[约束][comment 字段2注释]
)[comment 表注释]
create table user(id int comment 'ID,唯一标识',username varchar(50) comment '用户名',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '性别' )comment '用户信息表';
DDL-表结构-创建
非空约束 限制该字段值不能为null not null
唯一约束 保证字段的所有数据都是唯一,不重复的 unique
主键约束 主键时一行数据的唯一标识,要求非空且唯一 primary key
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key
auto_increment 自动上升
DDL-表结构-查询,修改,删除
show tables; --查询当前数据库的所有表
desc 表名; --查询表结构
show create table 表面; --查询建表语局
alter table 表名 add 字段名 类型(长度)[comment 注释][约束]; --添加字段
alter table 表名 modify 字段名 新数据类型; ---修改字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释][约束];--修改字段名和字段类型
alter table 表名 drop column 字段名; --删除字段
alter table 表名 rename to 新表名; --修改表名
drop table [if exists]表名; --删除表
DML-insert
--指定字段添加数据
insert into 表名(字段1,字段2) values(值1,值2);
--全部字段添加数据
insert into 表名 values(值1,值2,...);
--批量添加数据(指定字段)
insert into 表名(字段名1,字段名2) values(值1,值2),(值1,值2);
--批量添加数据(全部字段)
insert into 表名 values(值1,值2,.....),(值1,值2,...);
1.插入数据时,指定的字段顺序需要与值的顺序时一一对应的。
2.字符串和日期型数据应该包含在引号中(单引号,双引号都可以)。
3.插入的数据大小/长度,应该在字段的规定范围内。
修改数据
update 表名 set 字段名1=值1,字段名2=值2,......[where 条件];
删除数据
delete from 表名[where]
DQL-基本查询
查询多个字段
select 字段1,字段2,字段3 from 表名
查询所有字段
select * from 表名
为查询字段设置别名,as关键字可以省略
select 字段1 [as 别名1], 字段2[as 别名2] from 表名
去除重复记录
select distinct 字段列表 form 表名
DQL-条件查询
select 字段列表 from 表名 where 条件列表
DQL-分组查询
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
所有的聚合函数不参与null值的统计
select 字段列表 from 表名 [where 条件列表] group by 分组字段名[having 分组后国旅条件]
执行顺序 where>聚合函数>having
DQL-排序查询
select 字段列表 from 表名 [where 条件列表][group by 分组字段名 having 分组后过滤条件]order by 排序字段 排序方式。
DQL-分页查询
select 字段 from表名[where 条件][group by 字段名 having 过滤条件][order by 排序字段]limit 起始索引,查询记录数