草庐IT

MySQl表的增删查改(CRUD)

快到锅里来呀 2023-07-13 原文

新增

1.单行插入        insert into 表名 values (值,值...);                           

2.指定列插入    insert into 表名 (列名,列名...) values (值,值...);       

3.多行插入        insert into 表名 values (值,值...), (值,值...)...;   

   

查询

1.全列查询            select * from 表名;

2.指定列查询        select 列名,列名... from 表名;

3.查询带表达式    select 表达式 from 表名;

4,查询带别名        select 表达式 as 别名 from 表名;

5.查询去重            select distinct 列名 from 表名;

6.查询结果排序     select 列名 from 表名 order by 列名 asc/desc;  升/降

7.条件查询            select 列名 from 表名 where 条件;

(基本:and且  or或    范围 [前闭后闭的]:between...and...  in  模糊  like %_  is null )

8.分页查询            select 列名 from 表名 limit N offset M;

修改

update 表名 set 列名 = 值, 列名 = 值... where 条件

删除

delete from 表名 where 条件;      删除条件控制的列

delete from 表名;                         删除所有列

修改表结构的关键字都是 alter table 表名 ,再跟具体修改的语句

添加表字段

alter table table_name add 字段名称 字段类型

删除表字段

alter table table_name drop 字段名称

修改表字段

alter table table_name change 旧字段名称 新字段名称 字段类型

alter table table_name modify 字段名称 字段类型 

目录

1. 新增(create)

2. 查询(retrieve)

2.1 全列查找

2.2 指定列查询

2.3 查询字段为表达式

2.4 给查询结果的列起别名

2.5 查询去重

2.6 对查询结果进行排序操作

2.7 条件查询

2.7.1 基本查询 

2.7.2 范围查询

2.7.3 模糊查询

 2.8 分页查询

3. 修改(update)

4. 删除(delete)


1. 新增(create)

insert into 表名 values (值 , 值 ...);

(1)这里值的类型和个数,要和表的列的类型和个数要匹配

(2)使用单引号和双引号都可以表示字符串

(3)在创建数据库时就要确定好,要使用的字符集

 

 在SQL中,没有字符类型,使用单引号和双引号都可以表示字符串

 🤠 下面看这个

 如果我们放入的字符是汉字就会报错,这是因为MySQL默认是拉丁文,是不支持中文的 

下面可以输入SHOW VARIABLES LIKE 'character%';查看字符编码方式

 1. 如果要支持中文,那就要重新创建数据库来支持中文比如utf8

create database 数据库名 character set utf8;

但这种方法,每次创建库时都要指定,比较麻烦

2. 还可以,直接修改mysql配置文件,把数据库字符集配置成默认的想要设置的字符集  

这样以后就不用指定,可以直接插入了

下面来修改一下mysql配置文件

(1)先找到一个my.ini的文件

可以搜索电脑中的服务找到mysql这一项,点击属性

 

 (2)在电脑中找到这个路径下的my.ini文件,先备份,然后再打开它

(3)分别找到mysql和mysqld下的 这两项去掉# 给后面加上utf8保存

(4)重新启动服务器,重新建库、建表

指定列插入 多行插入

insert into 表名(列名,列名...) values (值,值,,,);     指定列插入

insert into 表名 values (值,值...),(值,值)...;            多行插入


2. 查询(retrieve)

2.1 全列查找

select * from 表名;   查询出当前表所有的行,和所有的列

 

2.2 指定列查询

 select 列名 from 表名;

 这里查询只能看见两列,不代表其它列被删除,这只是一个临时表

临时表示根据服务器的数据生成的,所有的查询操作,都不会影响服务器磁盘上的数据 

2.3 查询字段为表达式

select 表达式 from 表名; 

 表达式查询,列和列之前进行计算

如果列和列之间计算,加上字符就会发出警告 

 临时表的列名,就是表达式的内容,这样看不美观,可读性不高

所以可以在查询时,给临时表的列指定别名

2.4 给查询结果的列起别名

select 列名 as 别名 from 表名;

2.5 查询去重

select distinct 列名 from 表名;

 

2.6 对查询结果进行排序操作

升序排列    select 列名 from 表名 order by 列名(排序列);     或者给后面加asc

降序排列    select 列名 from 表名 order by 列名(排序列) desc;     

 

 降序排序,要在最后加上desc

 指定多个列排序,哪个列在前,哪个列优先级高

 也可以分别,指定一个列升序,一个列降序

2.7 条件查询

查询时指定筛选条件, where 子句来表示子句

select 列名 from 表名 where 条件;

条件查询需要注意各种运算符,这里特别说明 

= :等于,NULL不安全,例如:null = null 的结果是null

<=> : 等于,null安全,例如:null<=>null 的结果是true  

2.7.1 基本查询 

按条件,查询单行 

 

 按条件,两行比较

 按条件表达式,进行查询

and和or

 

2.7.2 范围查询

(1)between...and...   范围是前闭后闭的

 当表很大时,条件查询遍历表,效率非常低

所以可以优化查询,最有效的方法是根据索引

(2)in

 

2.7.3 模糊查询

依赖一些通配符来表示要匹配的值是啥样的(like 匹配的是0个以上的字符,包含0)

% 代替任意个任意字符      _代替一个任意字符

 like 匹配时比较低效的

 NULL的查询

is null / is not null

  

 2.8 分页查询

很多时候数据太多,分成多个页进行显示

select 列名 from 表名 limit N;     查询前N条记录

select 列名 from 表名 limit N offset M; 从第M条记录开始,

 

 

3. 修改(update)

update 表名 set 列名 = 值, 列名 = 值 ... where 条件;

 

4. 删除(delete)

delete from 表名 where 条件;

要是不写条件,就全部删除了 ,但是表换在,只是表剩一个空表了


有关MySQl表的增删查改(CRUD)的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  3. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  4. ruby-on-rails - 当我通过 rvm 使用 rails3 时,如何在 ubuntu 上安装 mysql2 gem? - 2

    我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。

  5. ruby - 点列表的 RGeo 凸包 - 2

    RGeo有可用的凸包方法,但在这方面根本没有文档。给定一组点,我如何找到它们的凸包? 最佳答案 好问题。事实证明,有一种名为“MultiPoint”的几何类型适用于此。我做了一个简单的例子来测试它,它似乎运行良好。f=RGeo::Geos.factory(:srid=>3361,:buffer_resolution=>8)#mytypicallocalrectilinearprojectionfactorywithmydefaultsettings.coords=[[1,1],[2,2],[1,3]]points=[]coords.

  6. ruby - Rails 3.2 CRUD : . 其中 'or' 有条件 - 2

    使用ruby​​onrails,我想做类似的事情:@tasks=Task.where(:def=>true||:house_id=>current_user.house_id)执行此操作的最有效/最干净的方法是什么? 最佳答案 你可以这样做:Task.where("def=?orhouse_id=?",true,current_user.house_id)一般情况是:Model.where("column=?orother_column=?",value,other_value)您还可以利用Arel:t=Task.arel_tabl

  7. Centos7-yum安装mysql-修改密码-无密码登录-安全配置 - 2

    目录1、yum安装mysql修改密码(1)在mysql里面修改(2)第二种方式,利用mysqladmin修改密码2、没有密码,登录mysql修改密码3、mysql的安全设置1、yum安装mysql在CentOS中默认安装有MariaDB(MySQL的一个分支),安装完成之后可以直接覆盖MariaDB。rpm-qa|grepmariadb查询是否安装了mariadbrpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_64卸载mariadwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.

  8. ruby - 安装 dm-mysql-adapter 时出错 - 2

    我是Ruby的新手。我安装了DataMapper并且正在尝试安装dm-mysql-adapter-1.0.2gem。但是当我尝试安装时,出现以下错误。我正在使用ubuntu操作系统。vinoth@vinoth-laptop:~/Downloads$geminstalldm-mysql-adapter-1.0.2----with-mysql-lib=/usr/lib/mysql----with-mysql-conf=/usr/bin/mysqlWARNING:Installingto~/.gemsince/home/vinoth/gemsand/home/vinoth/gems/bina

  9. ruby-on-rails - gem 列表中的 mysql2 gem 但获取项目找不到 gem - 2

    我目前正在构建一个需要mysql2gem的RoR项目。我成功安装了gem。因为它出现在我的gem列表中。[root@vc2cmmka035538nsimple_cms]#gemlist***LOCALGEMS***actionmailer(3.2.3)actionpack(3.2.3)activemodel(3.2.3)activerecord(3.2.3)activeresource(3.2.3)activesupport(3.2.14,3.2.3)arel(3.0.2)bigdecimal(1.1.0)builder(3.2.2,3.0.0)bundler(1.1.5)c2c_li

  10. ruby - 如何在 heroku 中使用自己的 mysql 数据库服务器? - 2

    我想使用托管在我自己服务器上的mysql数据库。我已经更改了DATABASE_URL和SHARED_DATABASE_URL配置变量以指向我的服务器,但它仍在尝试连接到heroku的amazonaws服务器。我该如何解决? 最佳答案 根据Herokudocumentation,更改DATABASE_URL是正确的方法。Ifyouwouldliketohaveyourrailsapplicationconnecttoanon-Herokuprovideddatabase,youcantakeadvantageofthissamemec

随机推荐