专门用来存储数据和管理数据库的一个仓库.英文叫database
分类: 关系型和非关系型
1, 关系型数据库: 存的数据都有关系,代表是:Mysql / Oracle…
2, 非关系型数据库: 存的数据之间有着松散的关系, 代表是: Redis
1, 服务端: 存储数据,管理数据
端口号默认是3306,设置密码,服务名叫MySQL,安装路径中不要包含中文!!!
2, 客户端: 连接服务端,操作服务端的数据
两种形式: DOS窗口 / 可视化工具sqlyog
数据库 -> 表(字段1…) -> 数据 / 记录
全称是结构化查询语言,专门用来操作数据库的语言.
而且是一个标准语言,可以操作任何数据库.
DML:是指数据库的操纵语言,就是对数据的操作(新增,修改,查询,删除CRUD)
DDL:是指数据库的定义语言,比如说创建表…
DCL:是指数据库的控制语言,比如说权限管理
DQL:是指数据库的查询语言,比如进行复杂的查询语句
语法: create table 表名(字段名称 字段类型(字段长度),字段2,字段3)
mysql> create table student(
-> id int(3),
-> name varchar(10),
-> age int(3)
-> );
Query OK, 0 rows affected (0.01 sec)
练习:创建门店表
mysql> create table tb_door(
-> id int(11),
-> door_name varchar(100),
-> tel varchar(20)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> create table tb_order_detail(
-> id int(11),
-> order_id int(11),
-> num tinyint(4),
-> item varchar(30),
-> price double
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> desc tb_order_detail;
语法: insert into 表名 values(1,2,3)
注意:
1, values后面括号里,要写几个值? 参考表里字段的个数,要和字段的个数匹配
2, 值的意义是什么呢? 要和字段的顺序位置匹配.每个值交给每个对应字段来保存
3, 值的写法有一些细节??? 如果字段是varchar类型,值必须有字符串的标识(单引号 / 双引号)
查询所有数据库: show databases;
创建数据库: create database 库名 default character set utf8;
删库: drop database 库名;
查询所有表: show tables;
新建表: create table 表名(字段名称 字段类型(字段长度),2,3);
字段长度:整数限制不住,字符串必须在规定长度内否则报错
删除表: drop table 表名;
修改表: alter table 表名 add column 字段名 字段类型(长度)
描述表: desc 表名
查询所有记录: select * from 表名;
新增记录: insert into 表名 values(1,2,3);
要写几个值必须和表里字段的个数匹配. 值的顺序必须和字段顺序匹配.
删除记录: delete from 表名 ;
修改记录: update 表名 set 字段名=字段值;
1,数字:
整型 tinyint / int 小数float / double 精确的小数 numeric(5,2) / decimal(5,2)–5是指有5位数字,2是指包含着的小数位数
2,日期:
年月日 date 时分秒 time 年月日时分秒 datetime 毫秒数 timestamp时间戳
3,字符串:
char和varchar的区别?
前者,长度固定,浪费空间,但查询高效.
后者,长度可变,节省空间,但查询相对低效.
是通过不同的方式,给不同的字段添加不同的约束,实现不同效果
常见的字段约束: 非空约束/唯一约束/主键约束…
通常在设计表时,就已经设计好了表里一些字段的约束情况
哪个字段,添加了非空约束,哪个字段的值,从此,必须有值不能为空. 使用not null来实现.
哪个字段,添加了唯一约束,哪个字段的值,从此,必须唯一不能重复. 使用unique来实现.
创建两个表 dept和emp表,并插入数据(参考课件的数据)
mysql> create table dept(
-> deptno int,
-> dname varchar(20),
-> loc varchar(13)
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> set names gbk;
mysql> INSERT INTO dept VALUES(1,'accounting','一区');
mysql> INSERT INTO dept VALUES(2,'research','二区');
mysql> INSERT INTO dept VALUES(3,'operations','二区');
mysql> create table emp(
-> empno int,
-> ename varchar(10),
-> job varchar(10),
-> mgr int,
-> hiredate datetime,
-> sal double,
-> comm numeric(8,2),
-> deptno int
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);
mysql> INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);
mysql> INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);
mysql> INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);
mysql> INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);