zoukankan      html  css  js  c++  java
  • mysql 基础sql语句

    1、mysqladmin语句:

    mysqladmin version    # 查看mysql版本

    mysqladmin -u root -p原密码 password '新密码'      # 更改root用户密码

    mysqladmin -uroot -p ping    # 查看数据库是否可用

    mysqlshow -uroot -p              # 显示服务器上的所有数据库

    mysqladmin -uroot -p create my_test    # 创建数据库 my_test   

    mysqladmin -uroot -p drop my_test      # 删除数据库 my_test

    mysqlshow -uroot -p my_test              # 显示数据库my_test下有些什么表

    mysqlshow -uroot -p my_test -v          # 统计my_test 下数据库表列的汇总

    mysqlshow -uroot -p my_test -v -v      # 统计my_test 下数据库表的列数和行数

     


    2、用户登陆相关语句

    mysql> mysql -u用户名 -p密码 -h服务器地址  -P端口号  -D数据库名       # 登陆远程服务器

    mysql> mysql -u用户名 -p密码       # 登陆本地服务器


    3、用户、密码相关语句

    mysql>select  user();      #查看当前登陆账户

    mysql>create user 用户名@主机地址 IDENTIFIED BY "密码";         # 创建用户语法格式
    mysql>create user 用户名@192.168.1.1 IDENTIFIED BY "密码";    # 只允许192.168.1.1主机远程连接本服务器
    mysql>create user 用户名@192.168.1.% IDENTIFIED BY "密码";   # 允许192.168.1.X的任意地址连接本服务器
    mysql>create user 用户名@% IDENTIFIED BY "密码";                    # %表示所有主机都可以连接本服务器
    注意:上述创建好账户后,是不能直接登录的,需要给账户关联数据库,然后给对应的数据库分配权限后才能登录。

    mysql>show grants for 用户名@主机地址;                 # 查看用户权限

    mysql>grant 权限 on 数据库.表 to 用户@主机地址;    # 给用户分配权限语法

    语法解析:
    # 权限:select、insert、update、delete、all(所有权限)
    # 数据库.表 如果是*.*表示所有数据库所有表,一般不会这么设置,可以根据需求自行设置。

    # 用户名@主机地址:指定用户可以从那台主机登陆数据库,语法规则与创建用户一样。如下:

    • 用户名@192.168.1.1        # 只允许192.168.1.1主机远程连接本服务器
    • 用户名@192.168.1.%       # 允许192.168.1.X的任意地址连接本服务器
    • 用户名@%                       # %表示所有主机都可以连接本服务器

     


    grant 不单单只是给用户赋值权限,如果输入的用户不存在会创建一个用户。
    mysql>grant select on 数据库.表 to 用户@主机地址 identified by "密码" ;     # 下面使用grant创建用户和分配密码

    mysql>flush privileges;    # 对用户权限进行操作后,需要更新权限设置否则不生效

    mysql> set pasword = password("密码")                                      # 修改当前用户密码

    mysql>set password for 用户名@主机地址 = password("密码")    # 使用管理员用户修改其它用户密码

    忘记root密码

    net stop mysql            # 停止mysql服务
    mysqld -nt --skip-grant-tables    # 跳过权限表

    以管理员身份重新启动一个cmd命令窗口,输入:mysql -uroot -p,Enter进入数据库。

    select host,user,password from mysql.user;     # 即可查看到用户和密码
    修改密码,在命令行下 依次 执行下面的语句
    mysql>use mysql
    mysql>update user set password=password("new_pass") where user="root";
    mysql>flush privileges;    # 更新权限设置
    mysql>exit
    重新启动MYSQL,输入密码登录即可。
    net start mysql
    mysql -uroot -p

    删除用户

    mysql> drop user 用户名@主机地址 ;

    delete from user where user='用户名' and host='localhost';

    两者区别:drop不仅会将user表中的数据删除,还会删除其他权限表的内容。而delete只删除user表中的内容,所以使用delete删除用户后需要执行FLUSH PRIVILEGES刷新权限,否则下次使用create语句创建用户时会报错。


    4、数据库相关操作

    增:create database 数据库;
    删:drop database 数据库;
    改:alter database 数据库 字符集;
    查:show databases;
      show create database 数据库;


    5、数据库中表相关操作

    增:create table 表名(字段 数据类型 约束条件,...);
    删:delete from 表名;  # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
      truncate 表名;        # 数据量大,删除速度比上一条快,且直接从零开始。
    改:alter table 表名 modify 字段 数据类型 约束条件;
      alter table 表名 change 字段 新字段名 数据类型 约束条件;
      alter table 表名 add 字段 数据类型 约束条件 first: # 添加新字段并放在表的第一个位置
      after table 表名 add 字段 数据类型 约束条件 after 字段; # 新增字段,放在某一字段的前面
      after table 表名 rename 新表名;
    查:show tables;
      select * ftom 表名;
      select distinct 字段名 from 表;               # distinct关键字表示去掉该字段的重复值
      select 字段*12 from 表;                       # select在查询字段时可以对字段进行简单的四则运算
      select concat("自定义字符",字段,"自定义字符") from 表名;
      select concat("自定义字符",字段,"自定义字符") as 显示名 from 表名;
      select concat_ws('自定义字符',字段1,字段2,...) from 表名;                # 将字段和字段用自定义字符进行分隔
      select concat_ws('自定义字符',字段1,字段2,...) as 显示名 from 表名; # 将字段和字段用自定义字符进行分隔
      select *,(case when 条件 then 执行字段 when 条件 then 执行字段 else 执行字段 end) from 表名;
      desc 表名;                        # 显示表结构
      show create table 表名;   # 显示表结构

     


    6、数据库中表字段相关操作

    增:insert into 表名 (字段) values(数据,...);
    删:delete from 表名 where 字段=数值;
    改:update 表名 set 字段=新值 where 字段=旧值;
    查:select * from 表名;
      select 字段,字段,... from 表名;

     


    七、补充

    当我们给一个数据库授权用户后,在远程连接数据库报ERROR 1045 (28000): Access denied错误时。

    • 登录数据库mysql,删除user表中user列为空格的行:
    • delete from user where user=' ';
    • flush privileges;

     重新登陆即可。

  • 相关阅读:
    树链剖分 (模板) 洛谷3384
    ST表 (模板) 洛谷3865
    IOI 2005 River (洛谷 3354)
    IOI 2005 River (洛谷 3354)
    poj1094 Sorting It All Out
    poj1094 Sorting It All Out
    spfa(模板)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    洛谷1850(NOIp2016) 换教室——期望dp
  • 原文地址:https://www.cnblogs.com/caesar-id/p/10650868.html
Copyright © 2011-2022 走看看