C++ 数据库MySQL 学习笔记(1) - 数据库操作

C++ 数据库MySQL 学习笔记(1) - 数据库操作

如何登录MySQL

控制台登录MySQL 命令

mysql -h 127.0.0.1 -uroot -p(输入密码)

关系模型

关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维,可以把它们看作很多Excel表。

在这里插入图片描述

  • 表的每一行称为记录(Record),记录是一个逻辑意义上的数据

  • 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段

  • 字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为NULL。注意NULL表示字段数据不存在。一个整型字段如果为NULL不表示它的值为0,同样的,一个字符串型字段为NULL也不表示它的值为空串

    通常情况下,字段应该避免允许为NULL。不允许为NULL可以简化查询条件,加快查询速度,也利于应用程序读取数据后无需判断是否为NULL。

数据库的操作

像文件一样,我们可以随时对数据库执行如下操作:

  1. 创建数据库
  2. 查看数据库
  3. 选择数据库
  4. 删除数据库

创建数据库

创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是进行数据库管理的基础。

  1. 在MySQL中,创建数据库之前,可以使用SHOW语句来显示当前已经存在的数据库,具体SQL语句为 show databases
  2. 创建数据库的SQL语句为 create database *databases_name*;(其中参数database_name表示所要创建的数据库的名称)

查看数据库

查看数据库在上面已提及,SQL语句为 show databases;

选择数据库

在数据库管理系统中一般会存在许多数据库。在操作数据库对象之前,需要先选择一个数据库。

在MySQL中选择数据库可以通过SQL语句USE来实现,其语法形式为 use *databases_name* database_name参数表示所要选择的数据库名字

在选择具体的数据库之前,首先要查看数据库管理系统中已经存在的数据库,然后才能从这些已经存在的数据库中进行选择。如果选择一个不存在的数据库,就会出现错误

删除数据库

在删除数据库之前,首先需要确定所操作的数据库对象已经存在。在MySQL中删除数据库可以通过SQL语句DROP DATABASE来实现, 具体语法形式为drop database *database_name* database_name参数表示所要删除的数据库名字

注:删除数据库时mysql 不会确认,千万要小心!!!

数据表操作

在MySQL数据库中,表是一种很重要的数据库对象,是组成数据库的基本元素,由若干个字段组成,主要用来实现存储数据记录。表的操作包含创建表、查询表、修改表和删除表,这些操作是数据库对象的表管理中最基本也是最重要的操作。

在这里插入图片描述

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school 
mysql> create table class(class_id int, class_name varchar(128), class_teacher varchar(64));         #创建表class
mysql> insert into class values (101, '六年级一班', '马老师');  #往表中插入101班记录
mysql>insert into class values (102, '六年级二班', '潘老师');   #往表中插入102班记录
mysql>select * from class;  #查询表class 中的全部记录
mysql>select * from class where class_id=101;  #查询表class 中的全部记录

表的创建

基本语法:

**CREATE TABLE** <表名> ([表定义选项])[表选项][分区选项];

其中,[表定义选项]的格式为:

<列名1> <类型1> [,…] <列名n> <类型n>

CREATE TABLE 命令语法比较多,其主要是由表创建定义(create-definition)、表选项(table-options)和分区选项(partition-options)所组成的。

mysql> use school;   #选择数据库school 
mysql> create table class1(class_id int, class_name varchar(128), class_teacher varchar(64));         #创建表class

CREATE TABLE 语句的主要语法及使用说明如下:

  • - CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
  • <表名>:指定要创建表的名称,表名称可以被指定为 db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。有些数据库可以使用加引号的识别名,例如,‘mydb’.‘mytbl’ 是合法的,但 mysql 是不合法
mysql> create table school.class2(class_id int, class_name varchar(128), class_teacher varchar(64));         #创建表class2 
mysql> create table ‘school’.’class3’(class_id int, class_name varchar(128), class_teacher varchar(64));     #Error! 会创建失败 

<表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition, 或者叫类型定义)以及可能的空值说明、完整性约束或表索引组成,如下图所示

mysql> use school;   #选择数据库school 
mysql> create table class4(class_id int PRIMARY KEY, class_name varchar(128) NOT NULL, class_teacher varchar(64) UNIQUE);         #创建表class3 

注意:

  • 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误
  • 提示:使用 CREATE TABLE 创建表时,必须注意以下信息:
    • 要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等
    • 数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开

列名

1)采用26字母和0-9的自然数加上下互相 ‘’ 组成,命名简洁明确,多个单词用下划线 ‘’ 隔开

2)全部小写命名,尽量避免出现大写

3)字段必须填写描述信息

4)禁止使用数据库关键字

5)字段名称一般采用名词或动宾短语

6)采用字段的名字必须是易于理解,一般不超过三个英文单词

7)在命名表的列时,不要重复表的名称(如:在 user 表中,出现 user_name 字段)

8)字段命名使用完整名称

列的类型定义

整形类型

整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。

mysql> use school;   #选择数据库school 
mysql> create table class5(class_id int , class_name varchar(128), class_teacher varchar(64) );         #创建表class5 

整数类型的附带属性:

  1. 类型名称后面的小括号 指定显示宽度(并不是该类型占用字节数)。如果不显示指定宽度则默认为tinyint(3)、 smallint(5)、 mediumint(8)、 int(11) 和 bigint(20)。一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。
mysql> use school;   #选择数据库school 
mysql> create table class6(class_id integer(5) zerofill, class_name varchar(128), class_teacher varchar(64) );         #创建表class6 
  1. UNSIGNED(无符号) 如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,它的取值范围是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符号范围是-128~+127,而无符号范围是 0~255。如果一个列指定为 zerofill,则 MySQL 自动为该列添加 UNSIGNED 属性。

    mysql> use school;   #选择数据库school 
    mysql> create table class6(id integer unsigned , name varchar(128), teacher varchar(64) );         #创建表class6 
    mysql> create table class7(id integer zerofill , name varchar(128), teacher varchar(64) );         #创建表class7, id类型为 int unsigned
    
  2. AUTO_INCREMENT 在需要产生唯一标识符或顺序值时,可利用此属性,这个属性只用于整数类型。AUTO_INCREMENT 值一般从 1 开始,每行增加 1。 一个表中最多只能有一个 AUTO_INCREMENT列 。对于任何想要使用 AUTO_INCREMENT 的列,应该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为 UNIQUE 键。 例如,可按下列任何一种方式定义 AUTO_INCREMENT 列:

mysql> use school;   #选择数据库school 
mysql> create table class8(id integer auto_increment PRIMARY KEY , name varchar(128), teacher varchar(64) );         #创建表class8, id 具有自增长属性
mysql> create table cla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值