本质是一个文件,按照一定的格式存储数据,可以对数据进行操作。
历史:
层次结构模型 数据库管理系统
IMS
网状结构模型 数据库管理系统
IDS
关系型结构 数据库管理系统
后关系型(对象关系型)数据库管理系统
NoSql(往死里学,高薪)
关系型结构数据库管理系统
oracle oracle 不开源收费 跨平台 非互联网大型公司 用的比较多
DB2 IBM 不开源收费 跨平台
Sybase Sybase 不开源收费 跨平台
sqlserver 微软 不开源收费 不跨平台
mysql oracle 开源 不同版本收费 跨平台 互联网公司用的比较多
RDBMS:Relationship DataBaseManagementSystem
DataBase:数据库
table:
卸载
(1):记住安装路径
(1)计算机--右键管理--服务和应用程序-服务 -右键停止/启动
(2)net stop mysql
net start mysql
(1)mysql -uroot -proot
(2)mysql --user=root --password=root
(3)C:\Users\Administrator>mysql -uroot -p
Enter password: ****
(4)用mysql自带的命令窗口登录
(5)mysql --user=root --password=1234 --host=127.0.0.1 --port=3306
退出:exit
重置密码:
1.打开窗口并关掉mysql的服务
2.mysqld --console --skip-grant-tables
3.不要关闭窗口重新打开新窗口
mysql -uroot (回车)
use mysql;
update user set password=password('新密码') where user='root';
update user set password=password('root') where user='root';
4.关闭两个窗口
5.打开窗口 启动服务 新密码登陆
专门针对数据库的语言,对数据库进行CRUD
c:create
r:retrieve
u:update
d:delete
DDL:Database Definition Language(数据库定义语言)
定义(创建)相应的数据库 或者表
DML:Database Management Language(数据管理语言)
增删改
DQL:Database Query Language(数据库查询语言)
查询操作
DCL:Database Control Language(数据库控制语言)
权限管理
create(创建,定义) alter(修改) drop(删除)
(2)create database da2 character set utf8;
(3)create database 库的名字 character set utf8 collate utf8_general_ci ;
查看库的编码:
查看可以设置的编码格式:show character set;
(3) create database 库的名字 character set utf8 collate utf8_general_ci ;
修改数据库的编码: alter database 库名 character set 编码
创建表:最后一行不可以加逗号,其他必须加
查看当前所在的库:
select database();
修改标的名称:alter table 表名 rename to 新表名;
查看当前表的结构:desc 表名;
添加字段:alter table 表名 add 字段名 类型
修改字段:alter table 表名 change 旧字段的名字 新字段的名字 类型;
修改字段的类型:alter table 表名 modify 字段的名字 新类型 ;
删除字段: alter table 表名 drop 字段名;
int 相当于java中的int
tinyint 相当于java中 byte
smallint 相当于java中的short
bigint 相当于java中的long
boolean:0表示false ,非零表示true
浮点(4,2); 长度是四 小数点后占两位。
float double decimal (金钱)
date 表示年月日
time 时分秒
datetime 年月日时分秒
timestamp 时间戳 年月日时分秒
datetime与tiemstamp的区别:
(1) datetime 范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
timestamp范围:范围是'1970-01-01 00:00:00'到2037年
(2) datetime 默认为null
timestamp 默认为当前时间
必须指定长度
char与varchar的区别:
char:长度固定不变(效率高)
varchar:长度可以改变
TINYTEXT 大长度为255(2(8)–1)字符的TEXT列。
TEXT[(M)] 最大长度为65,535(2(16)–1)字符的TEXT列。
MEDIUMTEXT 最大长度为16,777,215(2(24)–1)字符的TEXT列。
LONGTEXT 4,294,967,295或4GB(2(32)–1)字符的TEXT列
TINYBLOB 最大长度为255(2(8)–1)字节的BLOB列。
BLOB[(M)]最大长度为65,535(2(16)–1)字节的BLOB列
MEDIUMBLOB最大长度为16,777,215(2(24)–1)字节的BLOB列。
LONGBLOB最大长度为4,294,967,295或4GB(2(32)–1)字节的BLOB列
(1)insert into 表名 values (value1,。。。。。valuen);
(2) insert into 表名 (字段名,。。。字段n) values (value1,。。。。。valuen);
如果插入数据直插入其中几列的时候,要写字段名,但只用写要插入的字段名即可,后面的value值与前面的字段名对应即可。
update 表名 set 字段名 = 值 (更新所有的数据)
update 表名 set username = 'sss' where id=xx; (更新满足条件的)
delete from 表名 ; (删除所有的数据)
delete from 表名 where 条件 ; (删除满足条件的数据)
truncate 与delete的区别:
(1)delete命令删除的数据将存储在系统回滚段中
truncate命令删除的数据是不可以恢复的
(2)truncate之后的自增字段从头开始计数
delete的仍保留原来的最大数值
(1)用sql修改编码
(查看相应的编码格式) show variables like '%char%';
set character_set_client = gbk;
set character_set_results = gbk;
(2)修改配置文件
[client]
port=3306
[mysql]
default-character-set=gbk
1、as:取别名 (as可以省略): select course as english from tal;
2、去重复:distinct : select distinct course from stu;
not , or ,in , between and ,
select * from stu where score in (70,81,59);
select * from stu where not course='php';
_:匹配一个字符。
%:多个字符进行匹配
select * from stu where name like '%i%';
select * from stu where name like '_i__';
select * from stu where score is null;
select * from stu where score is not null;
ifnull(字段,0) (如果是字段是null的话 就用0来处理)
select id ,name ,course,ifnull(score,0) from stu;
聚集函数(聚集 函数不对null进行操作):
对一列数据进行操作。
count()//统计
sum()//求和
max() //最大
min()//最小
avg()//平均
用ifnull处理空值
select min(ifnull(score,0)) from stu;
(别名)
select round( avg(ifnull(score,0)),2) 平均成绩 from stu;
平均成绩是别名
having与where的区别:
一般 where用于具体的某条件 ,having后面跟 函数。
select course,sum(score) from stu group by course having sum(score)>100;
主键(唯一非空):primary key
唯一(可以为空):unique
非空:not null
默认:default
方法一:
create table p1( id int primary key, username varchar(32) );
方法二:
create table p2( id int, username varchar(32), primary key(id) );
方法三:
create table p3( id int, username varchar(32) ); alter table p3 add primary key (id);
create table d(
id int ,
username varchar(32) default '鸡蛋'
);