MYSQL数据库
DB:database(数据库),按照一定结构存储数据的仓库,其真实形态为电子文件
DBMS:数据库管理系统(database management system)
DBS:数据库系统(database system)
层次型:除了根节点外,任何一个节点有且只有一个父节点
网状型:任何一个节点可有两个或者多个父节点
关系型:二维表格,列称为字段,行称为记录(数据内容)
MYSQL,SQL SERVER,DB2,ORACLE
mongoDB,redis(非关系型)
MYSQL:
1.登录
shell登录 mysql -u用户名 -p密码 -h服务器名称 -p端口号(默认3306)
2.退出
mysql> exit;
quit;
\q;
3.常用的命令
select version()//打印版本号
select now()//打印当前日期及时间
select user()//打印当前用户
select database()//打印当前数据库
4.常用数据库管理
a.创建数据库:
create database [if no exists] 数据库名称 [[default] character set 编码方式]
b.查看当前服务器下的数据库列表
show databases [like ‘表达式’]
c.查看数据库的创建
show create database 数据库名称;
注意数据库的字符集编码:utf8,utf8_general_ci
d.修改数据库
alter database 数据名 default character set 编码方式(utf8)
e.删除数据库
drop database [if exists] 数据库名
f.使用数据库
use 数据库名;
5.常用的数据表的管理
a.创建数据表
create table 表名称(列定义,……)
列定义:列名称和数据类型。//数据表的字段
注意:数据库和表名不能重名;名称可以由任意字母、阿拉伯数字、下划线(_)和$组成,可以使用上述的任意字符开头,
但不能使用单独的数字;名称最大长度可为64位字符;不能使用MYSQL关键字作为名称;
在windows系统中,名称对大小写不敏感(不区分大小写),在linux中,严格区分大小写,一般采用小写来定义
数据类型:
1.整型:
字节数 无符号存储范围 有符号存储范围
tinyint:占1字节;无符号位的存储范围为0-255;有符号位的存储范围为-128~127
smallint:占2字节; 0~66635; -32768~32767
mediumint:占3字节; 0~16777215; -8388608~8388607
int: 占4字节; 0~4294967295; -2147483648~2147483647
bigint: 占8字节;
2.浮点型
float(M[,D]):4字节,单精度浮点,-3.4E38~3.4E38,可以保留到小数点后的7位
double(M[,D]):8字节,双精度浮点,-1.79E308~1.79E308,可以保留到小数点后15位
M:小数点前后数字的总位数;D:小数点后的数字位数
3.字符型
char(N):定长的字符;N为0~255
varchar(N):变长的字符:N为0~65535
tinytext:最多存储255个字符
text:最多存储65535个字符
mediumtext:
longtext:
enum(值,值,值):枚举值,最多为65535个选项
4.日期时间
date():存储范围为1000-01-01~9999-12-31
create table user(
user_name varchar(20),
password int(8),
sex smallint(2)
);
CREATE TABLE `user_1`(
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(20) NOT NULL,
`password` INT(8) DEFAULT 123456,
PRIMARY KEY (`id`)
)ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `user_1` (
`id` int(10) unsigned NOT NULL auto_increment,
`user_name` varchar(20) NOT NULL,
`password` int(8) default '123456',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_2` (
`id` int(10) NOT NULL primary key auto_increment,
`user_name` varchar(20) NOT NULL,
`password` int(8) default '123456'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
扩展:
列名 数据类型 [not null | null] [[primary] key] [auto_increment] [unique [key]] [default 默认值]
not null:禁止为空
null:可以为空
primary key:主键约束,每张表中只能存在一个主键约束;保证数据记录的唯一性;自动禁止为空;自动在该字段上创建索引
auto_increment:自动编号,具有该属性的字段,必须是数值型,必须在该字段上创建了主键
unique key:值唯一约束,保证记录的唯一性,每张表可以存在多个唯一约束
default:默认值,如果在插入记录时,没有明确为该字段赋值,那么其值为默认值
b.查看当前数据库中的数据表
show tables;
c.查看数据表的结构
show columns from 数据表名;
d.修改数据表
alter 数据表名 ......;
ALTER TABLE `user_1` CHANGE `password` `password` VARCHAR(32) NULL;
ALTER TABLE `user_1` CHANGE `user_name` `user_name` VARCHAR(10) CHARSET utf8 COLLATE utf8_general_ci DEFAULT '' NOT NULL, CHANGE `password` `password` INT(8) NULL;
ALTER TABLE `user_1` ADD COLUMN `sex` SMALLINT(2) DEFAULT 0 NULL AFTER `password`;
e.删除数据表
drop table 数据表名;//删除表
truncate table 数据表名; //清空表
四大语句:(CURD)--create、update、retrieve、delete--增删改查
插入:
insert [into] 数据表 [(字段名,字段名.....)] values(值1,值2....);
注意:如果省略字段列表,那么必须为所有字段依次赋值;字段值的数量和数据类型以及顺序必须与字段完全相同;必须为设置为非空且没有默认值的字段赋值
更新:
update 数据表名 set 字段名=值,字段名=值....[where条件];//如果省略where条件,将更新全部记录
删除:
delete from 数据表名 [where条件];//如果省略where条件,将删除全部记录
查询:
select 字段名称 [as 别名],字段名 [as 别名]...... from 数据表名 [where条件];
1.查询所有字段,可以用*表示
WHERE条件:
[where 条件] [group by 字段 having 条件] [order by 字段名称[ASC|DESC][,...]] [limit [start,] row_count]
group by:根据字段进行分组
having:保证字段名称出现在分组字段内或者出现在聚合函数中
order by:指定字段进行排序,ASC(升序,默认)DESC(降序)
limit:限制返回的记录数目;start指从第几条开始返回(记录从0开始编号);row_count返回多少条记录
条件:
1.运算符:
算术运算符:+、-、*、、、%
字符运算符:[not] like '_%';(_通配一个字符,%通配0个或者多个字符)
lower 、upper、concat
比较运算符:
=
[not] between ... and ...
[not] in(...,...,...)
is [not] null
逻辑运算符:
not、and、or
聚合函数:
sum()求和
count()计数
avg()求平均值
max()最大值
min()最小值
start,num page
0,2 1
2,2 2
4,2 3
6,2 4
8,2 5
(page-1)*num
limit (page-1)*num,num