SQL语句创建数据库(增删查改)

news2024/9/22 19:27:23

SQL语句

  • 一.数据库的基础
    • 1.1 什么是数据库
    • 1.2 基本使用
      • 1.2.1 连接服务器
      • 1.2.2 使用案例
    • 1.2 SQL分类
  • 二.库的操作
    • 2.1 创建数据库
    • 2.2 创建数据库示例
    • 2.3 字符集和校验规则
      • 2.3.1 查看系统默认字符集以及校验规则
      • 2.3.2查看数据库支持的字符集
      • 2.3.3查看数据库支持的字符集校验规则
      • 2.3.4 校验规则对数据库的影响
    • 2.4 操纵数据库
      • 2.4.1 查看数据库
      • 2.4.2 显示创建语句
        • 示例
      • 2.4.3 修改数据库
      • 2.4.4 数据库删除
      • 2.4.5 查看连接情况
  • 三.表的操作
    • 3.1 创建表
    • 3.2 创建表案例
    • 3.3 查看表结构
    • 3.3 修改表
    • 3.4删除表

一.数据库的基础

1.1 什么是数据库

文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。

1.2 基本使用

1.2.1 连接服务器

输入:

mysql -h 127.0.0.1 -P 3306 -u root -p

输出:

Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
  • 注意:如果没有写 -h 127.0.0.1默认是连接本地
  • 如果没有写 -P 3306 默认是连接3306端口

1.2.2 使用案例

  • 创建数据库
create  database helloword1;

则表示创建成功:
在这里插入图片描述

  • 使用数据库
use helloword1;

在这里插入图片描述

  • 创建数据库表
create table student(
id int, //名字  类型
name varchar(32),
gender varchar(2)
);

在这里插入图片描述

  • 表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 表中查询数据
select * from student;

1.2 SQL分类

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构代表指令: create, drop, alter
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作
    代表指令: insert,delete,update
    • DML中又单独分了一个DQL,数据查询语言,代表指令: select
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

二.库的操作

2.1 创建数据库

语法:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

2.2 创建数据库示例

  • 创建名为zy1的数据库
create database zy1;

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci

  • 创建一个使用utf8字符集的 zy2 数据库
create database zy2 charset=utf8;
  • 创建一个使用utf字符集,并带校对规则的 zy3 数据库
create database zy3 charset=utf8 collate utf8_general_ci;

2.3 字符集和校验规则

2.3.1 查看系统默认字符集以及校验规则

show variables like 'character_set_database';
show variables like 'collation_database';

2.3.2查看数据库支持的字符集

show charset;

在这里插入图片描述

2.3.3查看数据库支持的字符集校验规则

show collation;

在这里插入图片描述

字符集主要是控制用什么语言。比如utf8就可以使用中文。

2.3.4 校验规则对数据库的影响

  • 不区分大小写

创建一个数据库,校验规则使用utf8-general——ci

create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
  • 区分大小写
    创建一个数据库,校验规则使用utf8_ bin[区分大小写]
create database test2 collate utf8_bin;
use test2
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
  • 不区分大小写的查询及结果
mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.01 sec)
  • 区分大小写的查询以及结果
mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
+------+
2 rows in set (0.01 sec)
  • 不区分大小写排序以及结果:
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a |
| A |
| b |
| B |
+------+

区分大小写排序以及结果:

mysql> use test2;
mysql> select * from person order by name;
+------+
| name |
+------+
| A |
| B |
| a |
| b |
+------+

2.4 操纵数据库

2.4.1 查看数据库

show databases;

在这里插入图片描述

2.4.2 显示创建语句

show create database 数据库名;
示例

在这里插入图片描述

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号 ,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

2.4.3 修改数据库

语法

ALTER DATABASE db_name

对数据库的修改主要指的是修改数据库的字符集,校验规则

将 zy1 数据库字符集改成 gbk

alter database zy1 charset=gbk;

在这里插入图片描述

2.4.4 数据库删除

DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

当前的数据库有
在这里插入图片描述
使用drop命令删除后

drop database d1;

在这里插入图片描述

2.4.5 查看连接情况

语法:

show processlist

在这里插入图片描述

三.表的操作

3.1 创建表

语法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field 表示列名
  • datatype 表示列的类型
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

3.2 创建表案例

create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是',
birthday date comment '生日'
) character set utf8 engine MyISAM;

说明:

  • 不同的存储引擎,创建表的文件不一样
    users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
    • users.frm:表结构
    • users.MYD:表数据
    • users.MYI:表索引
create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
)

在这里插入图片描述
在这里插入图片描述

3.3 查看表结构

desc 表名;

在这里插入图片描述
在这里插入图片描述

3.3 修改表

经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column)

举例:

  • 在user表中添加一条记录
insert into user values(1,'c','33','1290-9-3');

在这里插入图片描述

  • 在users表添加一个字段,用于保存图片路径
 alter table user add access varchar(100) comment '图片路径' after birthday;

在这里插入图片描述
插入新字段后,对原来表中的数据没有影响

  • 修改id,将其长度改成60
alter table user modify id varchar(60);

在这里插入图片描述

  • 删除password列
alter table user drop password;

在这里插入图片描述

  • 修改表名为userzy
alter table user rename to zy;

在这里插入图片描述

to:可以省略

  • 将name列修改为XM
alter table zy change name XM varchar(60);

在这里插入图片描述

3.4删除表

语法格式

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
  • 示例
drop table zy;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RTOS面试题】ISR中可以使用互斥锁和信号量吗?

在中断服务程序(ISR, Interrupt Service Routine)中直接使用互斥锁(mutex)和信号量(semaphore)是有风险的,因为这些同步机制通常不是中断安全的。但是,可以通过一些方法来安全地在 I…

QWT+Qt Creator+MSVC的配置与使用

目录 一、介绍 二、QWT下载 三、QWT编译 3.1 设置构建套件 3.2 修改QWT相关文件 3.3 进行QWT编译 四、QWT配置 4.1 配置QWT的lib文件 4.2 配置QWT的dll文件 4.3 配置QWT的designer的dll文件 五、代码实验 一、介绍 QWT,全称是Qt Widgets for Technical…

Python 异步编程:Asyncio 实现原理

常见的并发模型 多进程/多线程异步ActorPub/Sub Python 异步的基石:协程 协程简介 概念:协作式多任务的子程序,用户态线程或微线程(Coroutine)。 特点:子程序执行可以中断,恢复后不会丢失之…

uniapp 荣耀手机 没有检测到设备 运行到Android手机 真机运行

背景: 使用uniapp框架搭建的项目,开发的时候在浏览器运行,因为项目要打包成App,所以需要真机联调,需要运行到Android手机,在手机上查看/运行项目。通过真机调试才能确保软件开发的准确性和页面显示的完整性…

mac 2k显示器 配置

前言 今年5月份买了一个2k显示器,刚收到的时候发现只有一个1080 x 720(HiDPI)分辨率是人眼看起来比较舒服的,于是一直用着。但是直到开始写前端代码的时候,我才发现,网页在2k显示器和内建显示器的布局竟然…

Python 循环引用与内存泄漏:深度解析

Python 循环引用与内存泄漏:深度解析 在Python编程中,循环引用和内存泄漏是两个需要特别注意的问题。本文将深入探讨Python中的循环引用现象、其导致的内存泄漏问题,并提供详细的解决思路与方法。同时,我们还将分析一些常见场景&…

【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏(8.6 已修复)

文章目录 bug以及解决方法bug原理锐评后续 bug以及解决方法 现在是2024年8月,我打开csdn手机编辑器打算修改一下2023年12月的一篇文章,结果一进入编辑器,源码就变成了下面这个样子,我起初不以为意,就点击了发布&#…

【IoT NTN】面向 5G/6G 卫星:NTN 标准发展、关键技术与未来思考

目录 国际标准化进展 架构及关键技术 5GNTN组网架构 关键技术 1、时频同步技术 2、覆盖增强技术 3、移动性管理技术 4、混合自动重传请求技术 5、自适应调制与编码技术 挑战与潜在解决方案 星地协同全域覆盖模型 星地协同多维资源调度 星地协同多层卫星路由 星地…

网络主播进入国家职业分类!1500万主播将有新身份

在营销策划界摸爬滚打十多年的我,最近可是被一则劲爆消息给震撼到了——国家正式官宣了19个全新职业,这可是职场版图的一次大扩张啊! 其中最让人眼前一亮的是,网络主播竟然堂而皇之地登上了新职业的大舞台,正式“转正…

【多线程-从零开始-陆】wait、notify和notifyAll

线程饿死 一个或多个线程因为无法获得执行所需的资源(如CPU时间、锁、或其他同步控制)而被长时间阻塞或延迟执行的情况。尽管这些线程可能处于可执行状态并且已经准备好运行,但由于资源分配的不均衡或调度策略的问题,它们无法获得…

快讯 | 单卡4090显卡即可解锁视频生成,智谱AI CogVideoX模型开源!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…

认识RAID磁盘阵列

文章目录 1、RAID磁盘阵列介绍2、多种RAID级别RAID 0 (条带化存储)RAID 1 (镜像存储)RAID 5RAID 6RAID 10(先做镜象,再做条带)RAID 01(先做条带,再做镜象)区别…

leetcode日记(64)最小覆盖子串

很复杂的题目,无论是思路还是实践都很难… 思路还是看了答案(?)设定两个指针“框”出一串字符串,初始两个指针都指在s的零位,先移动下指针,直到使框出的字符串中包含t中所有字符串,…

c# 排序、强转枚举

List<Tuple<double,int>> mm中doble从小到大排序 mm本身排序 在C#中&#xff0c;如果你有一个List<Tuple<double, int>>类型的集合mm&#xff0c;并且你想要根据Tuple中的double值&#xff08;即第一个元素&#xff09;从小到大进行排序&#xff0c;同…

TCP全队列连接,tcpdum抓包

TCP全队列连接&#xff0c;tcpdum抓包 1. listen的第二个参数作用2. 理解全连接队列&#xff08;原理&#xff09;3. 为什么要有全连接队列并且队列长度要适当4. 使用不tcpdump 进行抓包&#xff0c;分析TCP过程&#xff08;三次握手&#xff0c;四次挥手&#xff09;4.1安装tc…

CVE-2023-28525~文件上传【春秋云境靶场渗透】

# 今天我们来攻克CVE-2023-28525文件上传漏洞# 看到页面&#xff0c;经过尝试 账号&#xff1a;admin 密码&#xff1a;admin# 发现Posts可以添加文件上传# 尝试发现&#xff0c;只能上传图片格式的文件&#xff0c;那我们试一下看能不能上传成功# 发现上传失败&#xff0c;发现…

console与控制台使用demo

文章目录 console是一个普通(实例)对象A、函数对象拥有2个属性&#xff1a;B、console只有__proto__属性&#xff1a;C、综上&#xff0c;console是一个实例对象 console拥有的函数&#xff08;特殊列举&#xff09;占位符用法以参数为key记录执行次数——count()dir()和dirxml…

Cmake基础教程--第1章:初识cmake

Cmake基础教程--第1章&#xff1a;初识cmake 何为CmakeCmake的优缺点优点缺点 Cmake与makefile之间的关系C/C 如何编译为可执行文件一个最简单的Cmake示例 从本篇文章开始&#xff0c;我会出一系列文章&#xff0c;致力于Cmake工具的学习使用。阅读本文章之前&#xff0c; 作者…

#MFC 编译错误msvcrt.lib(exe_main.obj) : error LNK2019

如果是CMake&#xff0c;需要改如下&#xff1a; set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") 改为 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS") 如果是mfc工程文件&#xff0c;需…

【数据结构】五、树:7.哈夫曼树、哈夫曼编码

3.哈夫曼树和哈夫曼编码 文章目录 3.哈夫曼树和哈夫曼编码3.1带权路径长度3.2哈夫曼树的定义和原理3.3哈夫曼树的构造代码实现 3.4特点3.5哈夫曼编码压缩比代码实现 3.6哈夫曼树-C 3.1带权路径长度 #mermaid-svg-yeVKyVnDwvdIc5ML {font-family:"trebuchet ms",verda…