数据库-1

目录

一,数据库–1,概述

–2,使用

1,安装服务器端: 存数据,管理数据

2,安装客户端: 连接服务器,操作服务器里的数据

3,数据库的结构

4,SQL语言

1,概述

2,分类:

二,数据库的常见操作

–1,创建库

 –2,查询库

–4,删除库 

三,表的常见操作

–1,使用指定的数据库

–2,创建表

–3,查看表

–4,修改表

 –5,描述表结构

 –6,删除表

四,表记录的常用操作

–1,查询数据/记录

–2,插入数据/记录

 –3,修改数据/记录

–4,删除数据/记录 

–5, 排序

-6, 记录总数

五,数据库的使用细节

–1,命名规范

–2,数据类型

六, 字段约束

–1,非空约束not null

–2,主键约束primary key

–3,唯一约束unique

–4,外键约束 foreign key

–5,默认约束 default

–6,检查约束 check



一,数据库

–1,概述

作用就是用来存储数据和管理数据,本质上就是需要安装MySQL软件.
分类: 关系型数据库MySQL 和 非关系型数据库Redis ,主要观察数据之间的关


–2,使用

1,安装服务器端: 存数据,管理数据

1.核心步骤: 设置字符集/编码成 utf-8   , 端口号3306 , 设置服务名称MySQL , 设置密码root

2,安装客户端: 连接服务器,操作服务器里的数据

1,小黑窗口/DOS窗口: 
    --从开始菜单里找MySQL/Mariadb,输入密码
    --win+r 然后输入cmd 
    ```
        #发起MySQL的命令  -u是指定用户名(root) -p是指定密码(自定义的)
        mysql -uroot -proot
    ```
2,图形化的工具:sqlyog

3,数据库的结构

数据库 -> 表(行和列) -> 数据

4,SQL语言

1,概述

结构化查询语言,用来操作数据库的语言,是一种标准.
增删改查里将来发生最多的业务就是: 查 !!!

2,分类:

DML是数据操纵语言
DDL是指数据定义语言
DCL是指数据控制语言
DQL是指数据查询语言

二,数据库的常见操作

增删改查 CRUD

–1,创建库

创建库也可以简写成:create table cgb charset utf8 ;

 –2,查询库

–4,删除库 

三,表的常见操作

增删改查 CRUD


–1,使用指定的数据库

–2,创建表

语法:

create table 表名(字段名称 字段类型(字段长度),字段2,字段3,...

 

 练习:

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.02 sec)

–3,查看表


mysql> show tables;
+---------------------+
| Tables_in_cgb210901 |
+---------------------+
| tb_door             |
| tb_order_detail     |
+---------------------+
2 rows in set (0.00 sec)

–4,修改表

mysql> alter table tb_door add column money numeric(7,2);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

 –5,描述表结构

 –6,删除表

mysql> drop table tb_door;
Query OK, 0 rows affected (0.00 sec)

四,表记录的常用操作

增删改查 CRUD


–1,查询数据/记录

 

  • 查询tb_door表中的所有记录
SELECT * FROM tb_door;

–2,插入数据/记录

语法:insert into 表名 values(1,2,3,4,5,6)
注意:
1, 需要设置几个值?要看表里有几个字段
2, 值的顺序要和字段的顺序保持一致
3, 如果字段是字符串类型,设置值时必须要有" " ’ '的标记

  • 向tb_door表中插入2条记录
insert into tb_door values(null,'永和大王1店',666);

insert into tb_door values(null,' 永和大王2店',888);

 

 –3,修改数据/记录

 

  • 修改tb_door表中id为1的记录
update tb_door set tel=555 where id=1;

 

–4,删除数据/记录 

  • 删除tb_door表中id为2的数据
Delete from tb_door where id=2;

–5, 排序

  • 将tb_door表记录按照tel排序
Select * from tb_door order by tel desc;

-6, 记录总数

  • 查询tb_door表中的总记录数
Select count(*) from tb_door;

五,数据库的使用细节

–1,命名规范


1, 以字母开头,不要以数字开头
2, 不能使用保留字:select / from / update / delete / insert into
3, MySQL数据库不区分大小写,多个单词用下划线分开

–2,数据类型

1, 整型:int
2, 小数:double(不精确) / numeric(a,b) / decimal(a,b)–a是数字的位数b是小数位数
3, 时间: date(年月日) time(时分秒) datetime(年月日时分秒) timestamp(时间戳,毫秒数)
4, 字符串: char / varchar
区别:
char 是固定长度,浪费空间char(10)
varchar 是可变长度,节省空间varchar(10)
特殊场景: 数据长度如果就是固定的,优先选char,因为查的快
5, 图片: 如果想存入数据库,只会存文件的磁盘路径D:/abc/1.jpg,不是存文件本身

六, 字段约束

使用的时间: 通常在设计表创建表时就已经确定了

–1,非空约束not null

哪个字段添加了非空约束,从此,字段值不能为空,使用not null

mysql> create table b(
 	-> password varchar(100) not null  #给字段添加非空约束
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into b values('abc');  #password字段设置了值,执行OK
Query OK, 1 row affected (0.00 sec)
mysql> insert into b values(null); #password字段值不能设置成null,否则不符合非空约束啦,报错!
ERROR 1048 (23000): Column 'password' cannot be null

–2,主键约束primary key

每个表都应该设计主键 , 主键是每条记录/数据的唯一标识.
现象是: 字段的值必须唯一且不能为空,使用primary key
主键自增策略: 使用auto_increment,让主键的值交给数据库自动维护

mysql> create table g(
	#字段名 字段类型 主键        自增
    -> id int    primary key  auto_increment,
    -> name varchar(100),
    -> age int
    -> );
Query OK, 0 rows affected (0.00 sec)
					#主键的值不用自己设置null,数据库会自增
mysql> insert into g values(null,'tony',18);
Query OK, 1 row affected (0.00 sec)
mysql> select * from g;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tony |   18 |
+----+------+------+
1 row in set (0.00 sec)


–3,唯一约束unique

哪个字段添加了唯一约束,从此,字段值不能相同

C:\Users\WangYiBo>mysql -uroot -proot 
#使用用户名root和密码root来连接数据库
mysql> show databases; #展示所有数据库
mysql> use cgb210901; #使用指定的数据库
mysql> show tables; #展示所有表
#唯一约束:添加后,字段值不能重复
CREATE TABLE d( #创建表
 tel CHAR(11) UNIQUE #唯一约束
 #字段名称 字段类型(字段长度)
);
INSERT INTO d VALUES('12345678901'); #成功
INSERT INTO d VALUES('12345678901'); #报错,值相同啦.
#Duplicate entry '12345678901' for key 1

练习:

mysql> create table e(   #创建表
    -> password varchar(10)        not null   unique
       #字段名称  字段类型(字段长度) 非空约束   唯一约束
    -> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert into e values(null); #报错,字段值不符合非空约束
ERROR 1048 (23000): Column 'password' cannot be null
mysql> insert into e values('123'); #正确的,因为满足了非空约束和唯一约束
Query OK, 1 row affected (0.00 sec)
mysql> insert into e values('123');#报错,字段值不符合唯一约束
ERROR 1062 (23000): Duplicate entry '123' for key 1
mysql>

–4,外键约束 foreign key

使用明确的一段代码表示,两个表之间的关系

#外键约束:先创建外键+再使用外键
CREATE TABLE tb_user(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(20),
 age INT,
 sex CHAR(10) DEFAULT '男'#默认约束
)
CREATE TABLE tb_user_address(
 user_id INT PRIMARY KEY,
 address VARCHAR(200),
 #foreign key(当前表的主键名) references 对方表(对方的主键)
 FOREIGN KEY(user_id) REFERENCES tb_user(id)#1.创建外键
)
#2.使用外键
#约束的情况1:子表的主键值  必须 取自 主表的主键值
#约束的情况2:主表的记录不能随便删,要保证没有被子表使用才可以删


–5,默认约束 default

哪个字段添加了默认约束,从此字段值的就有了默认值

#默认约束:给字段设置默认值而不是默认的null,使用default
CREATE TABLE a(
 id INT PRIMARY KEY AUTO_INCREMENT,
 sex VARCHAR(10) DEFAULT '男'#默认约束
)

–6,检查约束 check

哪个字段添加了检查约束,从此,字段值必须符合检查的条件才可以

#检查约束:使用check,了解
CREATE TABLE b(
 id INT PRIMARY KEY AUTO_INCREMENT,
 age INT,
 CHECK(age<200 AND age>0)#检查约束
 #数据要满足检查条件才可以
)

Guess you like

Origin blog.csdn.net/weixin_44591613/article/details/121138066