MySQL 是一种流行的关系型数据库管理体系 (RDBMS),它被广泛用于各种规模的应用程序和网站开发中。MySQL 提供了高性能、可靠性和易用性,同时具有开源的上风,因此备受开发者和企业的青睐。是一种开放源代码的关系型数据库管理体系
MySQL数据库体系利用最常用的数据库管理语言–布局化查询语言(SQL)举行数据库管理。
下面是 MySQL 的一些重要特性和详解:
开源性:MySQL 是开源的,可以免费利用,并且其源代码可以被任何人检察、修改和分发。这使得 MySQL 成为了众多开发者和组织的首选数据库办理方案之一。
varchar代表的是可变长度的字符串。
d. 主键约束:primary key
唯一性约束:unique
非空约束:not null
e.关键字是:insert into(增加)
给某几列插入数据:insert into 表名(列1,列2,列3…) values(值1,值2,值3…);
给所有列插入数据:insert into 表名values(值1,值2,值3…); 有多少列就写多少个值
一次性插入多行数据: insert into 表名values(值1,值2,值3…), (值1,值2,值3…), (值1,值2,值3…)…
f.语法:关键字update(修改)
update 表名 set 列名1=值1,列名2=值2…[where条件];
如果没有带条件,那么就是把这一列的值都修改了。
g. delete from 表名 where 条件
select * from 表名----------------------------------------------->查询所有信息
select列1,列2…from 表名--------------------------------->查询某几列的信息
h.模糊查询利用like关键字
like可以举行模糊查询,在like子句中可以利用或者%作为占位符。只能代表一个字符,而%可以代表任意个字符。
like ‘李_’ :名字中必须是两个字,而且是姓李的。
like ‘李%’ :名字中姓李的学生,李字后可以有1个或任意个字符。
like ‘%四’ :名字中以四末端的。
like ‘%王%’ :只要名称中包含这个字就可以。
3、in和between… and…有什么区别
in:是在给定的几个值之间查询。
between… and:取介于两个值之间的数据,是在一个范围内查询。相称于where xxx>a and xxx<b;
4.排序查询
语法布局:select * from 表名 [where 条件] order by 列名 asc/desc,列名 asc/desc …
5.聚合函数
sum(字段名); 查询某一列数据总和
count(字段名),统计数量
max(字段名),计算最大值
min(字段名),计算最小值
avg(字段名),计算匀称值
6.分组查询的语法布局:group by 字段名
创建用户
create user wateruser
identified by itcast
default tablespace waterboss
给用户赋权
grant dba to wateruser
创建表
CREATE TABLE 表名称(
字段名 范例(长度) primary key,
字段名 范例(长度),
…
);
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有利用索引,那么仍然利用表级锁
mysql在innodb存储引擎的行级锁的环境下才支持变乱。 字段加索引
Alter table 表名 index (字段名)
利用alter table语句来为表中的字段添加索引的基本语法是:
ALTER TABLE <表名> ADD INDEX (<字段>); 查询版本信息
SELECT version();
java.util.Date和java.sql.Date有什么区别
java.util.Date包含日期和时间,而java.sql.Date只包含日期信息,而没有具体的时间信息。如果你想把时间信息存储在数据库里,可以思量利用Timestamp或者DateTime字段。
怎样把图片或者原始数据插入到数据库中
可以利用BLOB范例将图片或者原始的二进制数据存储到数据库里。
MySQL下varchar范例最大长度是多少
65535 行列转换
sum(case c2 when ‘B1’ then C3 else 0 end) AS B1
例:
第一种:
SELECT NAME 姓名,
SUM(IF(SUBJECT=‘数学’,score,‘缺考’))数学,
SUM(IF(SUBJECT=‘语文’,score,‘缺考’))语文,
SUM(IF(SUBJECT=‘英语’,score,‘缺考’))英语
FROM stuscore GROUP BY NAME;
第二种:
SELECT NAME AS 姓名,
SUM( CASE SUBJECT WHEN ‘语文’ THEN score ELSE 0 END) AS 语文,
SUM( CASE SUBJECT WHEN ‘数学’ THEN score ELSE 0 END) AS 数学,
SUM( CASE SUBJECT WHEN ‘英语’ THEN score ELSE 0 END) AS 英语
FROM stuscore
GROUP BY NAME; mysql 常用的日期函数
剖析:日期函数太多了,这里应该问的是常用的体系日期函数和关键字。
参考答案:mysql 常用的体系日期函数有now(),sysdate(),curdate()函数
Current_timestamp 关键字。
利用自增ID和UUID作为主键有什么不同
剖析:这个题出现频率不高,主要结合应用考察,一般首先要分析说明一下乱码产生的缘故起因是在应用端还是在服务端,然后再办理。
参考答案:1.在安装数据库的过程中将默认的拉丁文–>GBK。
2.在创建数据库时设置选择GBK 或者gb2312。
3.Mysql 安装目录下的my.ini 文件,将 “default-character-set=xxxxx” 中的 xxxxx 改成GBK 或者gb2312。
4.Mysql 安装目录下的\data\databasename(数据库名)\db.opt 文件打开
default-character-set=gbk default-collation=gbk_chinese_ci; 如果上面不是 gbk 和gbk_chinese_ci 则改成支持中文的GBK 或者gb2312。
5.进入 Mysql 的 dos 下令下:进入某数据库后 show full columns from tablename ;检察数据范例,如果不是支持中文的范例则执行 alter table tablename convert to character set gbk 。
6. 在创建数据库时( 用下令创建时)create database databasename
CHARACTER SET gbk(gb2312);
Mysql 有哪些常用下令
像一些数据库毗连、授权、DML 操作、数据库备份都可以通过下令完成,这里写一些常用的。
参考答案:1、毗连数据库mysql -h 主机地点 -u 用户名 -p 用户密码
2、快捷操作show databses:列出所有的数据库;use databasesname:打开此数据库;show tables:检察当前数据库下面的所有表,然后可以对表举行DML 操作;describe table_name:检察某表下的字段和范例的定义。
3 、在use databasename 状态下导入表SOURCE d:/mysql.sql; 退出下令quit;或者exit
too many connection 的错误怎样办理
解析:这是一个实际应用问题,这类的问题无论面试频率是否高,都会在现实工作中遇到,所以建议必须掌握;这里报 too many connection 说明我们的连接数不够用,连接占用时间太长没有释放;解决方法一般是增大连接数,优化查询语句提高查询效率,使用一些缓存策略,对数据库进行集群部署,最不济时可以考虑写文件。
复制代码
参考答案:造成too many connection 的直接缘故起因是毗连数被占满了,办理这种非常可以通过下面几种方案办理。
这个常常会被问到,出现频率较高,至少能回答一个三五条,下面列出来一些常用到的优化方法,大家可以选择了解。
1.对查询举行优化,应尽量克制全表扫描,首先应思量在 where 及 order by 涉及的列上创建索引。
2.应尽量克制在 where 子句中利用!=或<>操作符,否则将引擎放弃利用索引而举行全表扫描。
3.应尽量克制在 where 子句中对字段举行 null 值判定,否则将导致引擎放弃利用索引而举行全表扫描。
4.应尽量克制在 where 子句中利用 or 来毗连条件,否则将导致引擎放弃利用索引而举行全表扫描,
5. %xx%和%xx 查询也将导致全表扫描,若要提高服从,可以思量全文检索或者xx%模糊查询。
6.in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了
7.如果在 where 子句中利用参数,也会导致全表扫描。因为SQL 只有在运行时才会剖析局部变量,但优化程序不能将访问计划的选择推迟到运行时; 它必须在编译时举行选择。
8.应尽量克制在 where 子句中对字段举行表达式操作,这将导致引擎放弃利用索引而举行全表扫描。
9.应尽量克制在where 子句中对字段举行函数操作,这将导致引擎放弃利用索引而举行全表扫描。
10.不要在 where 子句中的“=”左边举行函数、算术运算或其他表达式运算,否则体系将可能无法准确利用索引。
11.在利用索引字段作为条件时,如果该索引是复合索引,那么必须利用到该索引中的第一个字段作为条件时才华保证体系利用该索引,否则该索引将不会被利用,并且应尽可能的让字段顺序与索引顺序雷划一。
12.索引并不是越多越好,索引固然可以提高相应的 select 的服从,但同时也低落了 insert 及 update 的服从,因为 insert 或 update 时有可能会重修索引,所以怎样建索引必要慎重思量,视具体环境而定。一个表的索引数最好不要超过 6 个,若太多则应思量一些不常利用到的列上建的索引是否有必要。
13.尽量利用数字型字段,若只含数值信息的字段尽量不要计划为字符型,这会低落查询和毗连的性能,并会增加存储开销。这是因为引擎在处理查询和毗连时会逐个比较字符串中每一个字符,而对于数字型而言只必要比较一次就够了。
14.尽可能的利用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索服从显然要高些。
15.任何地方都不要利用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
16.尽量利用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。
17.在新建临时表时,如果一次性插入数据量很大,那么可以利用 select into 代替 create table,克制造成大量 log ,以提高速度;如果数据量不大,为了缓和体系表的资源,应先create table,然后insert。
18.尽量克制向客户端返回大数据量,若数据量过大,应该思量相应需求是否公道。
mysql 默认毗连超时办理
通过下令修改’wait_timeout’的值(必要重启mysql 服务器): use mysqlname; – 在mysql 库下。
SHOW GLOBAL VARIABLES LIKE ‘wait_timeout’; – 检察当前值。
SET GLOBAL wait_timeout = 1814400; – 修改(这里为21 天单元秒)。说明:也可以通过修改mysql 配置文件举行修改(windows-my.ini;linux-my.cnf )
WHERE 和 ON的区别
在 SQL 中,WHERE 和 ON 是两个用于筛选数据的关键字,它们在不同的场景下有着不同的作用和用法。
WHERE 关键字:
WHERE 关键字通常用于 SELECT、UPDATE、DELETE 等语句中,用于指定条件来筛选出符合条件的记录。
在 SELECT 语句中,WHERE 子句用于过滤行,只返回满足条件的行。比方:SELECT * FROM table_name WHERE condition;
在 UPDATE 语句中,WHERE 子句用于指定要更新的记录的条件。比方:UPDATE table_name SET column1 = value1 WHERE condition;
在 DELETE 语句中,WHERE 子句用于指定要删除的记录的条件。比方:DELETE FROM table_name WHERE condition;
ON 关键字:
ON 关键字通常用于 JOIN 操作中,用于指定两个表之间的毗连条件。
在 JOIN 操作中,ON 关键字指定了两个表举行毗连时的条件,即毗连表的字段之间的关联关系。比方:SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
ON 关键字用于指定毗连条件,而 WHERE 关键字用于指定过滤条件。在某些环境下,如果将毗连条件放在 WHERE 子句中,也可以实现雷同的效果,但是为了代码清晰和语义明白,发起在 JOIN 操作中利用 ON 关键字来指定毗连条件。
总的来说,WHERE 关键字用于筛选行数据,而 ON 关键字用于指定毗连条件。在编写 SQL 查询语句时,必要根据具体的需求和语境来选择合适的关键字来实现所需的功能。