前言:

很多同学呀,对数据库的操作仅仅只能在于Navicat 等第三方可视化的工具上面!!!! 这是可怕的,数据库的操作十分的重要,甚至,他是程序最重要的部分。

面试经常问题, 了解那个数据? 写一个sql分页 查10w条数据的前50条    。  说说索引。         然后有些同学就 what???      不要着急

万丈高楼平地起!!!!!!!加油,让我们从基础开始一步一步脚印建起属于你的高楼。

从今天开始,让我原生的接触SQl   ,克里斯的 环境是 win10x64    + mysql 5.5       ,希望能对数据库渴望的你们有所帮助。

首先是安装  这一个步骤我就跳过啦  网上很多大神的教材

然后 连接数据库  连接数据库有两种方式

1. 第一种:直接通过 终端连接   (windows 就是cmd的)

 连接的语法呢 ——>     mysql -h主机名 -P端口号 -u用户名 -p 密码

 若是直接连接本机电脑的mysql 直接可以 ——>  mysql -u用户名 -p 密码   或者    mysql -u用户名 -p   回车后再输入密码(推荐这种方法 安全 密码是隐藏的)

 第二种:通过第三方的可视化软件(例如:Navicat等)

 这个就不用我教了 哈哈 和玩游戏一样

2.连接好了 咋们就开始查看数据库呗 看一下我们的mysql(不管什么数据库,博主以mysql为例)里面有没有已存在的数据库

 show databases;

3.新建数据库   假如没有数据库咋们就要新建一个数据库

 create database 数据库名 ;

 如果你需要的是为该数据选择所对应的 字符集编码呢? 以及排序方式?  没错我们当然有办法,如下语法即可!我们以utf8 为例

 CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

4.现在有数据库了,咋们如何进去呢?

 use 库名;  

5.进入了指定的数据库,我们如何查看改数据库的数据表呢??

 show tables ;

6.有些同学说,不行,我要查看的是别的数据的数据表,而非当前数据库的,我岂不是要退回到其他数据库进行操作?  NO ,当然可以在a数据库 查看 b数据的表

 show tables from 库名;

7.有同学问,哎呀,我刚才玩游戏去啦,忘记我在那个数据库了,我该怎么办呢。不要慌,山人自有妙计。

 select  databese();

8.哎呀,我查看了表,但是我怎么看表的结构呢?

 desc 表名字;

9.那么我不想要这个数据库怎么办? 我如何删掉!

 drop database 库名称; 

10.删库我会了,那么删表呢?

 drop table 表名字;

11.我去,克里斯,你告诉我怎么删表。我表都没有怎么删,又不告诉我如何建表。

 create table 表名字;

12.我去,刚才我女朋友说要和我分手,我有一抖,建表时候,名字输错了,不说我想要的,我该如何改名字!

 rename table 原名字 to  新名字;

 alter table 原名字 rename  新名字;

 alter table 原名字 rename to 新名字;

 PS:三种方式效果都一样       你随意选即可

13.我这个人呀,不仅仅名字能搞错,我还希望我能对表的结构能修改,我能新增,删除某个表的字段。山人有点小慌,但是问题不大,如下;

 PS:注意啦,对于表的结构修改,这算是比较难的地方,一般而言,不会轻易对表的结构进行修改,修改的时候也要 十分的注意!! 否则一个细节,将会带来很严重的后果,一定要细心操作!!!

 增加一列

 alter table 表名字 add column 列名字 数据类型 约束; 或者     alter table 表名字 add 列名字 数据类型 约束;

 删除一列

 alter table 表名字 drop column 列名字; 或者 alter table 表名字 drop 列名字;

 重命名列名字

 alter table 表名字 change 原列明  新列名 数据类型 约束;

 ps:你会发现 其实重命名 只是一个 change 操作 并且 这里的数据类型不能省略否则会失败 , 而且当原列名和新列名相同的时候,制定新的数据类型和约束,就可以达到修改 改列的数据类型和约束的作用!

      十分重要的一点!!!!!!!!!!!!    当你修改数据类型的时候 ,切记! 可能会导致数据丢失,一定要先备份!再操作。切记切记!!

 当然改变某一列的数据类型 还有一张方法 如下

 alter table 表名字 modify 列名字 新数据类型;

 不好意思,前两日克里斯因为个人原因,没有及时更新,再此向大家说句抱歉。那么从今天开始我们开始学习 【增删改查】的基本语法,让我们开始吧。

  PS:为了方便大家,克里斯呢特意用Windows的系统来做演示。快来亲我,哈哈哈哈哈哈哈哈。

  首先我放出,我用于做测试的数据表结构,如下图;

  

  脚本如下

-- 注解 运行此脚本即可
-- 作者 克里斯
-- 时间 2019-1-22
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- 建表脚本
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `userid` varchar(11) NOT NULL COMMENT '用户id',
  `username` varchar(16) DEFAULT NULL COMMENT '用户名',
  `phone` varchar(255) DEFAULT NULL COMMENT '用户电话',
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- 插入数据 这个你可以随意
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', 'chris', '12345678912');
INSERT INTO `tb_user` VALUES ('2', 'zhangqi', '12345132122');
INSERT INTO `tb_user` VALUES ('3', 'lisi', '1451311333');

 1.select 查询语句    先声明!!!!!大多数编程语言,都必须要用半角英文 进行编写!!切记 sql也是一样的

 两种

  第一种呢,就是一股脑的查,查出该表的所有字段(不推荐)语法如下:

  语法: select * from 表名字; 

  ps:sql对大小写不明感,可随意(也就是说要不你就大写,要不你就小写,至于一个关键字大小写同时存在行不行呢?这个你去试试,我不告诉你。哈哈让你刻骨铭心)。

  示例1:

  

  

  第二种呢,则是选择你想查询的列,例如我只要查询 tb_user表中的 【username】 这个字段,语法如下:

  语法:  select   字段名   from  表名字;

  示例2:

  

  2.查询之 distinct 去重 关键字

  首先呢,我们在实际项目中,很容易出现什么情况呢,我们需要所有唯一的数据字段,例如,里面有很多个同名的人,我不要,我只要一个,那该怎么做呢?

  首先我们先看看 啥也不写 直接select 是什么个情况

  示例3

  

  没错,就会出现两个李四,我去克里斯,不行我就喜欢多的。哈哈那我告诉你,你只能有一个老婆。如何解决呢??   写法如下,我们只需要加入一个关键字【distinct】即可!

  语法:  select distinct 你需要去重复字段名  from 表名字;

  示例4:

  

 3.查询之 where 条件 关键字

  为什么会出现where呢? 字面意思就看得出来 这是一个模糊不定的词? 我该怎么找,去哪里找,找怎样的?

  例如:上面的表中,有两个李四,对吧,细心的同学一定发现了,他们的【userid】是不一样的,那么我们就可以通过userid 拿到那个你想要的 李四

  语法: select  列名称 from 表名称 where 列 运算符 值 ;

  ps:有同学就会有疑问? 我去,你什么 列 运算符 值啊  这些我都听不懂! 你教个蛇皮啊,好的 ,不要急嘛,下面我放出一张表,你们不需要记住,你们先看我示例,看完呢,自己多试试即可!

 

操作符 描述
= 等于
<>   ps:有些数据库支持   != 这样的写法 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

  示例5:我们就来试试水吧!

  

  看 userid 为4的 李四就给我找出来了 其他的操作符 你们就自己试试吧。

  注意:在后面的 select 查询语句中  我的 from 后面 直接使用的 是 tb_user  这个数据表 就不会再写  中文的语法  表名称 ’了

 4.AND 和 OR的用法

  我先解释 两者的区别,我们要知其原而知其所以原。

  AND 是相当于 与  的意思   及要同时满足    例如    Chris AND  Zhangsan ;  显然就是说两个人,

  OR    是相当于 或 的意思   例如   Chris OR Zhangsan;  显示是说 这两个人的某一个,

  那么既然理解了意思,那么我们就来开始实战吧

  那么在开始之前呢? 我们需要插入一下数据 脚本如下

  

INSERT INTO `tb_user` VALUES ('5', 'chris', '13414247346');

  现在我们的表呢 数据是这样的 如下:

  

  一共五条数据,我们就开始使用 AND  和 OR 吧

  示例6:【AND的使用】 找出 username 为 chris 并且 userid 等于5  而且 phone 等于 13414247346

  SQL 语句 : select  *  from tb_user where userid = '5'  AND phone ='13414247346';

  

  示例7:【OR的使用】 我们呢 找出user 为 chris的 或者 username 为 FuchengGuo的 显然 没有这个人 FuchengGuo 那么 我猜结果只会查出 chris,我们验证一下吧。

  SQL语句: select * from tb_user where username = 'chris' or username = 'FunchengGuo' ;

  

  果然是和我们猜想的一样,而且没有报错,那么证明我们的是对的。

 5.查询之 排序 ORDER BY 语句

  排序,没错就是排序,废话不多说,直接实战

  示例8:通过usernmae 字段的 26个字母排序 查询结果

  SQL语句:select * from tb_user order by username;

  

  默认是 顺时针的 也就是说 默认的情况   是26个字母 从头开始排序   当然数字 也是一样的    顺时针还有一种写法  如下

  SQL语句 :  select * from tb_user order by username asc ; 

  发现没有 asc 没错 这就是顺时针 也可以不写 默认就是 asc的

  那么逆时针 用什么呢?  用   desc

  SQL语句: select * from tb_user  order by username desc;

  我们试试逆时针吧

  示例:9

  

  成功!

  有些同学说 我靠 我要玩些骚点的  我要 userid 也排序 而且是顺时针  username 是逆时针

  克里斯告诉你,没有问题,no problem! 开始吧。

  SQL语句: select * from tb_user  order by username desc , userid asc;     ps:不清楚为什么 mysql 试过几次 没有效果 只有第一个 username 能出效果  我是mysql 5.5  若是你们是更高的版本可以的话 请告诉一下克里斯

  待续。。

 6.insert into 语句

  两种写法,

  第一种写法:

  SQL语句: insert into 表名字 value (插入值1,插入值2...);

  第二种写法:

  SQL语句: insert into 表名字(列名称1,列名称2...) value (插入值1,插入值2...);

  那么我们试一下吧 我就直接贴代码了

  示例:10

    示例的SQL语句:insert into tb_user value('6' , 'InsertTest' , '18692177909' );

  

  ps:没错,克里斯用的是第一种方式,第二种,你自己试试吧

  延伸思考

  请同学们想一下,我们插入,例如我们这里的表是3列,我们能插入两列,或者大于三列的值嘛?

  克里斯觉得不行 口说无凭,咋们就试试吧。

  示例:11

  

  结论!:果然不行,给你抱一个错误 Column count doesn't match value count at row 1    什么意思呢?  列数与第1行的值计数不匹配  所以说不行,如果这个人没有电话呢? 那我们给它一个 nul

  倘若你只要查两条数据,第三列不插入,那好,请按照下面的写法

  SQL语句:insert into tb_user value (' 7 ',' InsertTest ',' ');

  

  成功!

  7.Update 语句 修改

    顾名思义就是更新,修改的意思。那么我们如何修改呢?

  语法:

  update 表名称 set 列名称 = 新值 where 列名称 = 某值   

  让我们开始吧,我们将 userid = ' 4 ' 的 lisi 改名成  updateTest

  示例:12  sql语句:update tb_user set username = 'updateTest' where  userid = '4';

  

  仔细观察  matched  :1   Changed :1   什么意思呢?    匹配到了一个字段 并且 受影响 行为 1 , 也就是成功了

  8.Delete 语句  删除

  字面意思已经很明确了 没错就是删除,

  语法: delete from 表名称  where 列名字 = ' 指定值 ' ;

  让我们开始实战吧。我们数据表有两个 chris 我们删除一个 chris  并且删除 userid = ' 1 '的 Chris

  示例:13

  sql语句 : delete from tb_user  where userid = ' 1' and username =' chris ';

  

  看起来是成功了,但是有人不信克里斯,咋办 ,查一下呗  SQL语句: select * from tb_user ;

  

  果然给删除了

  待续。。 下次就进入高级部分啦,请同学们好好消化一下。。。。 明天见。 2019-01-23

  

数据库基础——跟着【克里斯学SQL】哈哈。的更多相关文章

  1. 02_数据库基础之(二)sql语句入门

    1.基本增删改查操作 #一. 数据类型 常用的3中 # .字符串 例如:你的名字 我是中国人 在数据库中要使用 ‘’引起来 '苹果手机' # .整数类型 例如: 你的年龄 ,办公室的人数 个 ,直接使 ...

  2. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...

  3. 数据库基础SQL知识面试题一

    数据库基础SQL知识面试题一 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 如标题所示,本篇博客主要介绍基础知识的面试题.大家可以用来测试面试者的技术水平,由于个人水平所限,难免 ...

  4. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  5. 数据库操作----找了MySQL和SQL Sever两个的基础语句

    这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...

  6. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  7. SQL 必知必会-- 第1课:数据库基础和什么是SQL

    第1课 了解SQL 1 1.1 数据库基础 11.2 什么是SQL 61.3 动手实践 71.4 小结 8 第一课主要是一些概念,具体笔记如下: 1,数据库(database):保存有组织的数据的容器 ...

  8. Sql Server数据库基础

    --------------------------------------第一章  Sql Server数据库基础------------------------------------------ ...

  9. 数据库基础SQL知识面试题二

    数据库基础SQL知识面试题二 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...

随机推荐

  1. 在react中实现打印功能

    最近项目中,前端采用react+antd+dva的组合,已经完成了后头管理类系统产品的更新迭代工作. 今天有一个新需求,需要在后台管理系统中实现点击打印完成指定页面的打印功能. 之前也没接触过,只知道 ...

  2. c#实现用SQL池(多线程),定时批量执行SQL语句 【转】

    在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题, ...

  3. SQL Server含逗号分隔的数据匹配维表

    日常有时候导出数据需求时,数据列会遇到带有分隔符的ID,但又需要匹配维表(如下图所示)将ID变成名称. 这种情况可以采用“分隔-匹配-合并”的方法 具体代码为: -- 准备工作1:创建事实表数据 CR ...

  4. EOS开发环境搭建

    EOS开发环境搭建   在上一篇文章<扒一扒EOS的前世今生>中,我们已经了解了EOS以及他的创始人Daniel Larimer的故事,本次为大家带来的是关于EOS开发环境搭建的内容.首先 ...

  5. NTFS权限和共享权限的区别

    共享权限 共享权限有三种:完全控制.更改.读取 共持本地安全性.换句话说,他在同一台计算机上以不同用户名登录,对硬盘上同一文件夹可以有不同的访问权限. 注意:NTFS权限对从网络访问和本机登录的用户都 ...

  6. Win7下emacs简单配置

    ;;win7下.emacs在C:\Users\用户名\AppData\Roaming目录下 在.emacs文件中添加 ;; cancel welcome page取消欢迎界面(setq inhibit ...

  7. GL-inet路由器当主控制作WIFI视频小车

    以前也用单片机做过WIFI小车,但是单片机没有自带WIFI,仍然需要用到小路由器作为图传和控制信号传输.既然肯定要用到路由器,那何不直接用路由器作为主控呢,这样就省掉了单片机.这次作为主控的GL-in ...

  8. 在Bootstrap开发框架中使用Grid++报表

    之前在随笔<在Winform开发中使用Grid++报表>介绍了在Winform环境中使用Grid++报表控件,本篇随笔介绍在Bootstrap开发框架中使用Grid++报表,也就是Web环 ...

  9. php支持解密的加密算法示例

    其实只是对位运算符的一种简单的应用. <?php class Helper_Inpass{ private $keys='thisismytoken';//token function inpa ...

  10. 爬虫基础(五)-----scrapy框架简介

    ---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...