SQL基本操作

基本操作:CRUD

将SQL的基本操作根据对象进行分类,分为三类:库操作,表操作(字段),数据操作

库操作

对数据库的增删改查

新增数据库

基本语法

Create database 数据库名字【库选项】

库选项:用来约束数据库,分为两个选项

1. 字符集设定:charset/character set 具体字符集(数据存储的编码格式),常用字符集:GBK和UTF8

2. 校对集设定:collate 具体校对集(数据比较的规则)

其中:数据库名字不能用关键字(已被使用的字符)或者保留字(将来可能会用到的)。

当创建数据库的SQL语句执行之后,发生了什么?

1. 在数据库系统中,增加了对应的数据库信息

2. 会在保存数据的文件夹下:data目录,会创建一个对应数据库名字的文件夹

3. 每个数据库下都有一个opt文件,保存了库选项

查看数据库

  1. 查看所有数据库:show databases;

  2. 查看指定部分的数据库:模糊查询

    show databases like ‘pattern’; – pattern是匹配模式

    %:表示匹配多个字符

    -:表示匹配单个字符

  3. 查看数据库的创建语句:

    show create database 数据库名字

更新数据库

数据库名字不可以修改。

数据库的修改仅限库选项:字符集和校对集(校对集依赖字符集)

alter database 数据库名字【库选项】;

删除数据库

所有的操作中,删除是最简单的

drop database 数据库名字

当删除数据库语句执行后,发生了什么?

1. 在数据库内部看不到对应的数据库

2. 在对应的数据库存储的文件夹内,数据库名字对应的文件夹也被删除(级联删除:里面的数据表全部删除)

注意:数据库的删除不是闹着玩的,不要随意删除,应该先进行备份后操作(删除不可逆)

表操作

表与字段是密不可分的。

新增数据表

create table [if not exists] 表名(

字段名字 数据类型,

字段名字 数据类型 – 最后一行不需要逗号

)[表选项];

 if not exists:如果表名不存在,那么就创建,否则不创建。
 表选项:控制表的表现
    1. 字符集:charset/character set 具体字符集; -- 保证表中数据存储的字符集
    2.  校对集:collate 具体校对集
    3.  存储引擎:engine 具体存储引擎(innodb和myisam)

任何一个表的设计都必须指定数据库。

方案一:显示的指定所属的数据库

create table 数据库名.表名 – 将当前数据表的创建指定到数据库下

方案二:隐式的指定表所属的数据库:先进入到某个数据库环境,然后这样创建的表自动归属到某个指定的数据库。

进入数据库环境:use 数据库名字;

当创建数据表的SQL指定执行之后,到底发生了什么?

1. 指定数据库下已经存在对应的表

2. 在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系)

查看数据表

数据库能查看的方式,表都可以查看

1. 查看所有表:show tables;

2. 查看部分表,模糊匹配:show tables like ‘pattern’;

3. 查看表的创建语句 show create table 表名;

4. 查看表结构:查看表中的字段信息

desc/describe/show columns from 表名;

修改数据表

表本身存在,还存在字段。表的修改分为两个部分:修改表本身和修改字段

修改表本身

表本身可以修改:表名和表选项

修改表名:rename table 老表名 to 新表名;

修改表选项:字符集,校对集和存储引擎

alter table 表名 表选项[=]

修改字段

字段操作很多:新增,修改,重命名,删除

新增字段

alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];

位置:字段名可以存放表中的任意位置

first:第一个位置

after:在哪个字段之后:after 字段名 默认是在最后一个字段之后

修改字段:通常是修改属性或者数据类型

alter table 表名 modify 字段名 数据类型 [属性] [位置]

重命名字段

alter table 表名 change 旧字段 新字段 数据类型 [属性] [位置];

删除字段

alter table 表名 drop 字段名;

小心:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)

删除数据表

drop table 表名1,表名2..; – 可以一次性删除多张表

当删除数据表的指令执行之后,发生了什么?

1. 在表空间中,没有了指定的表

2. 在数据库对应的文件夹下,表对应的文件也会被删除

注意:删除有危险,操作需谨慎(不可逆)

数据操作

新增数据

有两种方案

方案一:给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据,都需要使用引号(建议是单引号)设置。

insert into 表名 values(值列表) [,(值列表)]; –可以一次性插入多条记录

方案二:给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定的字段的顺序一致。

insert into 表名 (字段列表) values (值列表)[,(值列表)];

查看数据

select (*/字段列表) from 表名;

查看所有数据:

查看指定字段,指定条件的数据

更新数据

update 表名 set 字段 = 值 [where 条件]; – 建议都有where,要不就是更新全部

更新不一定会成功,比如没有要更新的数据。

删除数据

删除是不可逆的,需谨慎

delete from 表名 [where条件];

中文数据问题

中文数据问题本质是字符集问题。

计算机只是别二进制,人类更多是识别符号,需要有个二进制与字符的对应关系(字符集)。

客户端向服务器插入中文数据,没有成功。

查看所有字符集

show character set;

查看服务器默认的对外处理的字符集

show variables like ‘character_set%’;

问题根源:客户端数据只能是gbk,而服务器认为是utf8。

解决方案:改变服务器,默认的接收字符集为gbk。

set character_set_client = gbk;

再次插入数据(中文)

查看数据,发现乱码

原因:数据来源是服务器,解析数据是客户端(客户端只识别gbk),

但是服务器给的数据是utf8,所有乱码。

解决方案:修改服务器给客户端的数据字符集为gbk

set character_set_results =gbk;

查看数据

set 变量 = 值,修改只是会话级别(当前客户端当次连接有效,关闭失效)

设置服务器对客户端的字符集的认识:可以使用快捷方式:set names 字符集

set names gbk; –> character_set_client,character_set_results,character_set_connection;

connection:连接层:是字符集转变的中间者,如果统一了效率更高,不统一也没影响。

校对集问题

校对集:数据比较的方式

校对集有三种格式

_bin:binary,二进制比较,取出二进制,一位一位的比较,区分大小写

_cs:case sensitive,大小写敏感,区分大小写

_ci:case insensitive,大小写不敏感,不区分大小写

查看数据库支持的校对集

show collation;

校对集应用:只有当数据产生比较的时候,校对集才会生效

校对集:必须在没有数据之前声明好,如果有了数据,那么再进行校对集修改,那么修改无效。

Web乱码问题

动态网站由三部分构成:浏览器,apache服务器(PHP),数据库服务器

字符集(中文),数据需要在三个部分之间来回传递:很容易产生乱码

如何解决乱码:统一编码(三种合一)

但是事实不可能:浏览器是用户管理(根本不可能控制)

但是必须要解决这些问题(由PHP来做)

时间: 2024-08-06 12:51:57

SQL基本操作的相关文章

MYSQL基础笔记(二)-SQL基本操作

SQL基本操作 基本操作:CRUD,增删改查 讲SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: 1 Create database 数据库名字[库选项]: 库选项:用来约束数据库,分为两个选项:1.字符集设定:charset/character set 具体字符集(数据存储的编码格式,中文常用字符集gbk和utf8.).2.校对集设定:collate 具体校对集(数据比较的规则). 例如: 其中:数据库名字不能

MySQL教程 SQL基本操作

SQL的基本操作无非就是增删改查(CRUD),根据对操作的对象分类,又可以分为三类,库操作,表操作与数据操作 库操作 新增数据库 CREATE DATABASE [IF NOT EXISTS] db_name [库选项] 其中库选项是用来约束数据库, 分为两个选项 字符集设定:CHARACTER SET 具体字符集(数据存储的编码格式): 常用字符集: GBK和UTF8 校对集设定:COLLATE 具体校对集(数据比较的规则) -- 创建一个名称为db的数据库,并且设置字符集为utf8 CREA

ORACLE数据库的SQL基本操作

作为一个代码小白,最近一个月在开始学习python语言,这一学习路上经历了一场听完学习视频,看完老师敲的代码,自己上手写,一团乱麻... 最尴尬的时刻就是赶在年前公司重新面试打分,问到了数据库,发现SQL这块也挺重要,工作中经常用到,发现太久未系统整理数据库知识,趁此机会整理如下 首先,ORACLE数据库(Oracle Database)是一款关系数据库管理系统,它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好,使用方便.功

sql基本操作语句

sql: 结构化查询语言T-SQL:sql server数据库中用的查询语言数据库对象操作:一.建库: 二.建表: 三.数据操作 1.添加   INSERT [INTO] 表名 (列列表) VALUES(值列表)    a.  列列表和值列表一一对应(顺序和个数)    b.可以为null的列可以省略    c.标识列不能在列表中出现    d.数据不能违法约束  2.修改数据   UPDATE 表名 SET 列名1=值1,列名2=值2 WHERE 条件    3.删除数据   DELETE 

SQL基本操作总结

1.SQL简介 结构化查询语言 (层次模型,网状模型,关系模型) 关系模型是目前的主流 (Oralce,mysql mssql ) SQL标准:ANSI (1992 1997 2002 ISO) 方言与Sql 标准 学习者:SQL标准 方言: 只支持自己当前的数据库 2.常用数据库 Oracle MySQL SQL Server SQLite MySQL(重点) 安装 Client---->Server------>库------>表3.建库 1.登录MySQL mysql -u roo

Oracle SQL 基本操作之 用户权限管理方法

最近把有关用户操作和权限管理的东西整理了一下,虽然不少博客都有过类似的整理,但是自己发现他们的内容或多或少都有些错误.于是,本人亲自对每条语句进行验证后,并对其做了自己的讲解和分析,撰写本篇博客.或仍有错误之处,望各位指出,谢谢! 闲话少说,开始进入正题! 一.系统用户sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 二.登陆 sqlplus / as sysdba;//登陆sys帐户 sqlplus sys

SQL 基本操作

----------------------------/////数据库操作//////-----------------------------指向当前使用数据库use mastergo--创建数据库create database studenton primary --primary 参数可以省略(--数据库文件逻辑名称name='studentDB_date',--数据库物理文件地址 绝对地址filename='d:\studentDB_date.mdf',--数据库文件初始大小size=

PL/SQL基本操作

1.常规过程化形式 declare o_booking_flag char(10); begin -- Call the procedure destine_ticket('000000037', 20, 'E', 2, o_booking_flag); dbms_output.put_line(o_booking_flag); end; 2.存储过程 create or replace procedure destine_ticket(i_flightId in char, --不需要些类型值

mysql中的sql基本操作

数据库环境:Windows 10 数据库版本:Mysql 5.7 一.请写出下列查询语句并操作1.链接数据库 mysql -uroot -p 2.显示数据库版本 mysql --version; 3.查看当前所有数据库 show databases; 4.创建demo数据库,并设置字符集为utf8 CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 5.选择使