【mysql】mysql基础操作

来源:互联网 发布:人工智能修道士与野人 编辑:程序博客网 时间:2024/05/19 18:13

这篇也是大三时候写到个人博客的,搬运过来。

今天从图书馆借了《mysql必知必会》这本书,之前写网页的时候用到过mysql,惭愧的

是好久都没有碰数据库了,想把mysql的一些基本知识系统化的记录下来,也就是做个

笔记,能够随用随查。另外,因为插入图片加载比较慢,所以,我就只写语句+注释了。

一、使用mysql

至于使用之前的准备工作就不讲了,自己去查资料安装mysql就好了,很简单的。

mysql语句不区大小写,因为刚学时候比较习惯小写,所以文章中均用了小写。

对列名表名等小写,对关键字大写是比较标准的,便于调试。

show database; 显示当前用户所有的数据库名称。
use test;使用test数据库,执行成功会显示 test changed
show tables; 显示此数据库的列表信息。
show students from test;显示test数据库中students表的信息。 =describe students;
show status;用于显示广泛服务器信息
show create database和show creat table分别用来显示创建特定数据库或表的mysql语句
show errors和show warnings用来显示服务器错误或警告的消息。

更多show的语句请 自行 help show
二、检索数据

检索单个列:select name from students;从students表中检索所有人的姓名。
select后多个列名可用逗号隔开,最后一个不要加。
检索所有列用表示所有的。
对检索的信息中去重,比如有个products表中产品所有的供应商vend_id,
在你输入select vend_id from prodects;的时候,会出现所有产品的供应商,肯定有重复的。
这时候可以用distinct去重告诉mysql只返回不同的值。
select distinct vend_id from products;
x限制结果:limit
定义返回不多于五行: select name from students limit 5;
如果要检索下五行可以用limit定义开始的行数和要检索的行数:
select name from student limit 5,5;
特别注意:行0检索出来是第一行,而行一检索出来是第二行
在行数不够时会检索出它的最多行。
使用完全限定的表名:select students.name from test.student;
(假定students在test数据库中)

三、顺序检索数据

排序数据:order by 子句
SELECT name from students order by name;
在这里,order by后面也可以用非检索数据
按多个列排序 select id,price,name from products order by price name;
首先按价格排序,然后按名称排序。
指定排序方向:默认升序(ASC),降序用DESC
select id,price,name from products order by price DESC;
根据价格降序排列。
select id,price,name from products order by price DESC,name;
根据价格降序排列,然后再对产品名称排序。
配合limit和order by 可以找出一个列中最低值,比如查找最便宜的商品:
select id,price,name from products order by price DESC limit 1;

四、过滤数据

使用where子句:select name peice from products where price = 2.50
空值检查:where IS NULL
另外还有and、or 就是与、非了,不说了 浪费时间啊
有点打累了,一边看一边整理真浪费时间。还是这么基础都会的,真不知道我是为了啥。
IN指定条件范围:WHERE id IN (100,200)
NOT否定后面跟的关键字:NOT IN (100,200)
用通配符过滤:LIKE、%、_
WHERE name LIKE ‘ja%’ 找以ja开头的人名。ja区分大小写
通配符可以有多个,%ace%,a%b等。
在通配符通配的时候,尾空格可能会影响通配结果,
例如‘anvil ’在where name like %anvil 条件下就无法通配上
解决这个问题的方法就是用函数去掉首尾空格就好了。
另外还有下划线通配,下划线与百分号的区别是百分号可以通配若干字符而下划线只能通配单个字符
虽然通配符很有用也很好用,但是我们还是我们还是不要过度使用,因为他们搜索的很慢。
在使用通配符的时候尽量不要用在搜索模式的开始处,因为搜索的会很慢。另外注意位置一定要放对。
用正则表达式搜索数据:REGEXP
正则表达式的关键字REGEXP的用法和LIKE一致,但是REGEXP后面跟的是‘正则表达式语句’
关于各类正则表达式我就不总结了,随用随查吧,真心不喜欢总结那个。
总之就是REGEXP ‘’ 格式就是了,‘’中间根据需要写。>>>我好啰嗦啊。

五、创建计算字段

计算字段是什么呢,大概举个例子:
1.我的应用程序想要一个公司的地址和电话还有官网这三个在一起的字段
但是这三项是在三个列里面,我要把他们合在一起然后一起输出。
2.我需要把名字全部都按大写输出,但是数据库中的数据是大小写混写的。
3.需要根据表进行平均数、总数等计算
以上说到的这几点都需要把数据库中的数据重新进行格式化。这时候就需要计算字段了。
拼接字段:Concat()
把名称和城市拼接在一起。因为名称和城市是属于两个列的。

select Concat(name,’(’country,’)’) from products;
+————-+
|ACME(USA) |
+————-+
之前说的可以清除空格的可以使用RTrim()清除右面所有空格。
LTrim()去掉左面空格。Trim()去点两边空格。
使用别名:AS
我们新创建了列,但是它没有一个名字客户机无法使用,于是我们用AS为它取个名字。
select Concat(name,’(’country,’)’) AS newtitle from products;
执行算数计算:假如有个score的表,里面有Chinese和English两列成绩,我现在需要总分。
select Chinese,English,Chinese+English AS new_score from score;
计算字段大概就是这样,根据需要可以自己调整。

六、使用数据处理函数

之前我们提过的RTrim()就是属于函数来处理数据。
现在我们再来记录更多的函数。如果你用了函数,那么你要记得写注释哦,以便别人能读懂。
文本处理函数:

Left()返回串左边字符(右边Right())
Length()返回串的长度
Locate()找出串的一个子串
Lower()将串转换为小写
LTrim()去掉串左边的空格(右边RTrim)
Substring()返回字符串的字符
Upper()将串转换为大写
Soundex()返回串的soundex值
在这里要解释一下soundex是什么。
soundex是一个将任何文本串转换为描述其语音表示的字母数字模式算法。
单单这么说,我也是一头雾水,但是看了例子就明白了:
假如有个用户名字叫Lie但是当初记录的时候输入成了Lee,我们查找的肯定找不到。
怎么办呢,这时候就用到了Soundex()。
select name,age,number from customers where Soundex(name)=Soundex(’Lie’)
日期和时间处理函数:
AddDate() 增加一个日期(天/周等)
AddTime()增加一个时间(时/分等)
CurDate()返回当前日期
Date()返回日期时间的日期部分
DateDiff()计算两个日期之差
Date_Add()高度灵活的日期计算函数
Date_Format()返回一个格式化的日期或时间串
Day()返回一个日期的天数部分
DayOfWeek()对于一个日期,返回对应的星期几
Hour()返回一个时间的小时部分
Minute()返回一个时间的分钟部分
Mounth()返回一个日期的月份部分
Now()返回当前日期和时间
Second()返回一个时间的秒部分
Time()返回一个日期时间的时间部分
Year()返回一个日期的年份部分
数值处理函数
Abs()返回一个数的绝对值
Cos()返回一个角度的余弦
Exp()返回一个数的指数
Mod()返回除操作的余数
Pi()返回圆周率
Rand()返回一个随机数
Sin()返回一个角度的正弦
Sqrt()返回一个数的平方根
Tan()返回一个数的正切

第一部分先总结到这里吧,我觉得我总结的挺全面了,我是根据《mysql必知必会》这本书的章节来写的,有的合并到一个大段落里了,总之我这基本就是浓缩版,还有十几章,有时间再写吧,估计大概要再写两篇能写完吧。

0 0
原创粉丝点击