MySQL
- 作用:存数据,管理数据
关系型数据库
- MySQL,Oracle,Sql Server,DB2,SQLlite
- 通过表和表之间,列和列之间的关系进行数据的存储
非关系型数据库
- Redis,MongDB
- 非关系数据库类型,对象存储,通过对象自身的属性来判断
DBMS(数据库管理系统)
- 数据库的管理软件,科学有效的管理我们的数据,维护和获取数据。
- MySQL,数据库管理系统
连接数据库
命令行链接
1.mysql -uroot -p123456连接数据库
2.update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';重置密码
3.flush privileges刷新权限
4.所有的语句都用;
结尾
5.show databases;查看所有的数据库
6.mysql> use school 切换数据库
Database changed
7.show tables查看数据库中所有的表
8.describe student;显示数据库中所有表的信息
9.create database westos;创建一个数据库
10.exit退出连接
11.--(sql单行注释)
- DDL 定义
- DML操作
- DQL查询
- DCL控制
操作数据库
- mysql不区分大小写
1.创建数据库
CREATE DATABASE IF NOT EXISTS westos
2.删除数据库
DROP DATABASE IF EXISTS westos'
3.使用数据库
USE school
4.查看数据库
SHOW DATABASES
数据库的数据类型
数值
- tinuint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节
- decimal 字符串形式的浮点数,一般金融计算的时候用
字符串
- char 字符串固定大小的 0-255
- varchar 可变字符串 0-65535
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1
时间日期
- date YYY-MM-DD,日期格式
- time HH:mm:ss 时间格式
- datetime YYY-MM-DD HH:mm:ss 最常用时间格式
- timestamp 时间戳 1970.1.1到现在的毫秒数
- year 年份
null
- 没有值,未知
数据库的字段属性
Unsigned:
- 无符号的整数
- 声明了该列不能声明为负数
zerofill
- 0填充的
- 不足的位数,使用0来填充, int(3)
自增
- 通常理解为自动在上一条记录的基础上自动增加1(默认值)
- 通常用来设置唯一的主键~index,必须是整数类型
- 可以自定义设置主键的起始值和步长
非空 NULL not null
- 假设设置 not null ,如果不给赋值,就会报错
- NULL,如果不填写值,默认就是null
默认
- 设置默认的值
- sex,默认值为男,如果不指定该列的值,则会有默认的值
创建数据库表
- AUTO_INCREMENT 自增
- 字符串使用单引号括起来
- PRIMARY KEY (主键),一个表一般只有一个主键
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
PRIMARY KEY(`id`)
)
常用命令
1.SHOW CREATE DATABASE school --查看创建数据库的语句
2.SHOW CREATE TABLE student --查看student数据表的定义结构
3.DESC student --显示表的结构
修改删除表
修改表名
- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1 - 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE teacher1 ADD age INT(11) - 修改表的字段(重命名,修改约束)
ALTER TABLE teacher1 MODIFY age VARCHAR(11)--修改约束
ALTER TABLE teacher1 CHANGE age age1 INT(1)--字段重命名 - 删除表的字段
ALTER TABLE teacher1 DROP age1 - 删除表
DROP TABLE IF EXISTS teacher1
DML语言
- 数据库意义:数据存储,数据管理
添加
- insert into 表名([字段名1,字段名2,字段名3])values(('值1'),('值2'),('值3'))
INSERT INTOgrade
(gradename
)VALUES('大四') -
由于主键自增我们可以省略(如果不写表的字段,就会一一省略)
修改
update 修改谁(条件)set 原来的值=新值
- UPDATE
student
SETname
='shy' WHERE id=1(不指定条件下,会改动所有表) - 条件:where子句 运算符 id 等于某一个值 ,大于某一个值,在某个区间内修改
-操作符 - = 等于
- <>或者!= 不等于
- BETWEEN * AND * 某个范围内
- AND 和
- OR 或
删除
- delete from 表名[where条件]
- DELETE FROM
student
where id=1;
清空表
- TRUNCATE
student
相同点
- 都能删除数据,都不会删除表结构
不同点
- TRUNCATE 重新设置自增列,计数器会归零
- TRUNCATE 不会影响事物