MySQL

MySQL教程

MySQL命令提示符之简单语句

语句打错可以输入\c来结束输入
  1. 连接MySQL

    打开DOS窗口:windows键+r 后输入 cmd 打开命令提示符

    利用Cd命令 打开安装目录具体到\bin文件夹

    操作实例:

    比如我的bin文件夹的地址为

    C:\Program Files\MySQL\MySQL Server 8.0\bin
    

    接下来在DOS窗口中输入

    cd C:\Program Files\MySQL\MySQL Server 8.0\bin 
    

    然后回车

    连接本机上的MySQL

    mysql -u username -p password (注意:u与username,p与 password 之间可以不用加空格,可在 -p后接着输入 password,也可在 -p 后回车,在输入 password,推荐后者安全性高 密码会有密文保护)
    

    操作实例

    假设本地上的MySQL 的用户名为 :root 密码为:123456,输入以下命令

    mysql -uroot -p123456
    

    连接远程主机上的MySQL

     mysql -h IP -u username -p password
    

    操作实例

    假设远程主机的IP为:110.110.110.110,用户名为 :root 密码为:123456,则输入以下命令

    mysql -h 110.110.110.110 -u root -p 123456(注意:h与IP地址,u与username,p与 password 之间可以不用加空格,可在 -p后接着输入 password,也可在 -p 后回车,在输入 password,推荐后者安全性高 密码会有密文保护)
    
  2. 密码操作

    首先在DOS下进入目录···\bin

    mysqladmin -u usernam -p 旧密码 -password 新密码
    

    有两种情况:

    1.有用户名但是没有设置密码,想给用户加上一个密码

    比如我的用户名为 root ,想添加的密码为 123456

    mysqladmin -u root -password 123456  (因为该用户没有旧密码,所以可以省略 -p 旧密码 一项)
    

    2.有用户名有密码,想给用户换一个密码

    将上面设置的密码123456 改成 root

    mysqladmin -u root -p 123456 password root
    
  3. 新增用户

    grant on命令用于增加新用户并控制其权限。

    grant operator[具体操作,多个操作用,隔开] on 数据库.* to 用户名@登录主机 identified by “密码”;
    
    operator操作名:[select](查询) [insert](插入) [updata](修改) [delete](删除)
    
    
    1. 增加一个用户test1,密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MySQL,然后键入以下命令:
     grant select,insert,update,delete on *.* to [email=test1@'']test1@''[/email]
     Identified by “abc”;
    

    但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法如下。

    1. 增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MySQL主机上的web页来访问了。
    grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;
    

    如果你不想test2有密码,可以再打一个命令将密码消掉。

     grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;  
    
  4. 查看所有的库

    show databases;
    
  5. 选择某一个库

    use 库名;
    
  6. 查看某一个库下面所有的表

    /*前提:在选完库后才能进行此操作*/
    show tables;
    
  7. 创建一个库

    create database 库名 [charset 编码名称]; []内的内容为选填
    
  8. 删除一个库

    drop database 库名;
    
  9. 删除一个表

    drop table 表名;
    
  10. 声明字符集

    set names 字符集名字;
    
  11. 建表语句

    建表的过程就是一个声明字段的过程
    
    create table + 表名(
    
    )
    /*例如:*/
    create table class(
    	id   int primary key auto_increment,
    	sname   varchar(10)   not null default '',
    	gender  char(1)       not null default '',
    	company varchar(20)   not null default '',
    	salary  decimal(6,2)  not null default 0.00,
    	fanbu   smallint   not null default 0
    )engine myisam charset utf8;
    
  12. 查看表的结构

    desc 表名;
    
  13. 给表改个名

    rename table old to newname;
    
  14. 清空表的数据

    truncate 表名;
    
  15. delete与truncate是有区别的

    truncate:
    相当于删除原来的表再建一张与之前同样结构的表,操作后得到一张全新表。
    delete:
    在当前表下的行的层面上进行操作,
    如果决定全部清空,选用 truncate 操作速度更快 
    
  16. 表的增删改查

    假设我们现在有一个表结构,接下来我们就针对此表进行实例讲解

    表名为class

    id sname gender company salary
    1 张三 百度 8888
    2 李四 腾讯 10000
    3 王五 阿里 11000

    增操作之 insert 语法

    增操作(insert):
    口诀:往哪张表,表的那几列,增添什么值。(注意:列与值一一对应)
    insert into 表的名字 (每个列的名称用,隔开) values (和前面括号中的列的个数和属性相对应,每个值用,隔开);
    
    插入多个行信息的操作为:
    insert into 表的名字 (···) values (···),(···),(···),···,···;
    

    实例:

    在表名为class的表中增加2个人刘备,关羽的信息,由于两人工作的保密制度不要求增加公司名字

    insert into class(id,sname,gender,salary) values(4,'刘备','男',8800),(5,'关羽','男',8000);
    

    插入完之后

    id sname gender company salary
    1 张三 百度 8888
    2 李四 腾讯 10000
    3 王五 阿里 11000
    4 刘备 8800
    关羽 8000

    删操作之 delete 语法

    删除操作(delete):
    口诀:删那张表,删表的那几行(注意:删除操作的基本单位为 '行')
    delete from 表名 where +[表达式];(注意表达式为真就执行操作,否则不执行)
    如果不加 where 语句来指定某一行,比如:
    delete from class;
    则表名为class下的所有行全被删除
    

    实例操作:

    1.假如我们不喜欢王五这个人去世了(难过),我们想要删除他的信息。

    我们来分析一下王五的信息中有那些属性是其他人没有的,比如id,sanme 还有salary,我们可以利用这些独 一无二的特性来指定删除王五的信息,利用where来指定

    where + 表达式
    所以删除王五的指令为:
    delete from class where id = 3;
    

    2.假如我们想要同时删除刚才添加的两个人的信息

    delete from class where id >=3 and id <= 4;
    

    (注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)

    id sname gender company salary
    1 张三 百度 8888
    2 李四 腾讯 10000

    改操作之 update 语法

    改操作(update):
    口诀:改哪张表,表的那几行,改成什么值。(注意:列与值一一对应)
    update 表的名字 set 列的名称 = 改的内容 where 表达式为真就执行,可以利用这个特性来更改改某一行;
    
    更改某一行多个列的操作:
    update 表的名字 set 列的名称 = 改的内容,set 列的名称 = 改的内容,set 列的名称 = 改的内容,··· where 表达式为真就执行,可以利用这个特性来更改改某一行;
    
    如果没有 where 语句来特指哪一行,如:
    update class set gender = '男';
    则会把当前表里的 gender 这一列的内容全部变为 男
    

    实例操作:

    因为张三去了一趟泰国,回来后换了个名字‘Linda’,并且换了一家公司'星火娱乐',所以我想更改张三的信息。利用唯一性使用where语句来指定行

    update class set sanme = 'Linda',set gender = '女',set company = '星火娱乐' where id = 1;
    

    (注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)

    id sname gender company salary
    1 Linda 百度 8888
    2 李四 腾讯 10000

    查操作之 select 语法

    查操作 (select):
    口诀:查那张表,查表的那几列,查表的第几行(注意第几行用 where 语句来实现)
    语法: select 列名称(有多个用,隔开) from 表名 where + 表达式;(注意:表达式一定要是能够筛选出你所需要的行) 
    比如你想查找 李四的信息 要给出一个能够代表李四这一行的表达式。
    
    查询一个表的所有行所有列:
    select * from 表名;
    
    查询部分行的所有列:
    select * from 表名 where + 表达式;
    
    查询部分列的所有行的信息:
    select 列名(有多个用,隔开) from 表名;
    
    查询部分列的部分行的信息:
    select 列名(有多个用,隔开) from 表名 where + 表达式;
    
    (注意:如果查询后显示乱码,利用 set nams + 字节编码; [字节编码可以右键查看dos窗口的的编码情况])
    

    实例操作

    查询李四的sname,company,salary这三列的信息。

    select sname,company,salary from class where id =2;
    
    sname company salary
    李四 腾讯 10000

    (注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)

  17. tee 命令

    tee + 地址

    保存操作过的指令

  18. MySQL三大列类型

    数值型

    ​ 整型

    tinyint

    占据空间 1 字节

    存储范围 -128 - 127 /0 - 255

    samllint

    占据空间 2 字节

    存储范围 -32768 -- 32767 / 0 -- 65535

    mediumint

    占据空间 3 字节

    存储范围 -8388608 --- 8388607 /0 -- 16777215

    int

    占据空间 4 字节

    存储范围 -2147483648 --- 2147483647 / 0--4294967295

    bigint

    占据空间 8 字节

    存储范围 -92233720368547755808 --- 92233720368547755807

    ​ 0----18446744073709551615

    (注意不加声明时,默认有符号)

    unsigned (无符号)

    int 类型 声明 参数

    M()unsigned zerofill (注意M与zerofill 同时出现才有意义)

    zerofill 默认 unsigned

    bigint(2) zerofill not full default 0

    ​ 浮点型/定点型

    float(M,D)浮点

    decimal(M,D) 定点

    M叫做‘精度’----->小数的总位数

    D是’标度‘代表小数点右边的位数

    unsigned 声明无符号

    float 能存 10^38 10^-38 如果M<=24 占4个字节 ,否则占8字节

    定点是把整数和小数分开来存,比float准确

    字符型

    char

    char(6) 定长字符串

    存储时长度不够 空格来补,取出时再把右侧空格删掉,如果你输入的时候右侧本身就有空格,会发生丢失。

    varchar 变长字符串

    存储时会在前面加入字节来存储字符串长度

    类型 宽度 可存字节 实际字符 实占空间 利用率 查询速度
    char M M i M i/M<=100%
    varchar M M i i字符+(1-2)字节 i/(i+[1-2])<100% 比char慢

    char(M) varchar(M)限制的是字符长度,限制的不是字节

    char(2)charset utf8 可以保存2个utf8字符,比如‘中国’

    text

    文本类型,可以存比较大的文本段,搜索速度稍慢,因此,如果不是特别大的内容·建议用char,或是varchar来代替 text 不用加默认值(加了也没用)

    blob

    二进制类型,用来存储图像,音频等二进制信息

    意义:二进制,0-255都有可能出现,blob在于防止因为字符集的问题导致信息丢失,比如一张图片中有0xFF字节这个ascll字符集认为非法,在入库的时候被过滤了

    日期时间类

    类型 说明 标准格式 范围 所占空间
    date 日期 yyyy-mm-dd 1000-01-01--->9999-12-31 3字节
    time 时间 HH:MM:SS -838:59:59 ---- 838 :59:59 3字节
    datetime 日期时间 yy-mm-dd HH:MM:SS 1000-01-01 00:00:00 到 9999:12:31 23:59:59 8字节
    year 年份类型 YYYY 和 YY 1901-2155 1字节
    timestamp 自动取出系统当前时间 default:current_timestamp
  19. 连接字符串

    concat
    

只是个人看视频的笔记,不喜勿碰,若有错误还请指出

posted @ 2019-03-01 21:46  流~川  阅读(111)  评论(0编辑  收藏  举报