Code前端首页关于Code前端联系我们

Mysql数据库经验,mysql数据库经验

terry 2年前 (2023-09-30) 阅读数 44 #Mysql
文章标签 Mysql

本文内容:

  • 1.MySQL添加列、编辑列、删除列
  • 2.关于MySQL数据库的索引你了解多少?
  • 3. 如何在gt100效果器中将P组音色应用到U组

MySQL 添加列、编辑列、删除列

ALTER

TABLE:添加、修改、删除表列、约束和其他表定义。

显示列:desc

表名;

编辑表名:alter

table

t_book

rename

rename

rename

rename 重命名

重命名”表的名称

列的名称;

编辑名称mysql:

alter

table

bbb

alter

nnnnnnnhhhint;

编辑列名 SQLServer: exec

sp_rename't_student.name','nn','column';

编辑列名 Oracle: lter

♹ column

nnnnn

to

hh

int;

编辑列属性:更改

表名称

varchar (22) ;

sp_rename: SQLServer

内置存储过程用于修改表定义。

mysql编辑和删除数据记录

Mysql数据库相信很多人都接触过。在使用mysql数据库的时候,有些人想要删除或者编辑mysql数据库中的一些记录。

相信很多人都接触过mysql数据库。在使用mysql数据库的时候,有些人想要删除或者编辑mysql数据库中的一些记录。 DELETE

和 UPDATE

语句允许我们执行此操作。

编辑更新记录

UPDATE

tbl_name

SET

要更改的列

WHERE

要更新的记录

♹该子句是可选的,因此如果未指定,表中的每条记录都将被更新。

例如,在pets表中,我们注意到宠物Whistler的性别没有被指定,所以我们可以修改这条记录如下:

mysql

update

pet

set

sex='f'

其中

name="

Whistler";

使用删除命令删除记录

DELETE

表达式的形式如下:❀ FROM

tbl_name

WHERE

要删除的记录

WHERE

子句确定应删除哪些记录。它是可选的,但如果不选择,所有记录将被删除。这意味着最简单的

DELETE

语句也是最危险的。

此查询会清除表中的所有内容。当心!

如果要删除特定记录,请使用

WHERE

子句选择要删除的记录。这类似于

SELECT

子句中的

WHERE

子句。

mysql

delete

from

pet from

pet;

MySQL数据库索引你了解多少

MySQL 索引类型有:

(1) 常规索引

这是最简单的索引,没有任何限制。创建方法有以下几种:

◆创建索引

CREATE INDEX indexName ON mytable(username(length));如果是CHAR或VARCHAR类型,则长度可能小于字段的实际长度;如果是BLOB和TEXT类型,则必须指定长度,下同。

◆编辑表的结构

ALTER mytable ADD INDEX [indexName] ON (username(length))

◆创建表时直接指定

CREATE TABLE mytable(NUCH ID, INT INT 16 ) NOT NULL, INDEX [索引名称] (用户名(长度)) );目录删除语法:

DROP INDEX [indexName] ON mytable;

(2)唯一索引

与之前的常规索引类似,只不过索引列的值必须是唯一的,但允许空值。在复合索引的情况下,列值的组合必须是唯一的。它有以下创建方法:

◆创建索引

CREATE YOUR UNIQUE INDEX indexName to own table(username(length))

◆编辑表结构

ALTER mytable ADD UNIQUE [ONdexusername length] ))

◆建表时直接指定

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );

(3 ) 主键索引

是一种特殊的唯一索引,不允许为空值。通常,主键索引是在创建表的同时创建的:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );当然,你也可以使用ALTER命令。请记住:一张表只能有一个主键。

(4) 复合索引

要比较单列索引和复合索引,请在表中添加几个字段:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL , city VARCHAR (50) NOT NULL,age INT NOT NULL );为了提高MySQL的效率,需要考虑创建串联索引。这意味着将姓名、城市、年龄构建到索引中:

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);创建表时,用户名的长度为16,这里我们使用10。这是因为通常情况下名称的长度不会超过10,这样可以加快索引查询速度,减小索引文件的大​​小,提高性能INSERT的更新速度。

如果你为username、city、age创建单列索引,让表有3个单列索引,那么查询性能就会和上面提到的组合索引有很大区别,比我们的组合索引要小很多。 。虽然目前有三个索引,但MySQL只能使用单列索引,它认为这是最高效的。

建立这样一个串联索引,实际上相当于建立了以下三个串联索引:

用户名、城市、年龄用户名、城市用户名 为什么没有城市、年龄这样的串联索引呢?这是MySQL复合索引的“左前缀”的结果。一个简单的想法是仅从左侧开始组合。包含这三列的查询不使用该连接索引,但以下 SQL 使用该连接索引:

SELECT * FROM mytable WHREE username="admin" AND city="Zhengzhou" SELECT * FROM mytable WHREE username="admin "以下均不使用:

SELECT * FROM mytable WHREE Age=20 AND city="郑州" SELECT * FROM mytable WHREE city="郑州"

(5)索引时机

一般情况下,WHERE 和JOIN列是要建立索引的,但也不完全如此,因为MySQL只对=、=、、=、BETWEEN、IN以及有时LIKE使用索引。示例:

SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city='郑州' 目前需要索引城市和年龄,因为 mytable-表 username 也出现在 JOIN 子句中并且必须建立索引。

我刚才提到只有某些LIKE时间需要索引。因为MySQL在执行以通配符%和_开头的查询时不使用索引。例如,以下语句使用索引:

SELECT * FROM mytable WHERE username like'admin%',但以下语句不使用索引:

SELECT * FROM mytable WHERE Name like '%admin' 因此,使用LIKE命令时应注意上述差异。

(六)索引的缺点

上面已经提到了使用索引的优点,但是过度使用索引会导致误用。因此,索引也有一些缺点:

◆虽然索引极大地提高了查询的速度,但是它也降低了表的更新速度,比如表中的INSERT、UPDATE和DELETE。因为在更新表时,MySQL不仅需要保存数据,还需要保存索引文件。

◆创建目录文件会占用磁盘空间。通常,这个问题并不严重,但如果在一个大表上创建许多合并索引,索引文件就会快速增长。

索引只是提高效率的因素之一。如果你的MySQL中有大量的数据表,你需要花时间研究和构建最好的索引或者优化你的查询语句。

(7)使用索引的注意事项

使用索引有一些技巧和注意事项如下:

◆索引不包含NULL值的列

只要列包含NULL值​​未纳入索引。只要复合索引的一列包含 NULL 值,该列对于该复合索引就无效。因此,我们在设计数据库时,一定不能允许字段的默认值为NULL。

◆使用短索引

来索引列表并指定前缀长度(如果可能)。例如,如果您有一个 CHAR(255) 列,并且大多数值在前 10 或 20 个字符内都是唯一的,则不要对整个列建立索引。短索引不仅可以提高查询速度,还可以节省磁盘空间和 I/O 操作。

◆对索引列进行排序

MySQL查询只使用一个索引,因此如果where子句中已经使用了索引,则排序中的列不会使用索引。因此,当数据库默认排序能够满足您的要求时,不要使用排序函数;尽量不要对多列进行排序。如果有必要,最好在这些列上创建复合索引。

◆相似表达式操作

一般情况下不推荐相似操作。如果非要用的话,用起来也是个问题。就像“%aaa%”不使用索引,但像“aaa%”一样。

◆不要使用列

select * from users where YEAR(adddate)2007;对每一行都起作用,导致索引失败并进行全表扫描,所以我们可以将其更改为

从添加日期 2007-01-01 的用户中选择 *;

◆如何在gt100效果器中使用p组音对u组进行无NOT IN功能和操作

?从核心模式到用户模式

登录。它应该像这样工作:

- 向 iptables 注册一个名为 ULOG 的对象

- 如果该对象被命中:

- 使用 netlink 多播功能发送数据包

- 立即返回 NF_CONTINUE

With在新的 ipt_ULOG 0.8 中,我们可以收集用户空间中的数据包并将它们小批量(1-50)发送到用户空间。这减少了

昂贵的上下文切换的数量。

多个日志守护进程可以监听一个netlink多播地址。

当我们将iptables与LOG一起使用时,它总是感觉有点混乱,因为它拥有所有这些,但我们只需要其中的一部分就够了,从众多的LOG中提取有用的记录并有效地组织它们需要耗费大量的脑力。如果你可以将所有这些记录存储在数据库中那就很容易了,所以检查 iptables 文档,我发现了 ULOG,一个强大的工具。以下是我在安装和使用过程中的一些经验。希望能给有需要的兄弟带来安慰,并以此为起点!

ULOG可以在用户空间存储相关的报文信息。该信息和整个数据包通过 netlink 套接字作为多播发送。它们被一个或多个用户空间进程接受。也就是说,ULOG是迄今为止iptables和Netfilter下最成熟、最完善的日志工具。它包括许多更好的工具来保存包。这个目标可能是我们将数据存储在MySQL或者其他数据库中。这样可以很容易地搜索特定的包或组记录。

ULOG通过iptables直接将记录写入mysql等数据库,性能更好。

1。条件:如果内核版本=2.4.18-pre8,则内核已经支持ULOG。通常 /lib/modules/kernel version/kernel/net/ipv4/netfilter/

.o 有 ipt_ULOG 这意味着你不需要重新编译内核。如果没有,则需要重新编译内核。内核版本必须高于2.4.18-pre8

在内核设置中选择ULOG,然后重新编译/kernel/net/ipv4/netfilter目录即可。

2.4内核使用make module SUBDIRS=net/ipv4/netfilter,

2.6 make ./net/ipv4/netfilter,如果不清楚,可以在保存内核的目录下使用make --help查看相关说明。

只编译相应的模块。无需重新编译内核,省时省力。

2。 ulogd源码可以在这里找到,Srpm包也可以在这里找到

然后:

tar -zxvf ulogd-1.23.tar.bz2

cd ulogd-1.23。 /configure --help

如果你想让它支持Mysql或pgsql、sqlite3等,可以添加一个可选参数--with-mysql=path或--with-pgsql=path,需要mysql-devel, pgsql -devel package,

使用rpm -ql mysql-devel,看看在什么路径,然后添加到最后,比如我的系统是/usr/include,所以是:--with-mysql=/usr/ include

./configure --with-mysql=/usr/include

如果有错误,请阅读错误消息,包装丢失的消息,然后就可以了。

make

make install

默认安装路径为/usr/local/

安装过程至此完成,下一步就是具体使用它的功能了。

3。 1、创建一个后面要用到的mysql数据库:

以下是mysql数据库功能。添加注释是为了让不懂mysql的兄弟也能理解; †

#以上是ulogd数据库的创建、选择和添加,访问权限赋予用户ulog_user,ulog_user只能从本机登录。密码是:ulog_passwd

mysqlquit

然后我们需要将内置的ulogd表输入到mysql中。该表位于 /doc 目录中,是用于创建 ulogd 内置 ulog 表的标准 sql 文件:

cd ulogd-1.23/doc

#cat mysql.table|mysql -D ulogd -u ulogd_user - p

然后输入密码ulog_passwd,这样如果没有出错的话,就建好了。如果出现错误,请查看错误信息并找出原因;

查看建表是否成功:

#mysql -u root

mysqluse ulogd;

mysqlshowtables;

查看结果,是否存在名为ulog的表。如果是这样,那就成功了。

4。接下来编辑ulogd配置文件:

如果决定支持mysql等参数,必须先编辑ulog配置文件才能使用相应的功能,

vi /etc/ulogd.conf conf

将以下段落编辑为您在 ./configure 文件中指定的参数。我决定支持mysql如下:

#输出插件。

插件=“@libdir@/ulogd_LOGEMU.so”

#plugin="@libdir@/ulogd_OPRINT.so"

#plugin="@libdir@/ulogd_MYSQL.so"

#plugin="@libdir@/ulogd_PGSQL.so"

#plugin="@ libdir@/ulogd_SQLITE3.so"

#plugin="@libdir@/ulogd_PCAP.so"

编辑为:

# 输出插件。

#plugin="@libdir@/ulogd_LOGEMU.so" #注释掉这一行

#plugin="@libdir@/ulogd_OPRINT.so"

plugin="@libdir@/ulogd_MYSQL.so" 获取mysql用作输出插件

#plugin="@libdir@ /ulogd_PGSQL.so"

#plugin="@libdir@/ulogd_SQLITE3.so"

#plugin="@libdir@/ulogd_PCAP" .so "

还需要编辑一些mysql参数:表名、密码、用户名、数据库名、登录服务器;

[MYSQL]

table="ulog"

pass="更改为一致使用上面设置的参数:

[MYSQL]

table="ulog"

pass="ulog_passwd"

user="ulog_user"

db="ulogd" ❀ host="localhost"

如果您喜欢其他参数,请相应修改它们:

好的,ulogd 现在已经完成了,

5。接下来我们具体使用功能:

首先启用ulogd进程:

ulogd -d

也可以将ulogd-1.23目录下的ulogd.init复制到/etc/init.d/ulogd中,并对 ulogd -path 进行必要的更改,chkconfig --level 235 ulogd 已打开,

service ulogd 启动。

然后在iptables中加上对应的对数;

有四个可用参数:

1.--ulog-nlgroup

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-nlgroup 2

指定发送到哪个netlink组数据包,如--ulog-nlgroup就有有2个netlink组,总共32个,简单编号为1-32。默认值为 1。

2.--ulog-prefix

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-prefix "SSH 连接尝试:"

指定前缀分隔记录数据以方便获取各种信息。用法与LOG前缀相同,只是长度可以为32个字符。

3.--ulog-cprange

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-cprange 100

指定每个数据包转发到“用户模式下的 ULOG 代理” " 发送的字节数如--ulog-cprange 100,

表示将整个数据包的前100个字节复制到用户空间并存储,其中包含数据包头和数据包的一些启动数据。默认值为 0,这意味着复制整个包,无论它有多大。

4.--ulog-qthreshold

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-qthreshold 10

告诉 ULOG 在将数据发送到用户空间进行日志记录之前等待。内核中收集的数据包数量,例如 --ulog-qthreshold 10。

这意味着首先在内核中收集 10 个数据包,然后发送到用户空间。它们被认为是相同的网络链路数据,仅由几个部分组成。

默认为1,这是向后兼容的,因为以前的版本无法处理分段数据

当使用ULOG时,如果数据包命中,则必须记录,mysql有相应的记录。数据库 ulogd。这里不得不提一下它的缺点。当我查看记录时,发现注册的IP地址是一个无符号整数,这意味着如果你想自己转换,

先将其转换为十六进制,然后将其他数字转换为十进制。这根本不直观。我不知道我是否可以编辑它兄弟你知道

自己编辑哈哈可以通过登录mysql数据库查看保存的数据,mysql的前端工具有很多。

这些工具一起使用比较方便,比如phpMyAdmin等,这部分内容不在这里

关注:

我想发在这里了。 。 。 。 。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门