数据库类型:
- 层次模型;
- 网状模型;
- 关系模型;(常用)
Sql(Structured Query Language):结构化查询语言,用来操作关系型数据库
常用的关系型数据库:Access、MySql、Sql Server、Oracle
标准SQL语句支持以上所有关系型数据库,此外各个数据库都在标准SQL上扩展出新语句
Sql Server -> T-Sql
Oracle -> PL/Sql
MySql -> MySql
连接数据库:参数 -h(主机)、-u(用户名)、-p(密码)、-P(端口)
Windows:
以管理员身份启动C:\Windows\System32\cmd.exe
cd到mysql的bin目录,执行
mysql -h localhost -u root -p -P 3306
主机IP 用户名默认root 密码为空 端口号3306
若连接本地,localhost可以省略,若端口号3306,也可省略
Linux:
[root@host]# mysql -u root -p
退出数据库:exit、quit、\q
操作数据库
创建数据库:
- 语法:create database 数据库名;
- 若名字为关键字或符号或中文,则加上反引号``
查询数据库:
- 语法:show databases;
数据库字符编码:
- 创建时指定字符编码:create database 数据库名 charset=utf8/gbk; 若不指定默认为latin1
- 查看数据库的字符编码:show create database 数据库名; 可看到数据库的字符编码
- 修改数据库字符编码:alter database 数据库名 charset=utf8/gbk;
删除数据库
- 语法:drop database 数据库名;
选择据库
- 语法:use 数据库名
导出数据库
- 语法:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
导入数据库
- 语法:进入mysql控制台:mysql>source d:/dbname.sql
数据类型
数值类型
类型 大小
TINYINT 1字节
SMALLINT 2字节
MEDIUMINT 3字节
INT/INTEGER 4字节
BIGINT 8字节
FLOAT 4字节
DOUBLE 8字节
DECIMAL(m,n) m:总位数、n:小数位数
日期和时间类型:
类型 大小 格式 用途
DATE 3字节 YYYY-MM-DD 日期值
TIME 3字节 HH:MM:SS 时间值或持续时间
YEAR 1字节 YYYY 年份值
DATETIME 8字节 YYYY-MM-DD 混合日期和时间值
HH:MM:SS
TIMESTAM 4字节 YYYYMMDD 混合日期和时间值,时间戳
HHMMSS
字符串类型:
类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65535字节 二进制形式的长文本数据
TEXT 0-65535字节 长文本数据
操作数据表
几个概念:数据表中,一行叫做一条记录,一列叫做一个字段,也叫属性
创建数据表:
-
语法:
CREATE TABLE IF NOT EXISTS `testsql_tbl`( `id` INT UNSIGNED AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `author` VARCHAR(40) NOT NULL, `date` DATE, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
实例解析:
- 若不想字段为NULL 可以设置字段的属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
查看数据表:
- 语法:show tables;
- 查看创建数据表的语句:show create table 表名;
删除数据表:
- 语法:drop table 表名;
插入数据:
-
语法:
insert into table_name ( 列名1, 列名2,...列名N ) values ( 列值1, 列值2,...列值N ); 若插入的值和数据表的字段顺序和个数都一致,则( 字段1, 字段2,...字段N )部分可省略 插入值可以为null或default
查看表:
- 语法:select * from 表名
查询数据:
- 语法:select 列名 from 表名 (where 条件) (order by 字段 asc/desc升降序) (limit 起始位置,条数)
修改数据:
- 语法:update 表名 set 字段1=新值1,字段2=新值2 (where 条件)
删除数据:
- 语法:delete from 表名 (where 条件)
聚合函数:
- sum():求和
- avg():求平均值
- max():求最大值
- min():求最小值
- count():求个数