MySQL教程:数据库具体操作

news/2023/6/8 6:51:15

1. 连接数据库服务器

$ ./mysql -h host_name -u user_name -p

  • -h host_name(--host=host_name),连接的数据库主机名,如果在本地主机上则可省略。

  • -u user_name(--user=user_name),数据库用户名,在unix系统上,如果系统的登录名与数据用户名一样,则可省略。在windows系统中,可通过设置环境变量USER来给出数据库用户名,如set USER=username。

  • -p(--password),提供数据库用户密码,有该选项mysql就会提示你输入密码。输入的密码以星号显示,以确保安全。也可直接在-p后写上密码(-p和密码间不能有空格),但这不安全,不推荐。

连接成功后,mysql数据库服务器会显示一些欢迎信息。接着就可用mysql>use database_name命令打开指定的数据库。

  
$ ./mysql -h host_name -u user_name -p database_name命令可直接打开指定数据库。

 

 

2. 更新用户密码

mysql>update user set password=passowrd('your passowrd') where host='%';

刷新权限设置:mysql>flush privileges;

3. MySQL读取配置文件的顺序

my.cnf是MySQL数据库的配置文件,它存在多个地方,在/etc目录,数据目录和用户主目录都有。放在不同位置,里面的选项有不同的作用范围,下面是MySQL读取配置文件的顺序和作用。

mysql 读取配置文件的顺序: /etc/my.cnf Global options. DATADIR/my.cnf Server-specific options. defaults-extra-file The file specified with the --defaults-extra-file option. ~/.my.cnf User-specific options.

4. 重设置MySQL管理员密码的方法

有时我们会因为设置原因或时间长了忘记了数据库管理员的密码,使得我们被关在MySQL服务器外。MySQL服务器提供了一种方法可使我们在服务器上重设密码。在windows和linux/unix平台上操作稍有不同,下面分别介绍:

  • Linux/Unix平台下:

    1. 用 % kill -TERM PID关闭服务器,用-TERM信息可使服务器在关闭前把内存中的数据写入磁盘。如果服务器没有响应,我们可用% kill -9 PID来强制删除进程,但不建议这样做。这时内存中的数据不会写入磁盘,造成数据不完整。如果你是用mysql_safe脚本启动MySQL服务器的,这个脚本会监控服务器的运行情况并在它被终止时重启服务器,所以如需关闭服务器,要先终止该进程,然后再真正终止mysqld进程。

    2. 使用--skip-grant-tables参数启动MySQL Server,这时MySQL服务器将不使用权限表对连接操作进行验证。你就可在不提供root密码的情况下连接上服务器,并获得root的权限。

      % mysqld_safe --skip-grant-tables &
    3. 用以下命令登录服务器,并重设密码:

      % mysql -u root #不用密码就可连接到服务器 mysql> use mysql mysql> set password for 'root'@'localhost' = password('password');
    4. 关闭服务器,再用正常方式启动服务器。
  • windows平台下:

    1. 用管理员帐号登录服务器,关闭MySQL数据库服务器。

    2. 使用--skip-grant-tables参数启动服务器:

      c:\mysql\bin>mysqld-nt --skip-grant-tables
    3. 重新打开一个console窗口,用mysql命令登录服务器设置root的新密码:

      c:\mysql\bin>mysql mysql> use mysql mysql> set password for 'root'@'localhost' = password('password');
    4. 关闭服务器,再用正常方式启动服务器。

5. NULL值

NULL是空值,代表什么也没有。它不能与值进行比较操作和算术操作,也不能和NULL进行比较,因为两个空值比较是没有意义的。我们可用“is NULL” 或 “is not NULL”来判断是不空值。如:

mysql> select * from test where mytest is NULL; mysql> select * from test where mytest is not NULL;

在MySQL3.23以后的版本有一个新的比较操作符“<=>”,它可对NULL值进行相等比较。如:

mysql> select * from test where mytest <=> UNLL; mysql> select * from test where not (mytest <=>);

如果查询后排序中的数据中包含NULL,则从MySQL4.0.2开始,有NULL值的数据行总是出现在查询结果的开头,即使设置的desc参数。4.0.2以前版本,如果设置了asc,则出在查询结果的开头,如果设置了desc,则出现在查询结果的结尾。

6. 使用SQL变量

MySQL3.23.6以后的版本允许通过查询结果来设置变量,设置好的变量可在以后使用。变量用@name定义,赋值方式用@name:=value。下面是一个在查询语句中进行赋值和使用变量的例子:

mysql> select @name:=id from test where mytest="test"; mysql> select * from test where mytest=@name

7. 改变默认提示符

用mysql登录进数据库后,MySQL数据的默认提示符是“mysql”,我们可设置它根据用户打开的数据库名而变化,如:

mysql>prompt \d>\_ none>use test test>use mysql mysql>

prompt为设置命令,\d代表当前数据库,\_代表一个空格。

8. 非优化的全数据表DELETE操作

为了清空数据表,又需知道删除的行数和保持AUTO_INCREMENT序列的值,需用以下的删除语句:

# delete from table_name where 1;

9. MySQL事务处理示例

MYSQL高级特性 -- 事务处理下面以两个银行账户之间的转账为例子进行演示。要使用MySQL中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表。

CREATE TABLE account ( account_id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, balance DOUBLE ) TYPE = InnoDB; 要在事务表上使用事务处理,必须要首先关闭自动提交: SET AUTOCOMMIT = 0; 事务处理以BEGIN命令开始: BEGIN; 现在mysql客户处在于服务器相关的事物上下文中。任何对事务表所做的改变在提交之前不会成为永久性的改变。 UPDATE ACCOUNT SET balance = 50.25 WHERE account_id = 1; UPDATE ACCOUNT SET balance = 100.25 WHERE account_id = 2; 在做出所有的改变之后,使用COMMIT命令完成事务处理: COMMIT; 当然,事务处理的真正优点是在执行第二条语句发生错误时体现出来的,若在提交前终止整个事务,可以进行回滚操作: ROLLBACK; 下面是另一个例子,通过MYSQL直接进行数学运算: SELECT @first := balance FROM account WHERE account_id = 1; SELECT @second := balance FROM account WHERE account_id = 2; UPDATE account SET balance = @first - 25.00 WHERE account_id = 1; UPDATE account SET balance = @second + 25.00 WHERE account_id = 2; 除了COMMIT命令外,下列命令也会自动结束当前事务: ALTER TABLE BEGIN CREATE INDEX DROP DATABASE DROP TABLE LOCK TABLES RENAME TABLE TRUNCATE UNLOCK TABLES


本文由网页教学网(http://www.webjx.com)整理发布!转载请注明出处,谢谢!

转载于:https://www.cnblogs.com/fjping0606/p/4417631.html


https://dhexx.cn/news/show-17477.html

相关文章

Kubuntu 14.10 mentohust 配置libpcap 锐捷校园网登录总结

首先需要说明&#xff0c;mentohust 和锐捷一样&#xff0c;都依赖 libpcap 这个函数库。 而配置libpcap 前&#xff0c;需要安装GCC、GNU M4 、 flex 、bison&#xff0c;不然就会报错 (以下均以 root 身份执行&#xff09; 1.安装GCCUbuntu默认安装了GCC&#xff0c;但是按照…

使用Jenkins配置自动化构建

持续集成是个简单重复劳动&#xff0c;人来操作费时费力&#xff0c;使用自动化构建工具完成是最好不过的了。 为了实现这个要求&#xff0c;我选择了Jenkins。从 http://mirrors.jenkins-ci.org/windows/latest下载windows下的最新安装版jenkins。&#xff08;如果不 能安装&a…

EF(EntityFramework) Migrations 迁移

1、开启程序包管理器控制台 2.安装EntityFrameworkPM> Install-Package EntityFramework3.启用迁移PM> Enable-Migrations –EnableAutomaticMigrations遇到的问题&#xff1a;4.创建迁移点PM> Add-Migration InitialCreate5.执行迁移点更新PM> Update-Database –…

springboot整合rabbitmq 消费者Consumer 手动进行ack确认

ack指Acknowledge&#xff0c;确认。 表示消费端收到消息后的确认方式。 有三种确认方式&#xff1a; 自动确认&#xff1a;acknowledge"none" 手动确认&#xff1a;acknowledge"manual" 根据异常情况确认&#xff1a;acknowledge"auto"&#xf…

LRU缓存实现(Java)

LRU Cache的LinkedHashMap实现LRU Cache的链表HashMap实现LinkedHashMap的FIFO实现调用示例LRU是Least Recently Used 的缩写&#xff0c;翻译过来就是“最近最少使用”&#xff0c;LRU缓存就是使用这种原理实现&#xff0c;简单的说就是缓存一定量的数据&#xff0c;当超过设定…

springboot整合rabbitmq 消费者Consumer限流

场景&#xff1a;请求瞬间增多&#xff0c;每秒5000个请求&#xff0c;防止A系统挂掉 注意&#xff1a;一定要开启手动ack确认 1 application.yml配置文件 server:port: 8021 spring:#给项目来个名字application:name: rabbitmq-test#配置rabbitMq 服务器rabbitmq:host: 127.0…

Android 图标右上角添加数字提醒

方法一&#xff1a;使用开源项目ViewBadger&#xff0c;github上的地址&#xff1a;https://github.com/jgilfelt/android-viewbadger 效果如图所示&#xff1a;[java] view plaincopy<TextView android:id"id/tv1" android:layout_width"wr…

springboot整合rabbitmq 设置消息过期时间TTL

主要有2种方式&#xff0c;如果同时指定了Message TTL和Queue TTL&#xff0c;则优先较小的那一个&#xff1a; 指定一条消息的过期时间。 给队列设置消息过期时间&#xff0c;队列中的所有消息都有同样的过期时间。 队列设置的方式 import org.springframework.amqp.core.B…

.net 实现 URL重写,伪静态(方法一)

一&#xff0c;获得Mircosoft URLRewriter.dll(注意&#xff1a;此dll文件大小约为20KB&#xff0c;网上有8Kb的是不完整的文件&#xff0c;会报错) 二&#xff0c;在项目中该dll文件&#xff1a;添加引用&#xff08;可以直接拷贝放入Bin文件夹即可&#xff09; 三&#xff0c…

rabbitmq死信队列 用rabbitmq web控制台创建交换机,队列,绑定关系,发送TTL超时消息 来做演示

死信队列&#xff1a;没有被及时消费的消息存放的队列&#xff0c;消息没有被及时消费有以下几点原因&#xff1a; a.消息被拒绝&#xff08;basic.reject/ basic.nack&#xff09;并且不再重新投递 requeuefalse &#xff08;演示链接&#xff09;https://blog.csdn.net/qq_41…