MySQL数据库操作及SQL语句笔记 --- 2018-11-07

果你在电脑上没安装可视化数据库操作,需要在cmd命令行输入命令操作数据库,那么可能会用以下命令

(1)连接数据库

    * 打开cmd窗口,使用命令,连接mysql数据库

    * 命令: mysql -u root -p 密码    -u username    -p  password       

(2)创建数据库

    * 语句: create database 数据库的名称;

    ** 示例:create database testdb1;

(3)查看所有的数据库

    * 语句:show databases;

(4)删除数据库

    * 语句:drop database 要删除的数据库的名称;

    ** 示例: drop database testdb1;

(5)切换数据库

    * 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库

    * 语句:use 要切换的数据库的名称;

    ** 示例:use testdb2;

(6)查看数据库表的建表结构。

    show create database 表名;


下面是关于SQL语句的笔记

(1)创建数据库表

    * 语句 create table 表名称 (

        字段 类型,

        字段 类型

          )

    * 创建表 user,字段  id  username  password  sex

    create table user (

        id int,

        username varchar(40),

        password varchar(40),

        sex varchar(30)

    )

(2)mysql的数据类型

    字符串型

    VARCHAR、CHAR

    * 当创建表时候,使用字符串类型,name varchar(40),指定数据的长度

    * varchar和char的区别

    ** varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去  //a<5(a不能超过5)

    ** char的长度是固定的,比如 name char(5),存值 b,把b存进去,后面加很多空格  //b<5(b也不能超过5)

    大数据类型

    BLOB、TEXT

    * 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径

    数值型

    TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE

    * 对应java里面

    byte      short    int  long    float  double

    逻辑性

    BIT

    * 类似java里面的boolean

    日期型

    DATE:用于表示日期 1945-08-15

    TIME:用于表示时间 19:10:40

    下面的两个类型可以表示日期和时间

    DATETIME:手动添加时间到数据表里面

    TIMESTAMP:自动把时间添加到表里面

(3)查看表结构

    * 语句 desc 表名称;

    +----------+-------------+------+-----+---------+-------+

    | Field    | Type        | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id      | int(11)    | YES  |    | NULL    |      |

    | username | varchar(40) | YES  |    | NULL    |      |

    | password | varchar(40) | YES  |    | NULL    |      |

    | sex      | varchar(30) | YES  |    | NULL    |      |

    +----------+-------------+------+-----+---------+-------+

(4)mysql的约束有三种

    第一种,非空约束 not null

        * 表示数据不能为空

    第二种,唯一性约束 unique

        * 表中的记录不能重复的

    第三种,主键约束 primary key

        * 表示非空,唯一性

        * 自动增长 auto_increment

(5)创建带约束的表

    create table person (

        id int primary key ,

        username varchar(40) not null,

        sex varchar(20)

    )

    +----------+-------------+------+-----+---------+-------+

    | Field    | Type        | Null | Key | Default | Extra |

    +----------+-------------+------+-----+---------+-------+

    | id      | int(11)    | NO  | PRI | NULL    |      |

    | username | varchar(40) | NO  |    | NULL    |      |

    | sex      | varchar(20) | YES  |    | NULL    |      |

    +----------+-------------+------+-----+---------+-------+

(6)删除表

    * 语句 drop table 要删除表的名称;

(7)查看当前的数据库里面有哪些表

    * 语句 show tables;

使用sql对表中的记录进行操作(增删改查操作)

    (1)向表里面添加记录 insert

    * 语句 insert into 要添加的表名称 values(要添加的值);

    * 注意:当添加的字段的数据类型是int类型,直接写值

    如果添加的字段的类型是varchar类型和日期类型,使用单引号把值包起来

    * 例如:向user表里面添加记录

    insert into user values(1,'aaa','123456','nan');

    * 自动增长的效果

    ** 创建一个表

    create table stu (

        id int primary key atuo_increment,

        sname varchar(40)

    )

    insert into stu values(null,'aaa');

    (2)修改表里面的记录 update

    * 语句 update 表名称 set 要修改的字段的名称1=修改的值1,要修改的字段的名称2=修改的值2 where 条件

    * 例如:修改user表里面id=1的username修改为QQQ,修改password为999

    update user set username='QQQ',password='999' where id=1;

    (3)删除表里面的记录 delete

    * 语句 delete from 表名称 where 条件

    * 例如:删除user表里面id=1的记录

    delete from user where id=1;

    ** 不添加where条件,把表里面的所有的记录都删除

    (4)查询表中的记录 select

    * 语句 select 要查询的字段的名称 (*) from 表名称 where 条件

    * create table user (

        id int,

        username varchar(40),

        chinese int,

        english int

    )

    * insert into user values(1,'lucy',100,30);

    insert into user values(2,'mary',60,80);

    insert into user values(3,'jack',90,20);

    * 例如一:查询user表里面的所有的数据

    select * from user;

    * 例如二:查询user表里面用户名和语文成绩

    select username,chinese from user;

    * 例如三:查询user表里面id=2的数据

    select * from user where id=2;

    (4)别名

    * as 别名

    select username as u1,chinese as c1 from user;

    (5)distinct,去除表里面重复记录

    * 语句 select distinct * from 表名;

    (6)where子句

    一,运算符 < > >= <=

    * 例如:查询user表里面语文成绩大于60的所有的人员

    select * from user where chinese > 60;

    二,in:指定的数

    * 例如:查询user表里面英语成绩是80、90的人员的信息

    select * from user where english in (80,90);

    三,and:在where里面如果有多个条件,表示多个条件同时满足

    * 例如:查询user表里面语文成绩是100,并且英语成绩是30的人员的信息

    select * from user where chinese=100 and english=30; //对于同一个人的英语成绩及语文成绩同时满足

    四,得到区间范围的值

    * 例如:查询user表里面语文成绩在70-100之间的值

    写法一,select * from user where chinese >=70 and chinese <=100;

    写法二,select * from user where chinese between 70 and 100;

    五,like:模糊查询

    * 例如:查询user表里面username包含a的人员信息

    select * from user where username like '%a%';

    % :表示查询匹配 0-N个字符    _  表示匹配任意一个字符

    (7)查看当前的运行的数据库

    select database();

    (8)对表中查询的记录排序 order by

    * order by写在select语句的最后

    第一,升序 order by 要排序字段 asc(asc可以省略,默认的情况下就是升序)

    * 例如:对user表里面查询的数据,根据语文成绩进行升序排列

    select * from user order by chinese asc;

    第二,降序 order by 要排序字段 desc

    * 例如:对user表里面的英语成绩进行降序排列

    select * from user order by english desc;

8、聚集函数

    (1)使用提供一些函数,直接实现某些功能

    (2)常用的聚集函数

    第一,count()函数

    * 根据查询的结果,统计记录数

    * 写法 select count(*) from ...where....

    * 例如一;查询user表里面有多少条记录

    select count(*) from user;

    * 例如二:查询user表里面语文成绩大于60的人员有多少

    select count(*) from user where chinese>60;

    第二,sum()函数

    * 求和的函数

    * 写法 select sum(要进行求和字段) from ...where....

    * 例如一:得到user表里面的语文的总成绩

    select sum(chinese) from user;

    * 例如二:得到user表里面语文总成绩,英语的总成绩

    select sum(chinese),sum(english) from user;

    * 例如三:得到user表里面语文成绩的平均分(总的成绩/总的人数)

    select sum(chinese)/count(*) from user;

    第三,avg()函数

    * 计算的平均数的函数

    * 写法 select avg(要计算平均数的字段名称) from ...

    * 例如:得到user表里面语文成绩的平均分

    select avg(chinese) from user;

    第四,max()函数:计算最大值

    * 写法 select max(字段) from...

    第五,min()函数:计算最小值

    * 写法 select min(字段) from...

    * 例如:得到user表里面语文成绩的最高分数,英语的成绩最低分数

    select max(chinese),min(english) from user;

9、分组操作 

    分组使用 group by 根据分组的字段

    在分组的基础之上再进行条件的判断 having,后面可以写聚集函数

    (1)例如说明

    * 创建表 orders

    create table orders (

        id int,

        name varchar(40),

        price int

    )

    insert into orders values(1,'电视',2000); 

    insert into orders values(2,'电视',2000);

    insert into orders values(3,'苹果',10);

    insert into orders values(4,'手机',500);

    insert into orders values(5,'手机',500);

    insert into orders values(6,'鼠标',33);

    insert into orders values(7,'鼠标',33);

    (2)例如一:统计orders表里面每类商品的总的价格

    select name,sum(price) from orders group by name;

    (3)例如二:对商品进行分类,得到每类商品的总价格大于66的商品

    select name,sum(price) from orders where sum(price)>66 group by name;

    = 上面的语句在逻辑上没有问题,在语法上,where里面不能写聚集函数,报错

    正确的写法:

    select name,sum(price) from orders group by price having sum(price)>66;

mysql的关键字limit

    (1)limit关键字查询表中的某几条记录

    (2)limit关键字不是标准sql的关键字,只能在mysql数据库里面使用,实现分页的功能

    * 在oracle里面特有关键字 rownum

    * 在sqlserver里面特有关键字 top

    (3)使用limit查询前几条记录

    * 写法: limit 前几条记录  limit 3

    * 例如:查询user表里面前三条记录

    select * from user limit 3;

    select * from user limit 0,3;

    (4)使用limit查询第几条到第几条记录

    * 写法: limit 第一个参数,第二个参数

    ** 第一个参数开始的记录数的位置,从0开始的

    ** 第二个参数从开始的位置向后获取几条记录

    * 例如:查询user表里面第二条到第四条记录

    select * from user limit 1,3;


修改MySql数据库的的密码

(1)知道密码,修改密码

    第一,连接mysql数据库

    第二,切换数据库 mysql  use mysql

    第三,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';

    第四,重新启动mysql服务


忘记MySQL数据库密码操作

忘记密码,重置密码

    第一,把mysql的服务关闭                             

    第二,打开cmd窗口,输入命令 mysqld --skip-grant-tables(不要加分号) //skip:跳过  grant:权限 

    第三,再打开cmd窗口,连接数据库,不需要输入密码  mysql -u root

    第四,切换数据库 mysql  use mysql

    第五,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';

    第六,把两个cmd窗口都关闭,打开任务管理器,找到mysqld进程,结束

    第七,启动mysql服务

---------------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,150评论 0 33
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,772评论 5 116
  • 一件衣服最好的归宿,是遇见灵魂相似的身体。一颗大红柑也是。柑皮和普洱,谁是衣服,谁是身体,谁是灵魂,谁又成就...
    水墨含声阅读 251评论 0 1
  • 迷茫不安中总是要做出一些举动好像才能打破这些不安 2016年夏,18岁,我高中毕业了。距离大学开学还有10来天。我...
    青丝引阅读 683评论 2 3
  • 最初的面庞,辗转旧梦无常 韶华盛处,不知情长 转身间已天各一方 此去经年,多少生动的笑容,模糊成美好却冰凉的影像 ...
    弦音0011阅读 303评论 0 5